Chapter 33. How Do You Define "Finished"?

Brian Sam-Bodden

image with no caption

IT IS HARD FOR A SOFTWARE DEVELOPMENT TEAM TO SUCCEED if there isn't a clear definition of what success means. For developers, success entails delivering a product that meets customer expectations. However, to define total project success, we need an accurate, shared definition among the larger project team of what it means to "finish the project."

To embrace the overall project scope, the core tenet of traditional, iterative software development is "divide and conquer." The project is broken into deliverables, which are then divided into work packages. Those are ultimately broken into activities assigned to a specific person.

Using an agile approach with one- to several-week iterations, or work periods, the necessity to consider overall project scope can be masked. Finishing the goals of one iteration can be clearly set out as creating working software that passes unit tests, possibly clears limited integration tests, and allows promised software features to be demo'd to the stakeholders for their approval and feedback.

The problem is that at the macro level, a project has many other considerations beyond the code and its accompanying tests. Using the traditional waterfall method, testing was relegated to the end of a project and became a flaw in the process. In a more agile approach, developers may erroneously defer or dismiss ...

Get 97 Things Every Project Manager Should Know now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.