If you're a software engineer or working in IT, you're probably familiar with various code challenge websites – especially if you’re actively looking for an engineering job. Many IT companies are using coding challenges in the candidate selection process to prove engineering skills, boosting the popularity of online resources like Top 50 most popular interview challenges.
However, I always felt that there was a disconnect between those coding challenges and the real-world application of that knowledge in the average IT company. I've yet to come across a feature that will require me to navigate over matrix data structure and find diagonal patterns of characters forming a word. In my experience, real-world engineering is more concerned with the response time of your API endpoint or formatting data.
Sure, some companies require that specific skill, but with machine learning and AI boom navigating efficiently over matrixes, it is not as obscure a skill as it used to be. Overall, specific code challenges will not be very applicable in the average IT company, and I believe job interviews that measure only how many challenges one can solve in a limited amount of time are kind of missing the point.
So it's no wonder that until recently, I didn't see many benefits in solving code challenges.
But last December, I had a period at work without almost any coding, followed by a two-week vacation. So, I decided to look up some bite-sized fun projects to code. At the same time, another year of Advent of code had just started, and I decided to give it a shot. After a few days of coding, I started seeing some benefits.
Problem-solving
Knowing how to solve hard problems and split them into smaller steps is a skill any software engineer and IT company should be building, and that is actually the first benefit of coding challenges. You can use them to train logical thinking to solve hard problems at work. In addition, you can train yourself in algorithmic thinking or finding a way to solve problems most efficiently. After you solve a certain number of code challenges, you'll begin to notice new ways and techniques you can use to improve your code.
Sharpen your technical skills
It is not uncommon for somebody in a software engineering role to advance to a management role, but that often comes with significantly less time left for actual coding. Even if it might not be possible for you to directly contribute to production codebase anymore or regularly participate in code reviews, sharp technical skills will help you make decisions and participate in discussions in the new role, so it’s best to find a way to keep them sharp.
Tackling fun code challenges in your free time could be a way for you to stay in the game.
Confidence boost
Imposter syndrome is a common downer in the IT industry. Programming languages, frameworks, and best practices are constantly evolving. Keeping pace with all the changes is very hard – if not impossible. Especially if your company is focused on daily output and doesn't leave enough time for skill development and knowledge sharing.
One way to tackle the imposter syndrome and to boost confidence is by solving code challenges. In a perfect world, you would have dedicated skill-development time during your work hours. Since most of us don't, it's a good thing most code challenges are small enough that most people should be able to train in their free time too.
Having fun
Yep, I wrote it! It can be fun solving code challenges. It depends on the challenge itself and the way it is presented. Take the already mentioned Advent of code for example: You are helping save Christmas by finding the Chief Historian. Along the way, you meet various characters who need help solving different kinds of problems.
With each solved challenge, your "calendar" in the form of ASCII art updates. Those gamification elements add joy to the personal feelings of achievement.
I challenge you to try coding challenges
I was initially sceptical, but now I see the benefits of solving coding challenges. Maybe after reading this post, you’ll get curious and try coding challenges for the first time!
That being said, I still think companies shouldn't value candidates based on solving these challenges ie. writing code on the spot. Instead, they could accept pseudo-code as a legitimate answer. Knowledge of specific programming languages or frameworks can be easily refreshed or learned by the interviewee with a proper way of thinking.
Basically, coding challenges are just one way to “stay in shape” as engineers. Below, you can find some of the most popular websites hosting them.
Popular coding challenge websites
LeetCode - one of those sites containing "Top 50 questions/challenges" type of lists but also some fun, unique challenges
CodeWars - website that prides itself on putting more focus on community; you can create and suggest "katas" (daily challenges) and form clans with other participants
Advent of code (seasonal) - it's a seasonal challenge running for 25 days in December, previous years are still available for tackling
Jako dobro Dario. Samo tako nastavi! :)