As someone with nearly two decades of experience in software development and hiring, I've been on both sides of the table. I've applied to numerous jobs and have also been a lead, responsible for hiring developers. Let's delve into the debate about test assignments from two perspectives.
From the Candidate's Point of View
Junior Developers: If you're a junior developer trying to break into the industry, you often don't have a choice but to complete test assignments. The competition is fierce, and these tasks can be your ticket in.
Mid-Level and Senior Developers: Here, I find test assignments to be largely pointless. On average, they take about 5 hours to complete. Spending 5 hours on a potential job that you may not even get is irrational. That time could be better invested in applying to other companies with simpler hiring processes. What frustrates me the most are companies that send a test assignment immediately after receiving your resume. My immediate thought is, "Let's first discuss salary expectations, the team, and what you're looking for in a candidate before diving into test assignments." Why waste a candidate's time without even a preliminary discussion?
From a candidate's perspective, it's more efficient to focus on companies that value your time and are willing to have a conversation first.
Post-Technical Interview Scenario: If you've already had a technical interview, which typically lasts at least an hour, and you're then asked to complete a test assignment, it indicates that the company still has doubts about you. During the technical interview, I usually ask critical questions to gauge if the company is my ideal employer. If their answers make me feel confident, I might be willing to do a test assignment. Otherwise, I'd rather spend my time on opportunities where my candidacy is less in doubt.
From the Lead's Point of View
My Stance on Test Assignments: I've never asked candidates to complete test assignments. I find it unnecessary. For me, a developer's GitHub repository with their projects is much more telling. If they don't have one, or their projects are under NDA, that's a significant drawback. In such cases, if I have serious doubts about their technical interview performance, I might consider a test assignment to save time. But generally, I prefer to see their existing work.
GitHub vs. Test Assignments: Reviewing projects on GitHub provides much more valuable information than a simple test assignment. It shows how the candidate writes code, thinks, and uses design patterns. You can see how they structure their projects. What does a test assignment tell us? That the developer can solve a simple task in 4 hours? It's not even guaranteed that they did it themselves; they might have gotten help from a friend or ChatGPT. You don't get insights into how they structure a project or their problem-solving approach. Simple tasks rarely showcase advanced design patterns.
Complexity of Tasks: Understanding a developer's level requires more complex and extensive tasks. If it's a paid assignment that takes a day or two, that's a different story. I've used this approach a few times when I had doubts about a candidate after the technical interview. In such cases, you can learn a lot. But discussing how to conduct a technical interview is a topic for another day.
Conclusion
The debate on whether to give test assignments is nuanced. For junior developers, it's often a necessity. For mid-level and senior developers, it's generally a waste of time unless the company shows serious interest. From a lead's perspective, GitHub repositories provide more valuable insights than simple test assignments. If doubts persist after a technical interview, a more extensive, paid assignment can be useful.
What are your thoughts? Do you agree or disagree with my perspective?