Who are you comparing yourself to?
One of most important moments in my 9 year career came in year 2. I had spent the previous two years diving head first into Perl and had quickly become a strong-ish Perl developer. But then I saw some of the leaders in the community talk about books and ideas that were not Perl-specific, and they made it sound like reading these books (like “Code Complete”) and understanding these ideas (like Functional Programming) were important. Intimidated but interested, I branched out, started reading fewer Perl books, and eventually wandered onto Ward’s wiki. It was there I first learned about Extreme Programming. Soon after I grabbed a copy of Kent’s white book and I was completely hooked: he was describing the way I wanted to spend my working days. I found out the XP conference was going to be near Chicago that year so I paid my own way and took some time off work to attend. It was there that I had that uncomfortable, critical moment: I discovered a group of people who were many orders of magnitude beyond me in the knowledge, wisdom, and implementation of complex software systems. It was overwhelming, but inspiring.
To me, these moments are the hallmark of a successful conference. So many of us can quickly grow into big fish in little ponds and it’s important for us as craftsmen to connect to the larger pond and witness the mastery of the people ahead of us. This was one my goals for Software Craftsmanship North America: to help our community achieve an accurate self-assessment. Our speakers continually pointed at foundational books and concepts that we need to understand: Michael Feathers pointed us to the Wizard and Dragon books, Paul and I pointed us to the Mythical Man Month and the Pscychology of Computer Programming, and Uncle Bob pointed us to Structured Design and studying the Quicksort algorithm. I doubt anyone left SCNA with a warm fuzzy feeling of competence. I believe all of us came away with a uncomfortable (or overwhelming) feeling of how far we each have to go on the long road to mastery.
One of the things that motivates me to continue on that road to mastery is comparing myself to masters rather than the average programmer. I don’t want to slip into the false sense of confidence that comes from localized success. Just because I’ve reached a few small peaks doesn’t mean I should look down around me and feel satisfied, it’s when I’m on those peaks that even higher peaks are most visible! I haven’t worked with Fred George on a project yet, but I have the sneaking suspicion that he is one of the few practicing master software craftsman on our planet. When I get a warm, fuzzy feeling about the success of Obtiva, Mad Mimi or the publication of my book, I motivate myself by thinking about Fred. The guy loves delivering software more than anything, and he’s been doing it for decades. Why do I call him a practicing master? (I’m using the term “practicing” in the sense of actively engaged, like a “practicing physician”.) Because he’s still actively delivering software under the constraints of a business! He is not a trainer (though he constantly trains his people) or a consultant (though he engages people at every level of his company), instead he stakes his reputation on delivering software for a business, and he delivers. I think we need more of our masters behaving this way.
(Inspired by Seth Godin)
