Steve McConnell has a book on project survival skills. 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 plan
Empower team
Minimize bureaucracy
Define the requirements baseline and manage changes to it
Perform periodic reviews of endeavor’s health and progress, and adjust approaches as necessary
Re-estimate system size, effort, and schedules 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 assures success



