First of all I want to bust a myth right now. Mastering a skill is not easy. Mastering any skill requires hardwork, patience, consistency and persistence. Programming is no exception to it.
As usual, I'll try to provide some steps to follow in order to understand programming thoroughly.
(Disclaimer: A very long answer but it’s worth reading. Trust me)
Step-1: Pick a programming language (any)
Any language is good enough. If you are in college, pick the language that your college is teaching. You have to understand how to write small snippets and most importantly understand their working. The fundamentals of programming are language agnostic.
Understand OOP very well and practice basic programs. You are now building your foundation.
Step-2: Implement Data Structures and Algorithms
I can't stress enough on how important this is. This is the key to master a language. There are multiple courses available free/paid. One free course I recommend is from MyCodeSchool.
Even some excellent books are also there which will help you. Below are some of my favourite books that helped me in this phase.
(Note: Don’t start with Cormen!! You’ll have nightmares. You’d wanna quit programming. Start with Grokking and then any book.)
Implement the data structures and algorithms with your choice of programming language.
Final Step: Competitive Coding
Open LeetCode , sort the problems by random difficulty and pick problems based on different data structures and algorithms. Maintain your progress. I use Notion for tracking. Try to solve a minimum of 5 problems/day. If you’re unable to solve put into a separate category.
(Note: You’ll face difficulty in some concepts/parts. This exercise will identify those parts. For example, if you are suppose able to solve 2/10 graph based problems, you need to revisit graph and it’s algorithms.)
This exercise will make sure to solidify your concepts to the very core.
And there you go!!!
After completing the steps, not only will you understand programming very well, also you’d be prepared enough to crack technical interviews.
Some Important Points:
- Once you have done all the steps, you’ll now have the capability to switch programming languages very swiftly.
- If you chose C as your first language, it’s quite a good choice. But for OOPs part, make sure you choose Java/Python/C++ or any other language that supports OOPS.
- Don’t lose hope if on some category of problems you are unable to solve. Revisit those parts and practice.
Well if you are here, I am assuming you have diligently read everything. Kudos to your patience and perseverance. As a token of appreciation, I’ll suggest 3 bonus books which might help you in the journey.
(Helped me in understanding the art of programming. A very thin book but gives a quick overview of the mathematics that goes behind computation and covers bits and pieces of data structures and algorithms )
(Helped me in understanding the beauty of C Programming language. Will help you in writing beautiful programs using C. A thin book but requires a good understanding of C as a prerequisite.)
(A masterpiece book according to me written in Java. Covers very important frequently asked questions. Definitely worth giving a try. )
Happy Programming :)
• Biswarup Chakraborthy