The Software Change Funnel

As the software lifecycle progresses, imagine a funnel growing ever smaller. The funnel can help control potential changes as time goes forward. Changes are fewer. The goal of releasing value is preeminent.

The Wide Beginning

Creation starts with discovery. We're talking to clients. We're communicating with lo-fidelity prototypes -- whiteboard drawings, paper sketches, quick mockups. The cost of change is low. We have company meetings. If someone wants a stake in what we're building, we're accomodating. We want input from many. We're trying to get a good start on the product and lots of good course corrections up front that will make large differences in where we could potentially end up down the line.

We release many times. We go early and often. The first releases are more experimental because we've never done this before. A release (usually) means real software. Real software is more expensive to make and harder to change than prototypes. We pay this price in order to confirm whether or not what we decided to build, when it really comes down to using it, is what we needed to build. We should be comfortable with adjusting.

The Narrowing End

Software is never really done. But the "end" that we're progressing toward here is a final, or 1.0, release of your software. Your user reach is pushing to 100%. Your feature set is coming complete. Here there are not company-wide meetings. We are purposefully reducing the number of daily voices influencing the project. Stake holders need to trust and let go. Let the creation happen.

It's a good sign if we feel our earlier adjustments have changed the software into something more solid. We should be more sure, not at the same level of uncertainty as before. We narrow our own focus. The cost of change is way up now. It should be a big deal to change stuff, because it usually is -- a big deal. We're in finish mode.

There will be more to do after this. There always is. Let's release this thing so we can get on to starting a new funnel on the next thing.

Finish Experiments

We're always doing things we've never done before. We are always learning. It's natural to not feel satisfied. We push ourselves. We're artists. We can get halfway into a project and have either a new epiphany or serious doubts. We get better ideas. Our tastes evolve. We realize this is not our best work. Later in the funnel, this can be very costly. We endanger our own ability to deliver value.

If we short circuit the release by willfully changing deliverables in large ways, we stop the delivery of value. This goes against the ideas of continuous delivery. We keep value from reaching our customer. We should feel uncomfortable doing major revisions on things that aren't even released. We should honestly introspect about where these proposed changes are coming from. Are they coming from clear feedback from customers? Or are we molding that feedback to meet our own new desires, ideas, or tastes? We've come this far, let's actually do it -- release it!

Barring compelling info that what you are about to release is going to flop, keep going! Have the courage to deliver your vision. Have the focus to not change your mind about the product that you at one point had confidence in. Your customers will likely thank you.

How do you keep your project on track as it nears the finish line? Do you find yourself having major (perhaps unfound?) reservations and needing to focus so-as not to derail delivery?