Survival is only an option
Steve McConnell has written this book on project management for leads and managers. There isn't really much that's software-specific here, but as usual, Steve presents an organized and convincing approach for using a disciplined engineering process for product development, and backs up his recommendations with convincing facts and data. The material is presented effectively by starting with various stakeholder's perspectives - the team member, the customer, and the manager - and introducing the notion of a 'survival checklist' to determine how prepared the project is for the hazards which it likely will encounter. From that 'self-assessment', specific guidance is then offered ('survival skills') in the following areas:
Planning
- Hitting a moving target
- Requirements Development
- Quality Assurance
- Architecture
Phased Development
- Detailed design
- Construction
- System testing
- Release
My favorite part of this book is the 'crib notes' section, in which Steve summarizes a set of "dos and don'ts" from the Software Engineering Laboratory at NASA's Goddard Space Flight Center:
Do's for software success
- Create and follow a Software Development Plan
- Empower Project personnel
- Minimize the bureaucracy
- Define the requirements baseline, and manage changes to it
- Take periodic snapshops of project health and progress, and replan when necessary
- Reestimate system size, effort, and shcedules periodically
- Define and manage phase transitions
- Foster a team spirit
Don'ts for Software Success:
- Don't let team members work in an unsystematic way
- Don't set unreasonable goals
- Don't implement changes without assessing their impact and obtaining approval of the change board
- Don't gold-plate
- Don't overstaff, especially early in the project
- Don't assume that a schedule slip in the middle of a phase will be made up later
- Don't relax standards in order to cut costs or shorten a schedule
- Don't assume that a large amount of documentation ensures success

