I'm currently reading Apprenticeship Patterns by Dave Hoover and Adewale Oshineye; it's fantastic. I wish I'd read it when starting out as an apprentice. I will heartily recommend it to new Hashrocket apprentices on Day One.
Chapter 2 includes the subsection 'Expose Your Ignorance', and the action step includes writing down a list of things you really don't understand and placing the list in a public place for all to see.
The first step to improving at anything, but especially programming, is being able to admit your ignorance. Most of my biggest breakthroughs came after speaking the difficult words:
I don't get this.
Hence this list, here, on the scary internet. I aim to have a public record of things I know I need to work on.
I'm going to use the Programmer Competency Matrix as a guide. Like any list, this one is subjective, but I think it's a good starting point for self-reflection.
Okay, deep breath, here we go. Here's where I am ignorant:
- How Linux works (I have a giant book on this subject in the 'someday' queue)
- Algorithm theory
- Functional programming
- Mastery of a front-end framework
- Writing a conference CFP
- Recording a podcast/screencast
- White hat hacking (sigh)
Many of these deficiencies align with my Annual Review goals. I feel competent enough in my craft to learn about and hack my way through any of these tasks under pressure, with the help of tutorials and libraries. But I'd like to do better, and cross these items off in time.
And then add more.
Thanks to Dave Hoover and Adewale Oshineye, O'Reilly Media, and everybody in my professional world who helps me stay ambitious.