I'm still thinking about Uncle Bob's talk at Agile 2008 after returning to Obtiva's Software Studio after a few weeks away. One of the things he talked about was valuing "Craftsmanship over Crap". After I spoke briefly with him afterward, it didn't seem like there was much more to his statement than simply promoting craftsmanship. And that's fine by me, but I tend to be someone who picks up ideas like this and play with them for a while. In my last post, I reworked "Craftsmanship over Crap" into "Craftsmanship over Heroics", and I'd like to say a bit more about why I chose heroics. But first, I'll need to rewind the clock a bit.
In 2002, I read Pete McBreen's Software Craftsmanship. I read a ton of great books that year. Pete's book ranked near the top because of the ideals and structure that it described. Similar to Kent Beck's Extreme Programming Explained, as I was reading the book I kept telling myself "this is how I want to work". One of the themes of Pete's book is that "Software craftsmanship is built on top of long-term relationships that are grounded in a reputation for delivery." One of the most satisfying aspects of pioneering Obtiva's Software Studio has been building the foundations of long-term relationships with our customers. It's incredible how much ceremony and waste can be thrown out the window once a customer and development team can trust each other. Watching some of Pete's ideals unfold in front of my eyes has solidified these ideals into hard won experience.
Unfortunately, like most developers who find a technique and use it successfully, it can be overused. And by this I mean, letting all process fall away and simply execute your customer's every whim at maximum speed. For me, this inevitably devolves into heroic programming. There are times when you need a bit of heroism on a project, but this shouldn't happen more than a few times a year. I recently found myself in a feedback loop of doing heroic programming at 2AM (and injecting bugs in the process), seeing some benefits, receiving praise from customer, fixing bugs the following night at 2AM (and injecting bugs in the process), seeing some benefits, receiving praise from customer, and on and on. This is why the term "heroic" came to mind so quickly for me when I heard Uncle Bob. I've seen first-hand how a relationship with a customer can be taken too far and produce crap. The obvious superior alternative is to stay disciplined, to maintain a healthy relationship with your customer, protect your sleep habits so that you're at your best, and to uphold your standards of craftsmanship.
Hide comments

RSS
Comments
