How to release 2 years of unfinished code, the "Agile way"
April 3, 2022Unfinished code is like old parts in a warehouse.
I was recently conversing with someone who just joined a new team. This new team has been working on a new software project for about 2 years, and they haven’t released anything yet. Now management has decided it’s time to release something, and the team has 8 weeks to get something out the door.
How would you address this situation?
Take a moment and consider, if you like. I’ll wait.
So what did you come up with?
I, and the others talking with this person, came up with a few pieces of advice. I’ll mention some of them briefly. Let me know if you agree or disagree, or what you might do differently.
Release something ASAP.
Even if it’s just a version bump. The goal here is to prove that the release process works. If the team waits until week 7 or 8 to relese, they’re likely to find that unexpected things are broken, and they’ll end up behind schedule.
Treat the last 2 years worth of code as “warehouse of old parts”
That is to say: Don’t try to force the 2 years worth of code into production. Instead, put it to the side, and essentially start over, using an agile approach of building one valuable thing at a time. As you do this, feel free to rummage through the “warehouse of old parts” and pull in bits and pieces that are relevant, of course.
Don’t make an 8-week plan.
It may be tempting to say “We have 8 weeks, what can we commit to in this time frame?” A better approach is to instead identify the single most valuable thing that can be delivered to clients, and deliver that as quickly as possible. Then repeat. Using this approach, when the 8-week mark has arrived, you can be guaranteed that the customer has received the most valuable features possible in that timeframe, without wasting time on planning and guessing.
There’s a ton more that could be said. Unless/until I hear back from this person in 8 weeks time, it’s a hypothetical from my standpoint. So it’s fair game for any other suggestions. I’d love to hear yours!
Incremental software delivery makes deadlines (almost) meaningless
If you deliver value incrementally, you get scope cutting for free. With or without a deadline.
So do you expect me to write a blank check?
If we don't know when a software project will be done, how do we know if it's worth the investment?
Velocity, capacity, and unplanned work
Velocity usually includes unplanned work, which limits its usefulness for capacity planning and forecasting.