As I continue to teach, I’m always trying to find better ways to help the people I train. One of the important things for me is to set their expectations on what it takes to become a good programmer. There are two metaphors that I use, depending on your background.
It’s An Instrument
I could sit you down behind a piano and explain how it works to you in about fifteen minutes. Does that mean you can now play a concerto? Nope. That requires practice. Drawing from research I’ve read about learning (as well as my own experience), committing to fifteen minutes a day is better than binging 2.5 hours on Saturday. Why is this? Again- paraphrasing the work of researchers- regular practice is required for knowledge to transfer from your short term memory (easily forgotten) to long term memory. Once your first set of programming skills/concepts/keystrokes find their way into your long term memory, you will then be able to add more. And more. And more.
It’s a Fitness Goal
If you want to build strength, ability, physical dexterity- you work out regularly. If you do one workout, are you done? Only for the day. Fitness goals require a commitment to regular work. If you take too much time off, you will feel it the next time you return to training. And once you achieve your goal, does that mean you never have to work out again? Of course not. It’s a pursuit, and it takes regular work to achieve and maintain. Same with programming.
The next framing I do for becoming a good programmer is to talk about “the right way” to do something. There are typically at least three ways for any console on the market to achieve any end result. Which one you choose will be based (usually) off of what makes the most sense to you. However, the people who design and create consoles don’t (as far as I know) sit down with a comprehensive list of every action anyone would ever ask you to accomplish and lay out a plan for how the interface “should” be used. They leave you possibilities. So when you are asked for something and how to do it is not at all obvious…
It’s a Video Game
You know how in games you find yourself in some room and there is something shiny very high up that you clearly need/want and then a bunch of random junk around the floor? If this is familiar, you know you’re supposed to look at the junk and find some way to repurpose it so you can reach the shiny thing. Programming is like that. Look at your tools/options and find a way to repurpose (maybe even deliberately misuse) them to accomplish your task. Rinse and repeat for the rest of your career. I find looking at programming as a game helps me not get too wound up and just look for possibilities.
Figuring out better ways to teach people is really important to me. I hope these little insights help you on your way to becoming the best programmer you can be. I’d really love to hear from each of you on what has helped you become a better programmer. Hit me in the comments.