How to hire great engineers
In this post we compare great software engineers to chefs, propose an efficient way of detecting them, and introduce the AutoIterative platform.
TL;DR: it is close to impossible to define what a great software engineer is. Yet to be successful, it is critical to identify and hire them. To meet this goal, many companies try to copy what famous companies do. In this post, we discuss why this is a dangerous idea and propose a better alternative.
The problem of defining what a great software engineer is
It is easy to see when someone is already a great software engineer. It is hard to define a set of predictors that will determine with certainty if someone will become one.
Large tech companies usually bet on a college degree with some trial and error on top of it. Rituals that work become guarded secrets and competitive advantages. Large companies are also more vocal and more followed. Parts of their hiring loops leak and become widely discussed, but those are only the details. The substance, like the body of the iceberg, remains hidden.
Small and medium companies want to get the best talent themselves to succeed. They want to reap the same promised benefits of those obscure interview rituals. Yet, they miss the context and rationales behind those rituals. Thus, they can not create a functional copy and start to imitate behavior, creating a cargo cult.
Such blind imitation is detrimental from various perspectives.
First, when choosing to imitate a hiring loop, they forego the opportunity to build one tailored to current needs. A large company has its current hiring loop because it works for its current state. When the large company was smaller, they had a different hiring loop, which worked for them then. Had they chose an imitation back then, maybe they would have failed to grow in the first place?
Second, they are doomed to build a dysfunctional copy because they miss the big picture. What data do small companies have about interviews in a large company? At best, it is their own experiences they had going through the job interview as a candidate. At worst, some blog posts and talks, that usually emphasize successful parts. But they miss training, interview goals, mistakes, conclusions, and corrective actions. In other words, everything that was behind the evolution of the hiring loop.
Third, imitating the candidate-facing process makes them compete for the same pool of candidates. And here large companies have several advantages. They know their hiring loops and can use them to their limits. They have well-defined hiring processes and able to adapt them based on data. They can afford to pay the rates of the big companies. And for some candidates, having a famous company in the CV is an interest as well.
Imitating what large companies do will not give you the same results. It can even be harmful. Chances are, your company does not need their processes in the first place. You might start needing them much later when your company is itself a large one, but not today. Today your company is in a different state, building a completely different culture.
You need to hire according to your current needs.
How to hire great engineers
Long story short, great engineers deliver. The same way that great cooks cook.
Here is how Aline Lerner of interviewing.io explains an interview process for a cook:
I was fascinated by how restaurants hire people. If you want to work at a restaurant, nobody gives a shit about your hopes and dreams. Nobody really looks at your résumé. Your résumés are meaningless in that industry as well. You just come in, and you bring your knives. In the morning, they show you how to set up your station and your prepping. That means you are making sauces. You are chopping vegetables. In some restaurants, they also put an onion in front of you, and they are, like, “Chop this onion,” and you are, like, “Okay.” Then you chop the onion.
Indie Hackers, podcast #099
Sounds like common sense, right? One of our engineers is a former chef, so we asked him about the equivalent of a whiteboard interview. His answer was the same:
Unless you are working for a high-high-end restaurant, there would not be any. Instead, they would put you to the test for like 2-3 days to see how you perform. Part of that evaluation is also to check how you interact with the team. You know, whether you share the same kind of jokes and values. The more natural it is to work with you, the better.
The restaurant industry figured the hiring way better than the software engineering industry! They test both professional skills and cultural alignment at the same time. First, they assess your ability to deliver. They do not ask you to explain your cooking process on a whiteboard. They do not require you to memorize the recipe details before the interview. They ask you to do it. Live. Second, they assess if you fit in, while you also decide for yourself if you would like to work there. It is a win-win, a hiring loop that suits both the company and the candidate.
Chopping the onion
What if we apply the same idea to software engineer hiring?
That would mean the candidates should be able to do actual work during the hiring process. The hiring loop will be a straightforward measure of the ability to deliver. Instead of producing sporadic good hires, it will be consistent in generating them. There will be no need for proxy metrics like whiteboarding or algorithmic interviews.
There are only a few companies that can give access to their production to a candidate. For the rest, this is impossible for either security, technical, or legal reasons. At the same time, they do not have the resources to maintain a dedicated hiring environment.
For those companies, we built the AutoIterative platform.
Introducing the AutoIterative platform (aka the marketing pitch)
We built the AutoIterative platform to be a software engineering kitchen. Candidates bring their knives and chop the onions as they would do during their day-to-day job. The platform measures the ability to deliver in its pure, distilled form.
AutoIterative platform at its core is a set of production challenges. When you invite the candidate to a challenge, we create all the necessary building blocks. Those consist of the git repo, CI infrastructure, and a dedicated production environment. They can use any technologies they prefer and can solve the challenge in any language.
The grading is automatic, and it measures the solution across different dimensions. Does it work per the challenge specifications? Does it account for the possible corner cases? What about the performance: can it scale with the increased load? You don’t need to invest a single engineering hour to get an idea if the solution works.
On top of that, all the candidates are anonymous by design. Keeping candidates incognito is a prerequisite for building completely blind hiring loops. It enables your engineers to review the submissions without unconscious biases.
Try the free, fully functional demo of the Autoiterative platform.
Discuss this post on HackerNews.