Published: October 05, 2023 by Anthony V.
In today's tech landscape, algorithmic coding tests have become the go-to
evaluating developers' skills. They are favored mainly because they are cheap and scalable,
them an attractive choice for companies seeking to assess a large pool of candidates.
However, the question we need to ask is whether this approach truly reflects developers' skills or if it's merely a convenient shortcut.
Before we delve into the issues with algorithmic coding tests, let's first
what they are.
Algorithmic coding tests are assessments designed to evaluate candidates' coding skills, typically in a high-pressure, time-bound environment. These tests primarily revolve around solving algorithmic and data structure related problems, often with an emphasis on optimization and efficiency.
While they aim to gauge candidates' problem-solving abilities, they tend to miss several crucial aspects of a developer's skill set.
One of the fundamental shortcomings of algorithmic coding tests is their narrow focus. They mainly assess proficiency in basic programming constructs like data structures and algorithms. While these are undoubtedly essential skills, they represent just a fraction of what makes a competent developer.
Furthermore, algorithmic coding tests can be aced with a few days of preparation thanks to dedicated websites designed to fasten the learning process (e.g., Leetcode, HackerRank). This narrow window encourages candidates to memorize solutions before going to interviews, creating a misleading representation of their capabilities.
Most developers agree on the fact that this method wastes everyone's time. Developers need to invest their time in preparation before the interview because a high score is expected to continue the recruiting process. And enterprises will lose everyone's time by interviewing developers who have just memorized solutions and are not a good fit for the position.
Beyond solving algorithmic puzzles, these tests provide little insight into how candidates approach real-world coding challenges.
In a professional setting, writing high-quality code is mandatory
determines how well the codebase functions, scales, and maintains over time. It is
of the most important skills a developer can have.
Algorithmic coding tests almost never assess these aspects because they prioritize speed and correctness over code quality.
Real-world coding tasks require making design decisions. Developers need to be able to understand the pros and cons of every design decision. Which software architecture to use, when to introduce layers of abstraction, how different components of a system interact, design patterns...
In real-world projects, developers need to choose the right tools
technologies for the task. This involves considering factors like scalability,
performance, and maintainability cost.
Algorithmic coding tests never involve these considerations.
And as a last example of important skills for developers: Testing
strategy. Testing is a fundamental aspect of software development. A good testing
strategy can make a huge difference in delivery speed. The more confident you are in
your tests, the faster you can ship your product and iterate.
Writing good and maintainable automated tests is a highly valuable skill for developers and is almost never evaluated using algorithmic coding tests.
After a candidate completes an algorithmic coding test, what is left to
during the subsequent interview? In most cases, there's a lack of tangible topics to
Algorithmic coding tests being surface level do not allow us to have deep conversations to gain insight into developers' true abilities. This penalizes both parties; developers cannot showcase their potential, and enterprises will miss out on top talent and make bad recruiting decisions.
In an ideal world, after a take-home assignment, both parties would be able
talk about it to engage in a meaningful conversation where a developer would explain their
thought process, the reasons behind their choices, and the alternatives they considered,
the interviewer challenges them to dive deeper.
Communication on technical subjects is part of the day-to-day job of a developer. The ability to have this kind of conversation in the hiring process would be a huge positive for everyone.
Instead of abstract algorithmic problems, consider assigning candidates a
real-world task that mimics the challenges they would face on the job. This approach allows
candidates to showcase their problem-solving abilities in a context that aligns with the
demands of the role.
For example, if you ask a candidate to create a simple microservice with the following kinds of requirements, you will already have better insights into the candidate's skills than the most advanced algorithmic test:
- Implement a small API specification
- Communicate with a database
- Integrate with an existing system (e.g., another microservice)
- Some simple business logic
If you want to see an example of a complete coding test, refer to the Example
Building a complete service from scratch allows developers to showcase all their skills and reflects how they would perform on the job. To increase accuracy, ask candidates to use the tech stack your team currently uses for the job, for example, Java 17 with the Quarkus framework, PostgreSQL database, JSON and gRPC API...
By doing so, you could have a crystal clear view of a developer's true skills, and you would have something tangible to talk about in the following interview. Also, this kind of coding test doesn't need any preparation from the developer because it's part of their day-to-day job, and it's way more fun to do than boring algorithmic tests.
Real-world coding tests are known to be the best for assessing skills but
scalable because they involve a human to assess candidates' code, making it difficult to
the number of candidates.
But at Codigrade, we solved this problem by fully automating the deployment and evaluation of candidates' services in a live production environment; no human intervention is needed.
Codigrade is a coding assessment platform using real-world coding
All of our coding tests require candidates to create a real microservice from scratch. Their microservice will be automatically deployed and evaluated in a live production environment, we take care of the whole evaluation process.
This assessment method allows us to test skills that would be impossible to test with traditional algorithmic coding tests. Thanks to this strategy, we can provide accurate data about your candidates' skills, helping you to avoid costly hiring mistakes.
Try it now by creating an account here: https://portal.codigrade.com/signup