#20 Some notes on tech hiring
Tech hiring is still full of problems. Reluctant employees who do not want to interview. Senior applicants who hate Leetcode style questions and whiteboard exercises. Recruiters who cannot fill up positions faster as chosen candidates keep on rejecting their offers in favor of some other company. Companies struggling with diversity. There seems to be no one size fits all solution even for tech companies specifically. Here are some experiences from being present on both sides of the table.
The Process
Sourcing has to be active
The usual platforms for entry-level tech hiring include Angellist, Stack Overflow, LinkedIn, etc. This means a lot of resumes to wade through to schedule even a screening with a fraction of them. Unfortunately, a lot of really good talent is rarely actively looking for jobs on these platforms.
References have always been the best source of candidates for me personally. It helps if the person who is referring is someone you trust based on your past interactions or shared history. You would almost always know when someone has warmly referred to someone or has just sent a casual introduction email to be polite. The former means the candidate is possibly vetted while the later works almost like a job portal submission.
Sometimes companies also work with hiring consultants who are tasked with sourcing relevant candidates, taking a percentage of the annual salary on successful hire as a commission. This is probably not the route to take for the ‘best’ candidates.
One of the underrated ways to possibly hire better is to go after people writing code that you have used or liked in the past or just about anywhere on the internet, meet them over coffee/internet, describe what you are doing and find out if they would be interested in joining you. This is possible to do on GitHub and various other platforms. In case they are not looking for something, they could provide strong referrals or can be a prospect. For example, technical conferences like Pycon (if you are for example a predominantly python shop) are a good addon to actively source potential candidates as they provide a much better pool to choose from. Hackathons also serve as an additional sourcing medium, though it generally works for entry-level talent.
Screening is imperfect
Screening in tech especially in programming positions involves a round of problem-solving and writing code which is done primarily using one of the platforms like Codility, Hackerrank, etc. The process is automated with grading happening without much involvement from the companies tech staff.
There has been some controversy around the usage of standard data structure and algorithm problems in tech hiring. The argument against their use is that it promotes an entire industry working towards coaching people to ‘learn’ standard algorithmic questions to clear these interviews. Also, a lot of places do not usually involve writing code that involves complex algorithms, rather it is mostly around code quality and comfort with tech processes like code review, around build processes, versioning, and programming languages and frameworks. Such a group is usually also proponents of take-home tasks as interviews substitute that solve a real problem which is close to what is expected from the applicant when she joins the company.
It is rather difficult to create an automated grader that checks some of the things mentioned above. Automated graders for algorithmic problems are simpler. It is much easier to check if a bunch of numbers is sorted rather than to check if a food delivery app created by an applicant correctly shows a screen on a particular touch action (though of course possible.)
Take home tasks pose another problem. It puts people already working 12 hours per day at a disadvantage. This is especially true if the task chosen is fairly involved. This practice is proving to be discriminatory in several ways other than the time involved.
Tech hiring like some other creative fields has an added signal in the form of work that people create outside of their normal jobs. This allows candidates to demonstrate their ability in the form of historical work - e.g. pieces of code on GitHub, open-source contributions, etc. This surely helps in the process though sometimes recruiters become too rigid about the requirement of having GitHub contributions which become painful. This again puts people who have fulfilling work and with no time left for personal projects at a disadvantage.
Tech interviews for the anxious
Interviews are primarily geared strictly towards not accepting anyone who would not fit. What this means is that some perfectly suited candidates might be left out due to a bad day at the interviews. This is especially true for candidates who are skilled but fumble in interviews. A task-based interview is much suited for such candidates. Some candidates could probably write an entire compiler, a distributed key-value store with implementations of complex algorithms over a weekend but would still bomb a basic interview due to anxiety.
Most interviews that involve programming involve one or more rounds of whiteboard interviews where it is expected for the candidates to write code (or pseudocode). To remove any side-effects of a particular interviewer bias or just a bad interview, most companies have multiple rounds of tech interviews with different people, sometimes focusing on entirely different areas of work.
When culture fit is relegated to a buzzword
I once encountered a completely bad fit who I declined to hire despite having an impressive skillset. It was evident from the interview process with multiple colleagues giving the same feedback. (To be honest, no one has been able to top that behavior even outside interviews in real life yet.)
Culture fit is essentially evaluating that the person who is about to join can maintain a working relationship with the set of people you already have without needing additional resources and time in making the whole thing work.
On salaries and perks
A lot of people actively interviewing at large tech companies end up with multiple competing offers. With companies looking to fill their tech roles as soon as possible, negotiations are a common affair especially in mid to high-level roles. Switching jobs early in one’s career is even recommended to experience diverse work cultures and know what suits you.
A lot has been written and said about the value of equity while joining startups, especially early-stage ones. It is possible to not take a notable pay cut and still end up with significant equity if joining a startup. What might be difficult is finding an early-stage startup that might be a good fit for you.