When I signed on to join the team at Qualified last month, I ran the company through the diligence process that I use to assess opportunities at technology start-ups. Great product? Check. Strong growth trajectory? Check. Awesome customers? Check. A team I'm excited to be a part of? Check.
But beyond this list of important criteria my decision came down to a feeling that I couldnât shakeâone that my intuition told me was worth listening to above all else.
In 10 years of working with high growth technology start-ups, Iâve never come across a company thatâs too good at hiring software developers. Everybody struggles with finding great software engineers.
Iâve sat in countless board meetings, leadership off-sites, and all-hands gathering where the story is largely the sameââWe had 10+ open job reqs for development positions at the beginning of the year. Weâve filled three. One hire didnât work out.â Queue the thumb-twiddling and downward glances.
Expensive employee referral programs ensue. Contracted recruiters come in to help. But all the subsequent efforts aside the common denominator is clearâthereâs a shortage of software engineering talent and companies need to find better ways to identify, attract, and retain developers.
When I looked at the opportunity at Qualified the marketer in me saw a very real pain point and a market opportunity worth attacking; followed shortly thereafter by a lot of controversy surrounding the tools that are available to help companies assess software engineers.
The controversy surrounding coding skills tests
Any Google search or discussion with software engineers about the developer hiring process quickly surfaces a myriad of opinions on how coding skills tests are used in the recruiting process. Youâll find lengthy debates on this topic in HackerNews threads as well as not-so-subtle articles with titles like Why Coding Tests Are A Bad Interview Technique.
At first blush these sentiments should have deterred me from joining a company that makes a developer assessment platform, right? But I saw that the market for these products is exploding and I decided to dig inâa process that began by asking my former boss Dimitris Georgakopulous, Co-founder of Buildium and Outseta, for his take on coding skills tests.
âThereâs absolutely a market and need for tools like this,â Dimitris said. âYou simply canât assess and hire developers without asking them to write some actual code.â
Joel Spolsky, CEO of Stack Overflow and Co-founder of Trello, provided further backing of this perspective with a simple analogy.
âWould you hire a magician without asking them to show you some magic tricks? Of course not. Would you hire a caterer for your wedding without tasting their food? I doubt it. Do whatever you want during interviews, but make the candidate write some code," writes Spolsky.
Encouraged by this feedback, I turned the question on the development team at Qualified. âWhy do so many developers dislike coding skills tests?â Their answers surprised (and built credibility with) me.
âI've heard the complaint that interview tests are awful, pointless, and demeaning a lotâ especially on social media,â said Phil DeJarnett, a Senior Front-End Developer at Qualified. âIt's frustrating at best because it's clear that developers are looking at it from an (understandably) selfish perspective. âI'm a good developer, why do I need to prove this to somebody I don't even know?'"
Jake Hoffner, Qualifiedâs Co-founder and CTO, took it one step further.
âAs a senior developer Iâd be hesitant to take most coding assessments if I was looking for a new job,â Hoffner says. âI feel like Iâve built products and have a professional network that should preclude me from needing to do that.â
Prior to Co-founding Qualified Jake built Codewarsâheâs definitely a person that Iâd describe as a âdeveloperâs developer.â But coming from a guy thatâs now spending his professional life building a developer assessment platform, I was taken aback by hearing this level of empathy for the anti-coding tests sentiment.
âWhatâs this guy doing building a developer assessment platform then?â I wondered to myself.
Iâve spent the last few weeks talking to HR and engineering leaders to dig into this question in the greatest amount of depth possible. Iâve since resurfaced with strong conviction and evidence that there are companies using coding skills assessments in not only a developer friendly manner, but also in a way that directly leads to them finding and hiring the type of developers that immediately begin delivering on-the-job.
In fact, if wielded properly coding skills assessments can even help companies build credibility and excitement with developers throughout the hiring process. This is yet another aspect of your employer brand that can be optimizedâand perhaps the one that speaks most directly to what itâs like to work on your companyâs engineering team.
Shane Shown, a Talent Acquisition expert who has built engineering teams at companies like Facebook and Zillow, says it best.
âWhen a candidate does run into an interview that represents real-world problems that would need to be solved in the day-to-day of the actual position itâs MIND-BLOWING. I have had candidates leave an interview with a coding assignment that they were actually excited to complete, because they felt like they would understand the companyâs problem and add real value.â
This post will teach you how you can move beyond the negative sentiments and turn your companyâs use of coding assessments into a strategic advantage. But letâs start by reviewing some of the reasons developers dislike coding assessments in the first place.
The reasons developers often dislike coding tests (and how to change their tune)
While developers have expressed disdain for coding assessments for a wide variety of reasons, almost all of them can be overcome. These sentiments almost always come from coding skills tests being used as a blunt instrument to pre-screen developer candidates out of the recruiting funnel. Hereâs how your company can intelligently apply coding assessments to flip the script and turn hiring developers into a competitive advantage.
Most coding assessments test only algorithmic skills
The most commonâand credibleâreason that coding skills tests get a bad rap is that the vast majority of assessments test algorithmic skills rather than actual programming ability. The tests represent a computer science problem that has little to do with assessing an engineerâs ability to deliver the work theyâd actually find themselves doing on a day-to-day basis.
Glen McCallum, a Senior Software Engineer at INscribe Digital, draws a wonderful analogy between coding and music in his article Why Code Challenges Are Bad Practice For Hiring Senior Developers published just last week. Testing algorithmic skills is a technical exercise akin to learning to play scales in music. While playing scales is important when youâre learning music, it has almost nothing to do with working as a jazz musician.
âThis week I was working on a Hackerrank problem for fun,â writes McCallum. âI had to pull out my old text book for data structures and algorithms in order to code up a merge sort from scratch. I felt inadequate, sent a tweet, and then a light bulb turned on in my head.â
âWe all studied these algorithms in undergraduate computer science classes. But as you gain a lot of professional experience you learn how and when to apply them, then you refresh your memory as needed. I knew exactly what merge sort was for and I knew exactly where to find the reference algorithm. I just didnât have the details in my head at that moment.â
McCallum continues building his point by returning to his music analogy.
âDoes it make you a better professional musician if you can play all scales perfectly at any time? Absolutely not! In fact Iâd argue that youâre wasting precious practice time. How silly would it be if you asked a professional musician with a history of outstanding performances to sit down at an audition and play a scale? Itâs insulting. Then dismiss them before they even perform because they didnât do the scale perfectly. The thought makes me sick to my stomach. But in 2019 it happens every day to senior developers applying for jobs.â
Luckily, there are developers out there who have been heavily involved in the hiring process that also understand the objectives of their friends in HR and the importance of pre-screening candidates.
âThere's enough programmers in the world who aren't really skilled enough for the job (whatever that job may be) that it becomes necessary to offer some kind of litmus test that a potential job-seeker must pass," writes Ted Neward, a Guest Lecturer on development at the University of Washingtonâs iSchool. âI get that and it's not like all the programming tests in the world are created equal. But the ones where the challenge is to implement some algorithmic doodad or other? Shudder."
How to address the âcoding assessments test only algorithmic skillsâ challenge Most coding assessments are built as generic STDIN/STDOUT tests. Instead of leveraging these tools, look for coding assessments based on unit testsâdevelopers write unit tests on a daily basis. Also look for assessments that use language specific frameworksâpreferably the same languages that candidates would be writing code in if hired at your company. Testing for the nuances of each specific language helps to better surface candidates who will deliver clean code on-the-job.
Coding skills tests are time consuming
Another reason that coding skills assessments are often bad mouthed is simply because they can be time consuming to complete.
âMy biggest pet peeve with these types of tests is this: there are a lot of companies out there, and Iâm sending out resumes to each one that I can find,â says Brandon Savage, Owner at Tailwinds. âI simply do not have the time to write fifteen code samples a day, just because you want to evaluate me against your coding test. Period.â
How to address the âcoding tests are too time consumingâ challenge While Savage has a point, this objection is far easier to overcome. From the perspective of the hiring company, all it takes is a little self-awareness and empathy for the applicantâmake it a point to be mindful and respectful of each applicantsâ time.
I asked Jake Hoffner, Qualifiedâs CTO, what heâd recommend with this challenge in mind. His answer was simpleâfor a first cut at a technical screening exercise, share an assessment that should take no longer than an hour to complete and ideally only 20-30 minutes. For a final stage technical assessment, limit the time commitment of the candidate to two hours.
âEven if they donât complete the assessment in two hours ask them to stop at that point,â says Hoffner. âYouâll learn a lot from what they were able to accomplish in two hours, and youâll learn even more from talking to them about where theyâre at two hours in and what theyâd do next anyways.â
From the perspective of the applicant, Iâd also push back on Savageâs sentimentâif you find yourself needing to write 15 code samples, you need to reassess your job search strategy. This is indicative of a spray-and-pray strategy where youâre firing off a large volume of resumes (and are subsequently asked to take a high number of coding tests).
Regardless of the position youâre applying for, focus instead on applying for a smaller number of positions that youâre most interested in. This way you can devote significantly more time to each, which almost always yields a higher number of job offers.
Coding tests donât reflect the real world programming experience
The focus on algorithmic skills aside, software engineers often cite that coding tests donât reflect the actual experience of writing code as you would on-the-job. For example, many coding tests require developers to build something from scratch.
While starting from a blank slate is easy, itâs rare that developers would do this very often once hiredâmore often than not the real world, on-the-job experience would instead dictate that you familiarize yourself with an existing code base and learn to contribute to it effectively.
How to address the âcoding tests donât reflect actual programmingâ challenge There are countless generic coding tests out there because they are easy to create. Instead, look for coding assessment tools that give you access to a database of pre-built assessments in a wide variety of languages, scopes, and challenge types that are as similar to your own code base as possible.
If youâre hiring for more senior roles, look for a coding assessment platform that allows you to create and administer your own custom, multi-file assessments that directly reflect the process of contributing to your actual code base.
Coding assessments take developers out of their comfort zone
Developers often question the validity of coding skills tests because theyâre asked to perform in an environment thatâs not familiar to them. Understandably, they feel like theyâre not able to put their best foot forward.
This complaint is also very legitimateâimagine asking Tiger Woods to play the Masters with somebody elseâs golf clubs or asking a violinist to audition by playing the cello. Most developers have an IDE (integrated development environment) thatâs been highly customized for their own personal tastes and preferences in a way thatâs comfortable, familiar, and allows them to write code as efficiently as possible. How could they possibly perform their best when theyâre thrown into an unfamiliar environment that they wouldnât actually use if hired anyways?
On top of that many coding assessments are either timed or ask developers to perform on-the-spot while others look onâagain contrived circumstances that add to a developerâs anxiety.
How to address the âcoding tests take developers out of their comfort zoneâ challenge This one is simple to addressâlet developers operate within the confines of their comfort zone. Doing so will help you get the best read possible on how theyâll actually contribute on-the-job.
Look for coding assessment tools that allow developers to customize their IDE, or better yet use their own IDE altogether when completing coding assessments. If you do time restrict assessments, allow developers to work independently then use code playbook tools and pair programming sessions to discuss and expand upon the work theyâve already completed. This will give you a deeper level of insight into their thought process and problem solving ability.
Senior developers shouldnât need to prove themselves
Senior developers are sometimes unwilling to complete coding assessments simply because they feel like they shouldnât need to prove themselvesâtheyâve been working for years and have countless products and code samples they can instead highlight to showcase their abilities. You wouldnât try to sign Lebron James by bringing him in for a workout and asking him shoot free throws for the first hour.
While thereâs validity to this pointâparticularly with the very best engineersâthereâs also at least some degree of ego at play here. As someone who has hired a large number of marketers and designers, when Iâm confronted with someone who is not willing to deliver a reasonably scoped test project what Iâm essentially hearing is, âI have an ego and I donât want this job that badly.â
I can tell you with certainty that thereâs a lot more risk with a marketer delivering a 90-day growth plan during the interview process than there is with an engineer completing a coding assessment. Youâre being asked to share your own, original thinking and thereâs nothing to keep the company from taking your own ideas and running with them on their own. Thereâs inherent risk there and you are being asked to provide value up front.
But if you are unwilling to do this, what does it say to the company thatâs looking to hire you? And if you really check your ego at the door and take a look at this from the perspective of the employer, itâs really not too much to ask. For development jobs the employer is likely committing to paying you well over $100,000, to contributing to your 401k, to bringing on a person that they hope will contribute to their product for a long time to come. The employer is almost always taking on more risk than the applicantâparticularly in smaller companies.
How to address the âI shouldnât need to prove myselfâ challenge Make sure that whatever you are asking of senior developers to do, itâs actually providing some insight on how theyâd contribute on-the-jobâdonât make them jump through hoops for the sake of jumping through hoops!
If theyâre truly a high quality, senior developer you can spend less time assessing their actual programming ability and more time probing on what theyâre like to work with and how well they incorporate feedback. Create custom, detailed coding assessments to provide a common structure against which to evaluate senior developers, but purposely limit the amount of time they actually spend on assessments.
Instead use pair programming sessions or code playback to discuss with senior developers some of the architecture decisions they made or how they might expand a feature further. Rather than using coding problems in isolation, use the assessment as a starting point for a much deeper discussion that gives you insight into how candidates think and what it it would be like to work with them.
Automated scoring of code can lead to false rejections
Finally, thereâs often skepticism or worry about coding skills tests because automated scoring of code can lead to false negativesâapplicants getting rejected that shouldnât necessarily be. Fair enoughâfor any coding problem thereâs almost never a single ârightâ answer.
Consider the great works of literature; if assessed against the strict rules of grammar, almost all of them would fail an automated test. James Joyceâs Ulysses, considered one of the great works of English literature, is filled with fragmented sentences, slang, and words that are made up altogether. Joyce himself would fail to get hired at even the local newspaper if they were using an automated language assessment.
How to address the âfear of false rejectionsâ challenge Automated assessments are a prerequisite for hiring developers at any sort of scale and save a companyâs internal employees from spending a massive amount of time reviewing code submissionsâany developer worth their salt will understand and appreciate this.
What you can do is look for automated assessments that have been informed, validated, and approved by thousands of other developers already through communities like Codewars (which forms the basis for all of Qualifiedâs assessments). Also look to use a developer assessment platform that provides a full suite of feedback tools beyond automated scoring of assessmentsâlook for pair programming functionality, code playback, and tools to manually provide and capture feedback on specific segments of code.
Conclusion
Developers have voiced many hang-ups with coding skills tests, and many of their criticisms are well founded. But by leveraging the latest technologies in tandem with developer friendly hiring practices, companies can turn their use developer assessment tools into a competitive advantage.
Your companyâs use of coding skills assessments represents a very real opportunity to build your employer brand, give candidates a strong initial impression of your engineering teamâs culture, and create a hiring process that developers talk about glowingly (and share with their friends).
âHow a company interviews people is a direct correlation with the quality of talent they attract,â says Shane Shown.
What does your developer assessment process say about your company?