Working Software Is the Primary Measure of Progress
“Working software is the primary measure of progress.”
Measuring progress on a software development project can be difficult and problematic. The traditional method is to break a project into tasks and track percent completion of those tasks as a way to measure progress; however, that can be very misleading, because often the list of tasks is incomplete and the level of completion often requires some subjective judgment, which is difficult to make and often inaccurate.
Testing is another factor in this — very often in the past, the entire development process and the testing process might have been sequential. The result is that even though the development of the software might have seemed to be complete, you don’t know how complete it really is until it has been tested and validated to be complete. An agile approach emphasizes doing testing much more concurrently as the software is developed. There is a concept in agile called the definition of done that you will hear quite often. The team should clearly define what done means — it generally means that the software has been tested and accepted by the user. In other environments, the definition of done might be a lot more ambiguous and subject to interpretation. If you don’t have a clear definition of done, any estimate of percent complete is likely to be suspect.
A more accurate measure of progress is to break up a software project into chunks of functionality where each chunk of software has a clear definition of done and can be demonstrated to the user for feedback and acceptance.