Mini Process
4/20/99 - Jack Harich
One of my lastest reads is "Rapid Development" by Steve McConnell, author of the classic Code Complete. This is state-of-the-art coverage of the software developement techniques that impact throughput heavily.
On page 61 Steve tells a story from an article by Larry Constantine. It's about the 1995 Australian Computer Society Software Challange, where 3 person teams develop a 200 function point application in 6 grueling hours.
"The team from Ernst and Young decided to follow a formal development methodology - a scaled down version of their regular methodology - complete with staged activities and intermediate deliverables. Their approach included careful analysis and design - part of what this chapter describes as technical fundamentals. Many of their competitors dived straight into coding, and for the first few hours, the team from Ernst and Young lagged behind. By midday, however, the Ernst and Young team had developed a commanding lead."
This, I thought, was very interesting. I've long been using a personal process with discrete steps and deliverables, even on very small subsystems or small rewrite work. I'd never seen anything like this mentioned for "small" work.
Once I begin to doubt the usefulness of my approach, so I alternated using it and not using it for awhile. Boom! It was obviously productive. Formal use cases and models brought great clarity to big problems that were solved quickly as small projects. There was less rework also.
Here's my minimal, ultra-tiny process, for individuals or teams. Some steps are optional. Once you've tried this for awhile variations and improvements should be made, such as adding Strategy step 2.5, Requirements Validation step 11.5, User Validation (usability and beta testing) as part of your iterations or step 13, and Predicted Solution Value as step 14. The last exhaustively reviews your requirements, output, and User Validation results, and comes up with a predictive rating of Perceived Solution Value. This can be compared to later post shipment Perceived Solution Value ratings from users, giving you early and late feedback loop data for your process.
Step |
Process Element - (Version 4/20/99) |
Relevance |
1 |
Nutshell Vision - Sentence or paragraph capturing the pure essence and goal | Required |
2 |
Narrative - Describes what the system must do, key features, issues |
Optional |
3 |
Use Case List or "Standard Use Case(s)" for frameworks | Required |
4 |
Major Use Cases stepped out - List all steps for crucial or fuzzy cases | Required |
5 |
Trait List - Features applying to many use cases, such as speed, security, usability |
Optional |
6 |
Risk Management - Identification, ranking, resolution |
Optional |
7 |
Risk Reduction - Prototypes, GUI sketches or Visio, test classes, etc |
Optional |
8 |
Models - Conceptual Model, Class Diagram or other types | Required |
9 |
Implementation Plan - A series of steps to implement the model(s) |
Optional |
10 |
Implementation Iterations - Often with elaboration of above steps per iteration | Required |
11 |
Unit Tests - Usually run per iteration, may be part of Full Regression Test | Required |
12 |
Integration Tests - And more types of validation if you're really mature! :-) |
Optional |