Many software engineers have a love-hate relationship with algorithms. While they are at the core of programming languages and many libraries, they play only a small role in the day-to-day work of most engineers. However, they are part of many technical interviews and are therefore seen as a gatekeeper for engineering positions. If companies would stop asking algorithmic questions in interviews, engineers would need to ask themselves: Why should I learn algorithms?
Yes, you will most likely never need to perform an in-place reversal of a linked list in your job. However, what you might experience are performance issues in one of your systems, due to inefficient memory allocation. An effective solution to that problem might be very similar to how reversing a linked list works. It might also not. But without having that knowledge and understanding the underlying algorithmic patterns, you will have a hard time to come up with a creative solution. Data structures and algorithms are the foundation on which we choose technologies like storage systems. Depending on how related the entities of our application are, we might favor a SQL database over a NoSQL database. In the era of microservices, where one company uses a multitude of technologies among multiple teams, this is more important than ever.
Employers often use algorithmic exercises as a way to assess problem solving skills. As developers, we are expected to choose the right tool for the job. In most of my job interviews, I was told that it does not matter if I finish the task in the given time. What was more important was how I approached the problem. Practicing coding challenges is a good practice to not only ramp up your algorithmic skills, but also improve the way how you approach problems and work your way to a solution. Good employers will recognize this ability whether or not you found out if these two strings are an anagram or not in the given time. Are there other ways to assess these skills? Maybe. But since many companies use these exercises in their interviews, better get acquainted with it and get your dream job. Solving algorithmic problems can be a lot of fun.
Software is eating the world. Not only our physical world, but it is also eating software development. According to a Gartner report the adoption of Low-Code/No-Code tools grew by 22.6% from 2020 to 2021 and will make up for 65% of software development by 2024. This means, some parts of software development will become a commodity. While this might sound scary, it opens up opportunities to focus on harder problems. The software industry is huge and so are its problems. We already live in a world where everybody expects software to work in real-time and the growing application of AI in our everyday lives demands not only data but also software engineering expertise. Skilled employees who understand software and algorithms at a deeper level will become even more valuable.
Now that we know, why it why we should learn algorithms, here are some resources to get you started, which I found useful.
And some more famous resources, which I not yet have tried, but are on my list:
Hopefully, this has helped you to understand the value in learning algorithms and the next time you are facing a technical interview, you can motivate yourself more easily to ramp up this skill. Algorithms in technical interviews are a very controversial topic. Feel free to reach out and tell me what you think about it.