Effectively Manage the Deliverables

Ernani Marques da Silva, MBA, PMP, PgMP Mairipora, Sao Paulo, Brazil

Projects are comprised of a set of deliverables which, when completed, generate the completion of the whole product, service or result. For software development projects, integrating all of components will be crucial for the final result to work properly. The components, of course, vary depending on the kind of software you are building. So, the deliverables are the major components which should actively be planned, controlled, monitored, and managed.

Identify the deliverables. Identified deliverables outline the full solution, identify the order in which they should be created and delivered, identify metrics that should be used to monitor and control their development and delivery, and actively monitor their progress against the planned baseline and metrics defined.

It is very important to break deliverables into partial packets of code, each created to provide a special software function. This is especially important for complex projects/environments and projects developed by third parties. Do not wait to receive the full work package at the end. It is a good practice to arrange for the delivery of project parts bit by bit, and follow a pre-planned process to deploy them to other members of the software team for use in their own development work.

Monitor and control the deliverables. Once you have defined the means by which the work packages (functional code bits) will be built, monitored, and controlled; actively monitor and control the building phase to check whether the work is being done as planned. Check points, metrics, and key performance indicators (KPIs) should be shared with all projects team members.

At the check points, the KPIs and metrics should be evaluated against the baseline and trend analysis done in order to identify variances. This way corrective action can be done based on actual metrics, rather than hunches or hearsay.

Manage the Deliverables. Once the anticipated work is delivered, the code should be tested and deployed to a small group of users in order to verify it complies with requirements before it can be considered finished. This approach helps identify problems so that corrective action can be taken before the software is deployed to the entire user group.

Throughout this approach, it is very important to remember that all mini-deliverables will be ready in phases and they should be tested in an integrated fashion (like a wave). If you wait until the full code set is delivered, you can receive a body of code with a lot of unknown errors/defects or unexpected behavior. Because the product/service/result was build with these issues inside, their effect is both buried and multiplied. The cost and the time spent in order to fix all non-working code at this point can be very high.

You can balance and examine the vendor's experience in your company's environment and in the system against the complexity required by development and decide whether this approach should be good for you or not. In general, it is most useful for complex solutions or for new technology/new solutions.