Periodically I like to revisit our project life cycle in patterns & practices. I like to see how it's shape-shifted over the years. (Note - our project life cycle wraps our product cycle)
patterns & practices Project Life Cycle Circa 2005
Here's a snapshot of our patterns & practices project life cycle circa 2005:
I used this as a baseline to reflect against. Here are the phases, stages, and milestones:
Projects cycled through the following phases:
- Iteration 1
- Iteration N
- Final Test and Edit Pass
The milestones included:
- Proposal Approved
- Vision Scope Approved
- M0 (Milestone Zero) / Specifications Approved
- Technical Review and Solution Approved
- Test and Edit Complete
- Go / No Go
- Customer Availability
Three Things That Worked Well
Here's three things that worked well with the original project cycle:
- There were clear phases, stages, milestones, and deliverables, along with criteria.
- The project cycle was decoupled from the product cycle. This gave management a simple frame for understanding projects. This also gave each project flexibility to choose the most appropriate software development methodology depending on the product.
- There was sufficient time between key milestones to provide a frame + air-cover. This helped avoid randomizing engineering and being able to see the forest from the trees.
Additionally, the key milestones such as Vision Scope and MO were something of a ceremony and tended to include the right representation across the p&p team.
Three Things That Needed Improvement
Here's three things that needed improvement:
- It was a lot of overhead for smaller projects. It worked well for larger programs (collections of projects), but it was tougher for individual projects.
- It was tough to bootstrap projects. M0 and Vision/Scope could be especially tough. In retrospect, there were two key issues: 1) asking the right questions at the wrong time (premature) 2) chickens with controlling votes over pigs. (See Turning Chickens Into Pigs.)
- There was too much agreement up front, with not enough ability to coarse correct in the later stages/phases (needed more agility)