Algorithms - Must-have Skill for Developer
My Efforts. 🔗
I solved around 300 easy/medium algorithmic problems. For history, I pushed all solutions to github.
~130 leetcode.
~150 interviewbit.
~30 other resources.
How Do You Know Your Code Is Optimal? 🔗
It’s year 2021, and I still see that most of the developers are missing one of the most important skills. How can one write an optimal code if they are not even familiar with the concepts of time complexity and space complexity?
Earlier, before I practiced hundreds of algorithmic questions I always thought that my code was optimal. It is like living in your own world. Like people who live in tribes, seen only horses and think that horse is the fastest vehicle.
As soon as developer solves a few dozens of problems, they start to think about their code on the project differently and start to identify the points to improve.
How Much Time Do You Need? 🔗
How much time does it take to build up the basic understanding and be able to apply knowledge in real life? I would say that 200 easy/medium problems on leetcode would give the 80% of result, 100 - 50%, 200 - 80%.
What It Gives You? 🔗
- Opens your eyes on bottlenecks in your existing code.
- Make code neater and cleaner as you review solutions of others.
- Easier to succeed in interview as more and more companies do ask to solve a problem.
-
Respect from your peers when during code review you state “please reduce time complexity to O(n) using Blabla approach”.
- Opportunity to extend comfort zone.
- Different perspective on solving problems.
- Right to call yourself The Professional Developer.
- Optimization of not only code, but life processes and time management.
-
If you ever want to join FAANG, then better start practicing right away.
- Tease your brain.
- Better skills - better compensation.
- Skill is language independent so will stick with you forever.
- Break the routine of writing same code and same thinking patterns.
- Feeling of not missing out when something algorithms related pops up in conversation.
- One less item in your Impostor Syndrome List.
Myths About Algorithms. 🔗
- Solving algorithms will make me think in patterns, I will lose creativity.
– Conversely, it will add additional paths/patters of solving problems effectively.
- I am front end developer. I don’t need algorithms.
– Front-end is slowly replacing desktop apps and becoming more and more complex.
- I will use existing libraries in my code. I don’t need algorithms.
– You don’t find library for every problem you face. No one has a guarantee that library that you use is optimised.
- We need algorithms only for low-level code.
– We can often see some articles that say something like: “Decreased page load time to 1 sec from 2 secs and increased revenue by 30%”. Probably that was not low-level code that they optimised ;)
The Sooner The Better. 🔗
Even if you spend 100-200 hours on learning and solving basic algorithms it will already improve many areas of your development skills.
The sooner you start to practice the sooner you will see the benefits it gives you. It’s like buying a new phone, anyway you will buy it sooner or later, but if you buy it today you can use it right away. Or like learning English, the sooner the better.