My Stuff

2010 Conferences

OSGi DevCon @ JAX London

February 23 - Keynote titled OSGi in the Enterprise: Agility, Modularity, and Architecture’s Paradox

EclipseCon

March 22 - 25 - Tutorial on Modular Architecture

Tweets @ Twitter

Why must I be logged in to Google to simply view the #nexusone http://www.google.com/phone... They wanna know what I'm looking at? #odd 3 days ago

RT @nhajratw enlightening and surprising post on #lean swdev at #toyota http://bit.ly/cmgGAp #agile 3 days ago

Whoa... Just had major epiphany. Big lightbulb just came on. Blog post to follow soon. 4 days ago

#apple selling 25,000 iPads per hour. http://bit.ly/bpgr3R 1 week ago

Cost of U.S. Census http://bit.ly/9AsimE Let me help. Select COUNT(distinct id) from the_people; I'll take my 14 billion now! 1 week ago

LinkedIn Profile

The opinions expressed on this site are my own, and not necessarily those of my employer.

When Bad is Good

Filed Under Agile, Development |  

A thought on a dreary Friday. There are two types of software projects - those that go well and those that do not. Typically, we think of those projects that go well as successful, and those that go poorly as failed. But it’s not quite that simple. What matters most is the point at which things go poorly and the point at which things are going well.

I’ve been on projects where we have lots of parties to celebrate our success. We’ve signed off on requirements. Throw a party. We’ve just passed our architectural review. Another party. We’ve just completed coding and testing commences next week. After that, we’re going to demo the system to out customer. Party again. At this point, we might be six, nine, or twelve months into the project.

I’ve been on other projects where we spend a lot of time developing infrastructure code early, and continuously troubleshoot complex problems. We host frequent customer demonstrations, and receive a lot of feedback - not all of it entirely positive. We fight through tough integration challenges, feel like we’re constantly revamping the user interface, and the build fails a few times a week. Testing occurs frequently and is always turning up bugs. There aren’t any parties, and it’s a lot of work. People grow frustrated at times, and friction between team members needs to be carefully monitored. This might go on for six, nine, or twelve months.

I’ve found projects that experience significant challenges early often go one of two ways. They either get canceled early or wind up delivering some pretty good software. These are good things. Projects that get cancelled early save an organization from making a significant investment in a project that’s going to fail. Win fast. Fail fast. And move on!

Ideally, of course, the project wouldn’t get cancelled and the team would go on to deliver a great piece of software. Even in this situation, the team has fought through significant issues early in the lifecycle, and eventually they discover their rhythm. Development starts to click and progresses at a relatively sustainable pace with few late surprises.

On the other hand, projects that seem to be running smoothly early typically experience significant issues late in the software lifecycle because they’ve delayed attacking high risk items. This is a worst case scenario. We’ve now made huge investment and have crappy software.

All in all, this is one of the most significant benefits of agile practices. They encourage us to write code early, ensure the system is always functional, share the system with users, and a whole lot more. In general, this mitigates a lot of serious risk that goes unnoticed on projects that delay these activities until late in the lifecycle. And it allows us to continuously evaluate the project and determine if it’s wise to proceed or allocate resources differently. In the end, our customers aren’t going to remember how well the project was going six months ago. What they are going to remember is if we were able to deliver a great piece of software.

Comments

One Response to “When Bad is Good”

  1. Dew Drop – Weekend Edition – July 18-19, 2009 | Alvin Ashcraft's Morning Dew on July 18th, 2009 8:36 pm

    [...] When Bad is Good (Kirk Knoernschild) [...]

Leave a Reply