I have always heard “master the fundamentals of programming before anything else”. My question is what exactly are those fundamentals (unfortunately the same article that writes this advice, most of them don’t answer this question) & how exactly do I master them? How do I even know I have mastered them?
My Attempt at answering the question:
After some googling I have broken down the fundamentals into 3 levels.
Very Basics/Level 1: Variable declaration, Data types (some add data structures here but I am not sure if I should focus on that), Control structures, functions, input & output (isn’t it the same as variables). Some also add computer architecture and data basics here but idk if I should focus on it.
Level 2: Data structures, Debugging, OOP, functional programming
Level 3: Algorithm, Design patterns, IDE, command line
Question & My Ideas:
Question: Now, how do I master these? Like how do I master level 1 (since this is the most important fundamental)?
Idea 1: I had heard of Josh Waitzkin, a renowned chess player who had an interesting way to master each piece of chess. He, instead of practicing chess with all 16 pieces at the beginning, he cleared out the board & practiced and tried to win the match with only a few pieces like pawn against the king or knight against the king from different positions. He did this until he got an intuitive feel on how each piece moved. Now how do I apply this principle in programming? Do I make complex apps and programs using only these level 1 concepts or try to solve loop exercises with conditional (which kind of seems impossible)?
Idea 2: I had an idea of breaking down existing function to conditions and loops only to understand how they work but idk if it is a good idea or where do I find the code that works behind the scene to break it down.
Idea 3: I also heard someone once say the only way to measure progress in programming is to count your mistakes and never repeat them, now… This is a very tempting idea but how do I apply this?
I have many ideas jumbled up in my head like this which is why I am not able to decide. Any feedback will be appreciated. Thank you so much for taking your time and reading this.