Tech Hiring: The Hunt for Highly Technical Superhumans
The job search in tech equals an unpaid full-time job.
A few weeks ago I started the search for a new tech job. While reading through hundreds of job ads and going through several full interview processes, I noticed that finding a new job in tech wasn’t only extremely time-consuming — and almost impossible to do besides my regular job — it was also impossible to fulfill all the requirements tech companies are asking for. Interview processes are often unreasonable, unrealistic, demanding, and push you to your limits, leaving you completely drained, frustrated, and feeling exploited.
Whether you’re applying for a developer job or any other job in tech, the requirements are ridiculous. It starts with the super-intimidating job ads; it seems that most companies actually require you to be a highly technical superhuman, who has 100 skills on expert level and is able and willing to work “flexible hours” (recruiter-speak for being okay with working in the evenings and on the weekends), and perform 100 tasks at the same time. You need to be “exceptional”, have an “above average degree”, be “one of the most brilliant developers”, “highly technical”, a “code wizard”, “guru”, or “rockstar”. You need to know all the programming languages that exist.
Besides having the most excellent skills, working on open source projects or volunteering for the community are considered a must. It took me hundreds of hours of unpaid volunteer work to find my first tech job. Thanks to my volunteer work, I was offered a job two months ago. In my case all my hard work paid off, but that’s not the case for everyone. Friends told me that they are so tired of working for free and of everyone telling them that volunteering will eventually get them a job in tech. That’s a lie! Having the time to volunteer is a privilege not everyone has, and it doesn’t guarantee you a job.
If the requirements for a tech job don’t already scare you away and you decide to apply, you are usually asked to either provide a coding sample (when applying for a developer job) or to at least provide the link of your GitHub profile, which is a hard requirement in tech, along with your resume and cover letter. Even for non-coding jobs I was asked to provide my GitHub profile and had to answer coding related-questions during interviews. It’s almost like if you don’t have any coding skills, you are a second-class candidate no matter what kind of tech job you apply for. Further, finding job ads for junior developers is a hard task, and if you do find one, the requirements usually don’t differ much from those for a senior developer. Is there even room for average or normal people and beginners in tech? Tech companies teach you that being average and a beginner is not okay.
If the company likes your application, you will be invited to an interview with a recruiter first. I often experienced that the actual job ad was changed and 50 more requirements were added between me applying for the job and having my first interview without letting me know, which contributed to me feeling even more nervous and anxious before the interview. These interviews are then followed by a second interview with at least one of the company’s engineers when you are applying for a developer job. If the interview happens on site, this includes whiteboard coding or someone looking over your shoulder while you solve a coding task on a computer. If the interview happens online, this includes screen-sharing and you performing a task while the other person watches you code and asks you questions about your approach, etc. All of these are completely unrealistic situations, which you have to perform under time pressure, which are not typically part of a developer’s daily life and therefore don’t tell anything about their skills.
Either before or after these interviews, you are then asked to work on a task, which can be solving a coding problem, planning out a strategy for a product launch or coming up with a plan on how to grow the developer community. I’ve never been paid for any of these tasks and some of them were so complex that they took me several hours to complete. Often, I found out later that my work was actually used for something the company was currently building or working on. Instead of letting their employees, who get paid for their job, work on it, I was asked to work on it, unpaid. Why are retail or translation companies, which make significantly less money than tech companies, able to pay people for tasks they perform during the interview process, and tech companies, which make millions and billions of dollars, aren’t? Free labor is more than normal in tech — one of the wealthiest industries in the world.
You might think that two interviews and two tasks would tell a company enough about a candidate for them to decide whether they want to make the hire or not, but you are wrong. After the second interview there is most likely a third and fourth interview with the same questions, just different people, including more tasks, which you are either allowed to work on on your own or while someone watches you. Three plus interviews and three plus tasks to perform are pretty standard in tech, no matter which kind of job you are applying for. Friends told me that when the company decided to fly them out to one of their offices they had to go through up to eight interviews with different people in one day. When we add that up, going from reading a job ad for a tech job to completing the interview process, takes up to four plus full days or even more of unpaid time.
Considering applicants are typically applying to multiple jobs at once, the job search in tech equals an unpaid full-time job. Searching for a new job in tech while working full-time and volunteering in your free time, which you are almost forced to do, becomes impossible.
If you are lucky, you will receive a job offer after spending all that time on the interview process. Unfortunately, it’s pretty common that companies don’t actually intend to really hire you, which they don’t tell you until you ask about it, but want you to work for them as a contractor. When you ask why they will come up with several excuses. Basically, contracting is the tech code for “we don’t want to pay for your health insurance or any other benefits, we don’t want to give you paid vacation, we don’t want to take care of a visa for you, we don’t want to pay for you to get training or go to conferences, etc.”
These patterns ultimately discriminate against and marginalize underrepresented people, and affect diversity in tech. If companies don’t start breaking these patterns, tech jobs will continue to only be available to white cis dudes, who are privileged enough to work on open source projects for free, put time and money towards developing their skills in order to become the highly technical superhumans everyone is looking for, prepare for interviews and perform unpaid tasks, and go through these demanding and time-consuming hiring processes. The rest of us will be left behind with no chance of getting the jobs we are seeking and climbing up the ladder because of lack of privilege.
If we don’t want this to happen, companies need to start making serious changes. We are all just humans. Ask yourself if the requirements you list in your job ad are really necessary and if you could phrase it differently in order to sound encouraging and not intimidating. Do you want a rockstar with a rockstar attitude or do you want someone who can do their job well and is kind even if they aren’t a rockstar?
If you want your candidate to perform a task and you know that the task will take more than an hour to complete, pay them for it even if you don’t end up hiring them. If you want to be extra nice, pay your candidate for the task even if it only takes them a couple of minutes to do. Also, don’t ask your candidate to perform an endless number of tasks. Don’t expect your candidate to do a ton of unpaid open source or volunteer work. If they do, that’s nice. If they don’t that doesn’t mean they are lazy, not kind or not willing to learn — they just might not have the time and privilege to do so.
Don’t ask your candidate to do whiteboard coding or to perform tasks while other people watch them. This is not a realistic situation in a developer’s life and performing tasks under time pressure and while being watched tells nothing about a person’s skills. Instead, give them a task they can complete at home in their own time and give them enough time to do so.
Instead of having your candidate go through a marathon of interviews with different people, who will all ask the same questions, schedule a group interview. Be respectful of your candidate’s time.
Offer people the job you advertised if you decide to hire them. Actually really hire people, including benefits and everything. If you’re looking for a contractor, mention that in the job ad, not after the candidate went through a ton of interviews thinking it was for a full-time job.
Only by implementing these changes we will be able to make the tech industry more diverse, fair, and accessible, giving marginalized and underrepresented groups an equal chance to enter the tech industry, and to get better jobs and better pay.