How Initial Screenings SHOULD Be Done
Published: 2020-10-24 01:47:03

Disclaimer: This post circulates around my experience with Cloudflare's initial screening process. I'm not affiliated with Cloudflare but I am an active applicant. 

# How It Works
After applying to Cloudflare for an entry-level engineering role, I received an email with two public repo links. The first was labeled as "general" and "required", the second was an optional challenge for applicants interested in systems engineering. 

The first task was about utilizing Cloudflare's platform and tools to make a serverless webapp that, according to specification, 1) fetches a blank static website, 2) rewrites the site's HTML, and 3) serves the modified site to the user.

The second, optional task was to make a cli tool that measures a website's speed in responding to requests **without** using any libraries to handle the HTTP request. 

# Why this is the best dang screening process I've seen
The initial reactions I got after explaining it to my friends were along the lines of *"What the heck?"* and *"That's way too much for a screening!"*. 

But what are our alternatives? Leetcode and hackerrank challenges? Whiteboarding? Portfolio projects? Keywords on a resume? Video-game style aptitude tests? **All of these metrics have their caveats**. Most of them don't have any direct translation to work that will actually be done at a particular company and if the person is a good fit for your projects. 

Cloudflare's approach does multiple things I haven't seen anywhere else. 
1. It tests a person's ability to understand and use their product
2. It tests a person's ability to read and utilize their documentation to replicate an actual use-case of their customers. 
3. It educates applicants on their products, bringing in more users to their platform, regardless of the applicants' results.
4. Because the general test is primarily about using their tools (with some JavaScript sprinkled in), it's fairly language agnostic.
5. **IT LEAVES APPLICANTS WITH A PORTFOLIO PROJECT!🤯** (two if you do both assignments)

KACHOW!💥 https://general-assignment.mperez.workers.dev/💥

When was the last time you left a screening challenge with something you can show off? I can't even show off my college assignments.

# But how does this measure their ability to invert a binary tree???

*It doesn't!* And how often have you actually had to do that for an application? Do you use recursion for the sake of using recursion or because it's actually the most feasible solution for you?

But it's a good point, how can you measure a person's fundamentals? That's where the second assignment comes in. 

# The second assignment
It involves creating a command line tool that lets you measure your site's performance (response times to HTTP requests). Here are some things you *could* gleam about a person's fundamentals with this kind of assessment:
1. Input streams (stdin, stdout, stderr)
2. web sockets
3. multithreading (if you want to make it fast)
4. data structures (storing and retrieving results)
5. algorithms (storing and retrieving results)
6. tooling (package managers and makefiles)
7. code hygiene

# Conclusion
Granted, making these types of great screening assignments isn't easy. They take time, thought, and effort. Kind of like writing good unit and integration tests. 

*Is this scalable?* Probably not as much as other methods, but even marketing has this type of approach. You can increase the size of your net, or you can raise the quality of those that make it even midway into your hiring funnel. You can even get useful feedback to improve your product or documentation (another possible assignment). 

All in all, this was the best screening challenge I've ever taken part in. I hope more companies do the same. While it may seem like a pain to develop these types of assessments, treat it like unit and integration tests for people looking to join your main branch. 

No matter the final result, applicants can walk away having learned something and with a shiny new project or two to help them with their job-hunt.

**If you know of any companies that screen this way, please mention them in the comments! Thanks!**

**Note:** Only the work of those that were issued the challenge will be considered. The assignments also appear to be seasonal so you will most likely receive a different challenge (another great feature for companies that take the time to do this, they're recyclable!).

**Note2:** The flaws of portfolio projects, in my opinion, is that unless two candidates did the same project you can't compare them. The assessors could value different things, making this a moving target. Finally, good projects are hard to come up with and take a lot of time; time you could be using to job hunt. This approach lets you do both at once.