Tuesday, January 31, 2006

Software Project Management – shifting from a directed to a collaborative model

When software development started, they used the existing project management techniques. Those tools and techniques worked well for people constructing buildings, but they did not provide good tools for managing software projects. Using the standard water fall method, each step was completed, leading in a straight line to project completion. I know that this is a simple view. Some of the steps had overlaps so that the proceeding step could start before you finished the previous step. But, in general, the assumption was that all the requirements could be started at the beginning and that they changed slowly. People had thousands of years of experience interacting with and creating buildings. Not only is software a relatively new area, it is rapidly changing.

Dr. Barry Boehm published a new approach, the Spiral Software Development model, in 1988. This was a way to address the IKIWISI syndrome ("I can't tell you, but I'll know it when I see it”). In recent years, a number of new techniques have been created to address the problem of the customer not being able to give you all the requirements since they do not know all the requirements at the start of the project. Most of the techniques try to address this problem by developing what you know as fast as you can, so that you can present it to the customer. As the customer sees more of the software “functioning”, they can do a better job of clarifying the requirements. This happened in the earlier methods but was seen as “scope creep”. Due to this new information and requirements appearing late in the development, it was very costly to add the changes. That created an elaborate change management system which tried to reduce the number of changes.

The biggest change that has occurred from using the new methods is that the relationship between the project team and the customer has shifted. Instead of the project team being directed by the customer, we have shifted to a collaboration model where the project team and the customer work together. This is an important and critical change if we want to develop complex software projects that will be usable and support the business goals. The software project manager’s work shifted from coloring in triangles on a chart and driving work to fit to the plan, to that of a navigator.

As the project navigator, the job is to scan the horizon for changes, work with the customer to determine if the change impacts their goals, and then using that information to keep the project team on course. Continuous collaboration is now the key skill of the software project manager. The shift in the role of the customer means that they need to be more involved and need to work with the development team to surface decision points, eliminate undocumented programmer assumptions, and understand the trade-offs.

The current methodologies and techniques all work well in specific situations. Selecting the one best one will depend on the business culture and processes, the training and flexibility of the team members, and whether the requirements will change over the course of development. No matter which one you use, the software project manager has to keep the customer engaged and involved.



Technorati tags: ; ;