Perfect Software – The Enemy of Rapid Delivery?

We all want things to be perfect, right?  But are we making software delivery much harder for ourselves in the strive for perfection?

perfect

But, who is it that defines perfect?  Is it the Architect?  The Product Owner?  Maybe… Who knows! – it seems to differ from one organisation to the next.  Whose version of perfection are you trying to meet?

Imagine a scenario where you are unable to release version one of your software because your architect is demanding answers about version 2 and 3 – which you know that you’re never likely to get to anyway.  You’d be feeling pretty frustrated.  On the flip side, being prompted about the plans for V2 could mean you totally rethink the way you’ve done V1, saving time and effort later.

magic8ballDontCountOnIt

 

Then someone says “Make it future proof”.

What does this even mean?

And is that future ever going to come?

 

 

In a perfect world, to be able to release perfect software we would need to make small changes regularly rather than large releases.  We would also need to have full control over:

  • The requirements
  • The development and test environments
  • The target environment
  • The release mechanism
  • Probably the users too…!

So rather than perfect, should we be striving for Good Enough?  It will depend on the team culture and how risk averse the company are.  This can be influenced by how quickly problems can be fixed, the size of the user base and how exposed any issues would be.  During Spotify’s video describing their engineering model (here) they talk about one of their motto’s – “Never Wrong Long”.  They can release more frequently because wherever possible they deal in small changes rather than large projects.  They also have the advantage that their architecture is decoupled enough that any problems would have a smaller area of impact and any problems can be resolved quickly.

So, is perfect software the enemy of rapid delivery?  It depends on many factors.  It seems to me that the ideal would be to have small, frequent, iterative deliveries that are quick and painless to release – then if it doesn’t meet someone’s idea of perfect, it can be quickly revisited.

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s