First and foremost, I want to clarify that I love solving short programming assessments. It's fun and I can improve and refresh my knowledge about data structures and algorithms. I compare it to playing chess. It's entertaining to focus on the game and find better and better solutions over time. In fact, in the last few months, I spent many days solving coding puzzles on CodinGame and I learned a lot. The issue appears when I realize that my career path should not be influenced by how fast I can solve one of those.
A lot of tech companies use coding platforms to interview software developers. I was involved in this kind of recruiting stage many times and some were engaging, while others were a source of frustration.
If you haven't had the chance to try it, the idea is quite simple. You apply for a job and the first stage of the process is to pass a coding test that would measure your skills. The reality is far from that and I cannot understand why it's so popular. Companies lose great developers by betting on large numbers law: convince as many as possible candidates to start recruiting process and then let the algorithms provide random questions that would choose the best candidates.
Different flavors, same taste
Some of the tests are multiple choices types, while others require writing small blocks of code. Also popular is to have 1 or multiple coding puzzles. The result is the same.
I can see why big companies do this. When there are 100 candidates for an open position, there's not a big deal if the coding test filters out 80% of people, even great developers among them. There's still a very high probability that the remaining ones are top of the market. And I can see this will continue. A high salary and acceptance from a highly desired company can exceed the tedious recruiting steps for many developers.
But small and medium companies don't have the leverage of big ones: money and reputation. So I want to talk about the broad market, average company, and average software developer. Not highly skilled positions.
Myth #1: coding speed is important
Most of the time, a developer spends 2-4 hours a day on actual coding. Another 2+ hours are spent on meetings, clarifications, helping a colleague, searching for solutions, emails, company ceremonies, context switching activities, and so on. More than 1 hour a day may pass on activities not even related to the job: breaks, searching for the right song to boost energy, checking social networks, or anything else.
Myth #2: code optimizations matter
Well, sooner or later will get into a performance issue while implementing a random feature. But there is a high probability that is something related to how you used the programming language features and its framework. Not because you did not reuse string values or you used a list instead of an array. There are different concepts for different programming languages, but you got the point.
Myth #3: it's important to know algorithms very well
Nope. You don't care what algorithm is implemented for a sorted list or the hashing algorithm for dictionary keys. You should try to learn the concepts and practice these at some point, ideally at the beginning of your career. Then, years later, you should be confident to jump into theory again when it's finally needed at work.
It seems to me that developers tend to avoid these coding tests as they advance in their careers. They are feeling offended as they consider that their knowledge and time are worth more. Some, completely reject companies because of this.
The reality is that you can know how to:
- clarify requirements
- estimate work
- design and develop from scratch a project
- write automated tests and documentation
- configure CI/CD pipelines
- successfully deploy to production
But to fail at the first stage of the interview because you didn't know how to clean a JSON string recursively, without IntelliSense, without IDE, without internet, without all the packages you are used to, ideally in 30 minutes or less. A lot of technical and soft skills are simply ignored. Believe me, it happened to me and it's not fun. It is not even worth getting disappointed.
Keep coding for fun on these platforms, but realize that the skills acquired are just a small subset of developer experience.
Notes: The cover image is just for reference. The post is not complaining about a specific platform. It states an opinion about measuring correctly candidate skills. There are dozens of platforms that offer this service for tech companies and all use the same concept.
UPDATE: I had to solve again the annoying puzzle😁. Check out the new article!