While most courses I've taken focus on the specifics of using a particular tool in programming, the introductory portion of Watch and Code made by Gordon Zhu is a course that covers the high level programming concepts such as how to approach coding problems, checking expectations versus reality, and utilizing available resources to solve problems before going to someone else to ask.
Here are the core elements that I felt were most beneficial for me.
In it's most simplistic state this means to clearly define a problem, list possible solutions, and compare the tradeoffs of each solution.
I think there are likely other courses on using the debugger. This one happened to be my first introduction for really focusing on this tool. Remembering to use the debugger has proven to be useful in reducing the amount of time between encountering and overcoming a problem.
I often find myself spending a long amount of time trying to figure out something on my own. I believe I should have a balance between this and seeking help. Gordon emphasizes spending time with available documentation resources before reaching out to ask someone what the answer is. Although this is much slower at first, I believe it would better develop the meta-skill of problem solving than someone who too often encounters a problem and asks for help soon.
Given that documentation is not always helpful, I still will look at documentation first whether MDN or the specific documentation for a tool such as React or testing-library.
This is a particularly insightful tweet Gordon made about being more independent in seeking a solution.
This was a fresh concept for me. Basically he walked me through the process of writing comments in code that outlined what I expected the code to do. Then after running the debugger or code, I would note the reality of what actually occurred.
The idea is that as a beginner, my expectations will less often match up with reality than someone who is more experienced.
What I also thought was unique was that he would assign percentages to the probability of his expectations being true or false. For example,
The variable x will equal number 140. 90% True
The variable x equals a string '140'.
In this case I was very sure about my expectations being correct and they weren't! So what does this say about how I came to my expectation? This then opens a path to deep learning. I mean to learn how to evolve my thinking to close the gap between my expectations of code behavior and reality.
I don't always want to slow down and follow these other concepts. There's a feeling of anxiety that I've got to get somewhere now. This mentality is a problem. Because as trite as it sounds, "Haste makes waste." It's seems a spiritual concept in the sense that one can go slow in order to go fast.
We don't live in a society that supports slow, deliberate thinking and action. In a way, Watch and Code is encouraging a more thoughtful approach to programming that is more involved in the process rather than results.