Why Working Software is a Key Agile Principle

Why is working software one of the primary principles of Agile?

Because when we deliver something that was asked for we may or may not have gotten it right.

I know from my experiences the vision that someone has in their mind about how something should work doesn’t always align with what the development team has delivered.

Working software provides value to the development process by providing feedback – you asked for this now I delivered it.  Now you provide feedback – I asked for this but it isn’t working exactly the way I wanted to.

Agile accepts changing requirements as part of continual interaction between the customer(end-user) and the development team.  This is what we mean by accepting change as part of Agile.

Instead, this mindset is often I think taken as, I provided a large business requirements document that you must work from and commit to upfront, but at any time late in the project, I can change my mind about what I want and no matter the impact it causes you told me Agile accepts change. 

If that is your idea of accepting changing requirements late in the game, then you are playing the wrong game.

If your organization isn’t changing their engagement model to support these continual interactions between your users (or their proxy PO and business leadership) and development team and instead saves any interaction until near the end of the project, then all you have successfully done is shorten the cycles by which you are working in Waterfall, delivering your large project in 2-week increments and waiting until the end to review what the team has delivered and at that point telling us we didn’t get it right.

There is a reason that most of the Agile frameworks provide varying levels of engagement, from the team up to leadership.  The Agile Manifesto Principles expressly identify the value that can be delivered by having a high level of engagement – ‘Business people and developers must work together daily throughout the project.’

So if you are already working in Agile or considering adopting Agile as your delivery model then you must change the way you engage with the process if you want to have real success in your Agile adoption.

I still see too many organizations that have very little engagement with reviewing the work that their teams are delivering which means that we end up having a disconnect between the requesting and delivery process, which will cause lower productivity and quality while delivering lower levels of value.