"What actually works is doing similar but subtly different things, paying attention to what works and what doesn't, and then changing behavior in response to that feedback to get cumulatively better." Greg Wilson in Teaching Tech Together
To become a proactive programmer you need to become comfortable with and then a master of a wide variety of technical skills that include using a text editor and a terminal window and testing and debugging your program. When faced with an array of technical skills that you need to master, it is worth asking: how do I get good at all of these skills? While there are a lot of skills that you will should develop as you emerge as a proactive programmer, it is exciting to report that there are some proven strategies towards mastering them!
Have you ever heard that, to master a skill, you primarily need to devote 10,000 hours to practicing it? While practice is, in fact, really important, it seems that the "10,000 hours rule" in a misinterpretation of the research of K. Anders Ericsson. So, what does help? Well, Greg Wilson writes in Teaching Tech Together that "what actually works is doing similar but subtly different things, paying attention to what works and what doesn't, and then changing behavior in response to that feedback to get cumulatively better."
Specifically, to master the technical skills introduced on this site you need to participate in deliberate practice that "requires both a clear performance goal and immediate informative feedback".1 In his post entitled Getting Good, author Brian Hogan explained deliberate practice similarly when he wrote that if you have a skill you want to get better at you must "practice every day", "get feedback", and "do more than you watch and read". Building on the bullet point from Teaching Tech Together, these are the steps you should take when using deliberate practice to proactively learn new technical skills:
Act on feedback from others: While attempting to install, configure, and use a program on your laptop (e.g., VS Code or Python), ask a more established programmer who has already successfully accomplished this task what they think of your setup and the approach that you took to create it. Next, listen carefully to their feedback and then attempt to improve your setup as needed, asking for clarification as appropriate.
Give feedback on the work of others: As you are installing, configuring, and learning how to use a software tool needed for proactive programming, offer constructive feedback to a peer who recently completed a similar step. Once you have shared your suggestions, ask both your peer and a more established programmer to evaluate the way in which you delivered the feedback and the quality of the feedback itself.
Give feedback to yourself: After you have regularly practiced a technical skill, such as implementing and testing Python programs, take time to observe your use of this skill and develop a critique of your own approach. After identifying areas for improvement, make a list of SMART goals that will enable you to more effectively put a specific technical skill into practice, follow your plan, and work to continually to improve.2
Keeping these ideas in mind, let's dive into the first technical skill!
See Merriam-Webster for the definition of Teaching Tech Together for more details about how to effectively learn technical skills. What practical steps can you take to best ensure that you can master the technical skills of a proactive programmer? ↩
See the article called How to write SMART goals for an overview of how to create SMART goals that are specific, measurable, achievable, relevant, and time-bound. In your view, what are the benefits of ensuring that your goals fit into the SMART paradigm? ↩