What’s up with “Mastery” in programming?
The term “Mastery” is kind of loaded with political and historical baggage. When we hear it we might go down the path of masters and slaves, domination and subjugation, and power as a tool to control others. But there’s another, perhaps even deeper, set of associations at work here too. Mastery as excellence, self-discipline — of control turned inward.
What does it mean to become a master developer? It’s not just about intelligence, or experience. It’s also about mastering yourself, training your intuitions, and learning new ways of thinking about yourself and the world. Like mastery in any other discipline this is no easy process. It requires practice, the willingness to learn from your mistakes, and time.
I look at martial arts, horse training, dance, music, and many other fields and I see institutions designed to help people achieve mastery. I’m not so sure the software development field has yet developed any of these institutional aids. Programs like the MCSD, or JCP certifications don’t really encourage mastery, if anything they encourage lowest-common denominator thinking.
Yet we do have masters, and we do see evidence of huge productivity differences between the best and worst developers. What we need is some better ways of helping people achieve the highest level of mastery they are capable of. Sure not everybody can become a black belt, but most people can if they are willing to take instruction, practice, and keep working at it long enough. In software we just don’t have the same learning resources.
We can do better. I’m not exactly sure of the details, but I know we can do better.

0 Responses to “What’s up with “Mastery” in programming?”