First of all, let me start by saying that the ability to solve coding challenges is not a measure of how good a web developer you are, but it can show that you are a great developer and make you stand out from the crowd. Nobody needs coding challenges to create an outstanding web page using HTML, CSS (or it’s frameworks), and maybe even a little JavaScript.
If your goal as a developer is as I have stated above, then you can ignore me, but if you want to be a developer who utilizes his understanding of programming languages and tools to analyze current codes and industry developments, formulate more efficient processes, solve problems, and create a more seamless experience for users, then this is a must-read for you.
You are first a person before you are a developer. As a person, coding challenges are a means of improving your ability to think logically and solve problems in an efficient manner. If all your friends gave you their shopping lists on your way to the grocery store, and you had a time constraint but still wanted to shop for them all, how would you go about it? Would you pick the first list, walk through the different aisles in the store to get what is on it, and then repeat the cycle for each of the lists? Would that be time-efficient? What if some lists had similarities and you realized you could have bought that particular item for everyone that needed it, instead of having to go to the same aisle a couple of times?
Do you remember how when you are at the grocery store, you always lose a couple of minutes looking for the aisle that contains what you want? Imagine how many minutes you would lose if you had to do that per list. To save time, would you on your first list, indicate where you found each item, so if you came across that item on another list, you would already know where to find it and can visit the closest aisles first?
I would leave the algorithm of this to you, but this is a typical example of the things we face in our everyday life and how solving coding challenges helps us think about efficient and optimal solutions, not just solutions.
These days, more and more employers are realizing that a great developer does not need to be familiar with the stack a company works with, he can easily learn a new framework or a new language. As a result, they search for programmers with excellent problem-solving abilities, after all, why else would anyone want to hire a programmer if not to solve problems?
Imagine you were being interviewed for a role in a recruitment company and your interviewer tells you that they want to be able to give statistical feedback to their clients detailing how many applications were received per day and he hands you an array containing application objects that have a date property.
How would you convert this data into the required statistics? Would you use brute force, would you create two loops, would you use a hash, are you a sucker for in-built methods like ‘.count’ or do you prefer doing your stuff manually? These and many more questions go through the mind of the interviewer and they just want to know your approach in providing solutions.
Constantly solving coding challenges trains your mind to be able to provide a minimum of 5 ways of doing this and also indicate the most efficient solution and why. You are also able to think of test cases and the million things that could go wrong when users interact with your application. This helps prevent anything from breaking when the ‘unexpected’ happens. That’s what makes you a great programmer.
Now, the employer has a peek into how your mind works. You are not just a solution provider, you come up with several ways of providing that same solution. Isn’t that interesting?
A common phrase among parents is ‘Let me sleep on it, I’ll get back to you’. This is not the kind of response your boss, client (if you are a freelancer) or interviewer wants to hear when they ask you for something as simple as the statistical feedback we talked about earlier.
Building up your brain to easily identify patterns by solving coding challenges, makes it easier to come up with solutions faster. You don't want to come up with a solution two days late, why not train now?
I agree that some coding challenges are hard and you might be scared of failing, but who hasn't failed? We all have at one time or another and failure is nothing new. It’s better to spend your time trying to solve imaginary problems that have the potential of becoming real than doing nothing out of fear.
In doing my bit to encourage everyone, I’ll be posting the most common interview coding challenges and my approach to solving them in upcoming articles. I hope this helps someone and I invite you to take a step today, no matter how small.
Let’s connect. I’m on twitter @Abiodun Ajibade3.
Previously published at https://medium.com/@biodun9/why-should-any-developer-solve-coding-challenges-a0903a6771c2