Why do programmers fail to master data structures and algorithms?
All over the world, millions of programmers are looking forward to pursuing a dream career in computer science. On average, a dedicated programmer spends hundreds of hours learning data structures and algorithms and preparing for coding interviews. However, despite the availability of numerous guidance and learning resources, many struggle to become proficient and succeed in interviews.
So, why does this situation persist, and what are the key challenges? After mentoring over 1,000 students and professionals, I would like to share insights from my learning journey of data structures and algorithms.
Solving problems is a practical skill like, let us say, swimming. We acquire any practical skill by imitation and practice. — George Polya
My college journey started with a massive failure! I failed in the 1st-year programming course. Only 2 students failed in a batch of 90: Me, who did not understand how programming works, and the other who didn’t want to learn programming! It was so embarrassing for me because I had an “S” grade in math and an “A” grade in physics but an “F” in programming!
So I started talking to seniors about this failure but did not receive clear guidance. Somehow, I managed to persuade myself to abandon the idea of pursuing a career in computer science. But, as Steve Jobs said -”
You can’t connect the dots looking forward; you can only connect them looking backward.
When I was in 3rd year and one of my friends was explaining the recursive algorithm to print nth Fibonacci number. He told me that this is a bad code because the computer would take very long time to produce the output for a large value of n !!!
I said, “Really. How???”
He said, “ Time complexity of this algorithm is an exponential function of n”. He immediately explained to me the idea of time complexity and gave the proof.
I was totally surprised and said, “ Why most of the students wrote this code during the 1st-year examination?”
He smiled and said, “ Because they had memorised it and never thought about its performance!”. Further, he explained the better solution via the bottom-up approach of dynamic programming.
He explained: “Good programming skill is not just about knowing syntax, some pre-defined rules, or libraries, but it’s more about writing efficient code using data structures and algorithms.”
So this is the first incident when I came very close to understand the importance of Algorithms which helped me to change my mind. Even my curiosity was so high that I studied the book CLRS within 100 days!
After this, there was not a single week in my life where I did not learn something interesting about algorithms and data structures. They are an integral part of my hobby. In simple words, sometimes we develop our interest in a subject only after realizing the importance and scope of opportunities in that subject.
Top 5 reasons for failure in DSA Interviews
I believe that the quality learning practices can change the way we overcome challenges and grow to new heights of excellence. After 6 years of teaching experience, here I am sharing the top 5 challenges in the learning of Algorithms and Data Structures:
1. Lack of continuous learning: Learning programming requires a growth plan where students should acquire basic skills before going to an advanced level. Students often get trapped in complex examples and the dependencies of topics. In the end, they start memorizing the solutions which affect their performance during the job interview.
2. The requirement of multiple skills: Students should learn to interpret the problem statement, design the correct algorithm, and translate it into the program code. Understanding real-life application is also very useful for developing long term interest.
3. The popular perception about algorithms: Most students believe that solving algorithmic problems is difficult and this view is passed to new students. This gives a bad impression that the subject is tough to master.
4. Poor collaboration and doubt resolution: During the initial phase of learning, students feel unsure of what kind of question should they ask and get help from friends who are most skilled. Some students like the discussion with friends while others prefer to study alone.
5. Uncertain Career Plan: Learning programming help students to get a good-paying job but most of them are unclear about the skills that they need for their growth. Finding a company and position of their interest is a crucial career challenge.
Enjoy learning!