This pattern seeks to solve the problem of skill gaps that are making daily work more challenging. The authors propose that software apprentices suffering from this issue attempt to actively learn the missing pieces. This could take different forms — they suggest reading tutorials/FAQs, constructing small low-stakes projects, and/or involving other people that are either experts in the area or trying to learn the same thing. They also suggest keeping a list of these skill gap areas, and crossing them off as they’re sufficiently learned; this goes hand-in-hand with adding to the list as your learning exposes additional gaps.
This approach to learning really resonates with me. My preference is to actively seek out knowledge, and I tend to learn best through hands-on practice. I’ve already used a less formalized version of this when I taught myself Python: find a skill (in this case, a programming language) that I would like to learn and then give myself a project to work on that forces me to learn and use it. There are three major additions (on top of the formalization) that I can take away from this pattern:
- Involve other people, whether they are experts or fellow learners.
- Don’t overuse this pattern to the point where it causes problems for others; I only have so much time.
- Balance learning with introspection.
The first point leads to the creation of a learning community, and extends both the resources and benefits of learning. I know that I have a tendency to want to do everything myself, and while independence isn’t bad it’s also important to not always be reinventing the wheel. I also enjoy sharing my knowledge, and it makes sense for me to seek that out in a more mutual way.
The second point is also something I run into often, and partially extends from the first. I really like to build things from scratch and see how they’re made. However, that tendency can also lead to excessive use of time and energy for what should be a simpler project, or the preference for my own solution over another (quite possibly better) one that’s already been written and vetted.
The third point encourages me to set up a cycle of learning and introspection; crossing items off of the list and then adding more to the bottom.
While actual checklists are not a tool I particularly enjoy using, this pattern has leaned me towards perhaps keeping one (and actually updating it). That, I think, is where I’ve found the most value in Confront Your Ignorance.
From the blog CS@Worcester – orscsblog by orscsblog and used with permission of the author. All other rights reserved by the author.