I started writing this post a few weeks ago and since then been in several conversations around the same area, so thought I’d get on an finish it:)
What is the key focus of agile practices ?
To me, it is Delivery of working software.
What do we mean by “delivery” ?
Delivery is software working in production. Even stronger, software that is being used in production.
What does “working” mean ?
This may depend on the currency you have for measuring success. Usually it means improving the bottom line of the company. It might be indirect such as generating interest for a website or simply getting a product delivered at all.
My definition of “Lean” may not be entirely accurate (I’m not an expert) but from my understanding, taking a lean approach, writing the code is only part of the story.
Lean tells us that there is no point in having a backlog of artifacts in the factory if we can’t get them to the customer. We need a good distribution system so that artifacts are pulled down the pipeline as quickly as possible, right from where they are consumed.
For software this means the production environment. Really the production environment, not staging or the ci environment or a dev box.
Setting up the distribution pipeline is as important as any other part of the project. It needs to be automated, reliable and responsive (i.e. as soon as a new feature is required it can be sucked into production as soon as its completed)
Once your delivery pipeline is in place everything else becomes smooth. People stop worrying that they are not going to receive new features quickly and so they feel more able to focus on what the need right now, in smaller chunks which means the delivery system flows more smoothly and the features are produced in a more responsive way.