I tweeted a link to my Do No Harm post, where I relayed some re-discoveries I had made about the analogy between software craftsmanship and medical surgery. I quickly heard back from two respected software developers Bil Kleb, Rubyist at NASA, and Bret Pettichord, creator of Watir. Both of them pointed me at an even older book: The Mythical Man Month. I read this book back in 2003. It reminded me of The Psychology of Computer Programming because despite its focus on certain out-dated concepts, the core principles it communicated are as true today as they were 35 years ago. I had forgotten that Brooks wrote an entire chapter entitled "The Surgical Team", based on a propsal by Harlan Mills in 1971. It outlines the structure for a multi-disciplinary team, with roles such as: surgeon, co-pilot, administrator, editor, secretaries, program clerk, toolsmith, tester, and language lawyer. I would assert that many of these roles have been automated over the last 35 years, with the most notable being toolsmith replaced by open source software. Yet the roles of surgeon, co-pilot and administrator resonated with me because this is very much the structure of my daily work in Obtiva's Software Studio, where I (the surgeon) work with Joseph Leddy or Turner King (co-pilots), and depend on Todd Webb (administrator) to help manage our workflow.
After reading the chapter on surgical teams, I wandered to the first chapter and found a section on page 6 entitled "The Joys of the Craft", followed by "The Woes of the Craft". These are two excellent sections, particularly for aspiring software craftsmen, because it provides some insights into the road ahead. Here are some highlights:
"Why is programming fun? What delights may its practictioner expect as his reward? First is the sheer joy of making things. As the child delights in his mud pie, so the adult enjoys building things, especially things of his own design. I think this delight must be an image of God's delight in making things, a delight shown in the distinctness and newness of each leaf and each snowflake.... Fourth is the joy of always learning, which springs from the nonrepeating nature of the task. In one way or another the problem is ever new, and its solver learns something: sometimes practical, sometimes theoretical, and sometimes both."
"Not all is delight, however, and knowing the inherent woes makes it easier to bear them when they appear. First, one must perform perfectly... Next, other people set one's objectives...One rarely controls the circumstances of his work, or even its goal. ...The next woe is that designing grand concepts if fun; finding nittly little bugs is just work. With any creative activity come dreary hours of tedious, painstaking labor, and programming is no exception."
I highly recommend this classic book to anyone interested in developing software.
Hide comments

RSS
Comments
