Chapter 18. Delivering working software

If the Acme Media team decided to track their pilot project in a project tool, they would say that the project is around 50 percent complete. Fifty-percent complete sounds good. You’re halfway there. You can tell your stakeholders that you’re on schedule and they don’t need to worry about anything. But this is where things change in an agile environment.
In an agile environment, you measure status by working code. Knowing if a project is feasible is a good thing. Doing initial planning is a good thing. But to this point, you haven’t delivered any value to the customer. From a customer perspective, you have a project status of 0 percent.
In agile, you get to working code quickly by using iterative development and building to the minimum specification. You deliver the most valuable software in prioritized batches. You do your best to make each batch contain enough functionality for it to be a deployable subset of features.
Iterative development works because it supports the realities of software development. You can’t forecast all the variables, but you can make sure you deliver critical functionality as quickly as possible.
This chapter begins with a discussion of the agile development principles and how Acme Media has embraced them. You’ll see the principles in action as we follow Acme through its development iterations. We’ll contrast these principles to Acme Media’s legacy processes.