When you are building software, you can optimize for one of two things. You can reduce the time it takes to create or you can reduce the amount of effort you will put into maintenance. Old school RAD tools (and much of Microsoft’s demo-ware) optimize for quick construction. Tools like ORMs (especially Entity Framework) and Rails also make this choice. They all allow you to build solutions quick, and there is nothing wrong with that, if that is what you need.
Most software will live for many years, so you will spend much more time fixing it and adding features. This is where the whole RAD strategy falls apart. Most of the tooling that allows you to build fast (look Ma – no code!) does not hold up well to attempts to maintain it. It allows hidden complexity to creep in while you work around the tooling to fix a bug or add a feature. Before you know it the whole stack of software is hard to debug or add to so nobody wants to do it.
This is why developers fight against having to do maintenance – because they have made it hard on themselves. Developers would like their jobs better if they built for maintenance instead of trying to meet aggressive deadlines.
I was asked to be on the Community Megaphone Podcast. Andrew Duthie (@devhammer)and I had debated Software Craftsmanship back in November or October via twitter and of course you can’t debate very well in 140 character shots. So we decided to have a panel discussion for the Community Megaphone Podcast at the NoVa Code Camp 2010.2 in December. It went reasonably well (you can find it here) but we couldn’t get into too much depth. After the panel, Andrew and I talked in the hallway for a while and that lead to him asking me to be on the show as a guest.
We recorded the show right as the Software Craftsmanship debate was hitting the social networking fan. It was a good discussion. And now you can hear it. I open up really rough with lots of bad speech habits, but after I settle in I’m not so bad.
All these manifestos to sign – I’m starting to feel like I’m selling out my quasi-libertarian belief system. 🙂
Seriously, though, another software “contract” that makes sense – its really an extension of the Agile Manifesto: The Manifesto for Software Craftsmanship. It make sense to me – we are letting ourselves, our peers, and our projects get burdened down with massive technical debt. Time to resolve to stop letting that happen. Go sign it now!