Time for a Change in Principles?

As Agilists, our principles and values underpin the way we work and decisions we make. A good principle should be timeless and non-prescriptive enough to be valid across many contexts, but specific enough to add practical value and help us make decisions.

 

I feel that one Agile Manifesto principle in particular has frustratingly failed to stand the test of time:

 


“Working software is the primary measure of progress”


 

I disagree strongly. Working software is only a measure that more software exists, which is not the same thing as progress!

 

The existence of more software is only an indicator that there are more lines of code to maintain, more complexity to be managed and (probably) more unused features that your product just doesn’t need. In fact, more working software is actually a financial expense. That expense is only justified if it significantly moves us forward and helps us achieve our organisational goals.

 

The Agile Manifesto was written in 2001, when the world of software development was a vastly different place. Stage-gate dominated delivery practices, project completion times measured in years, and slow to non-existent feedback cycles were commonplace. Developing software was complicated, slow, and most projects stalled even before delivering any value to users.

 

At the time, software development was primarily structured in projects, and progress was measured by measuring the completion of planned tasks against a plan. Frequently, we would only find out if we had something that actually worked at the very end of the project.

 

As a reaction to this, the Agile Manifesto recognises that until working software has been produced we haven’t achieved anything. Completed tasks on a Gantt chart don’t delight your users or ultimately make you any money. In that context—as a reaction to the status quo—the principle seems to makes complete sense.

But is it still as relevant today?

 

Simply producing working software isn’t any guarantee that your risk profile has changed at all. Working software isn’t the primary measure of progress, it’s simply a tool you can potentially use to measure the only progress that matters; impacts and business outcomes.

 

We are not here to simply deliver more software, or add more lines of code. The ultimate measure of progress is that we have changed people’s lives, or affected the world in some way. There should be a measurable outcome or impact for everything we build, or else why bother?

 

Delivery is no longer the problem

 

Fortunately, we live in a world where in the main delivery is no longer the bottleneck. We now know how to deliver working, high-quality software within a matter of days or weeks. Many organisations can, when required, make a change to their product with a lead time measured in minutes, not months. Delivery is no longer the problem.

 

So what could replace “working software” as the primary measure of progress?

 

Observed business value possibly? Not very refined or engaging…

 

One candidate is certainly Learning. Has a team made progress if they have validated whether there is a market for what they’re planning, without even writing a single line of code? Certainly. So how about:

 

“Learning, backed by experimentally acquired data is the primary measure of progress”.

 

Is simply Learning enough to count as progress though, especially as the primary measure?

 

What do you think? Fill in the blanks and let me know in the comments…


“_______ is our primary measure of progress”


Further Reading

 

 

Tony O'Halloran
9 Comments
  • Whilst some orgainsations can declare that “delivery is no longer the bottleneck” that’s still not universally true. I feel it (Working software is the primary measure of progress) still has relevance. That said, I can definataely see how you might start to think of it as dated. I think it still has some value as a basic concept that suggests positive change – it unambigiously sets a worthwhile goal for those not so far up the maturity curve.

    What you measure in order to determine “progress” depends on your point of view, and what you hold to be important. As a member of a team you might argue that work completed (e.g stories or points) was a sufficient measure of progress – but that’s a delivery centric point of view. Doesn’t it also depend on what you’re wanting to apply the manifesto, and Agile, to? If you are most concerned with delivery, then maybe it’s not so far off; but if you’re talking about values, which are intangible, then that’s an entirely different ask.

    Anyway – good thought provoking post.

    October 7, 2016 at 2:32 pm
  • The working in working software is the key here I think. Software which is not fit for purpose surely cannot be called working. Maybe this is what I read into the manifesto but surely this is what was always intended. Otherwise it would just read: software is the primary measure of progress. However CHALLENGE ACCEPTED maybe an improvement is: Software which achieves primary business goal and exceeds customer expectations is the primary measure of progress. Hmm not very succinct.

    October 7, 2016 at 11:05 pm
  • Gavin
    Reply

    I think this principle is complemented by another, “our highest priority is to satisfy the customer through early and continuous delivery of valuable software”. So not only do we deliver working software, but valuable software.

    I see the principles as a great foundation, and the finesse involved in making them work is where the fun starts. Taking any of them at face value could be harmful at times.

    October 10, 2016 at 10:37 am
  • Nick Allan
    Reply

    I am looking forward to hearing the founder of Modern Agile, Joshua Kerievsky, deliver his Modern Agile talk (http://bit.ly/2dXwjM9) and course (http://bit.ly/2drUgL4) in November. It was the highest rated keynote at Agile Alliance US conference this year and is quite thought provoking. Bring it on!

    October 11, 2016 at 2:01 pm
  • It’s also worth considering that as Agile goes more mainstream it will eventually find its way into areas beyond software delivery, in those contexts working software will definately not be the primary measure – in such cases I guess it will make sense to replace “working software” with whatever you’re aiming for; “sparklng unicorn tears” perhaps?

    October 14, 2016 at 3:54 pm

Post a Comment