Time for a Change in Principles?
Oct 07, 2016 · Tony O'Halloran
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...