You are previewing Rapid Development: Taming Wild Software Schedules.
O'Reilly logo
Rapid Development: Taming Wild Software Schedules

Book Description

Corporate and commercial software-development teams all want solutions for one important problem—how to get their high-pressure development schedules under control. In RAPID DEVELOPMENT, author Steve McConnell addresses that concern head-on with overall strategies, specific best practices, and valuable tips that help shrink and control development schedules and keep projects moving. Inside, you’ll find:


  • A rapid-development strategy that can be applied to any project and the best practices to make that strategy work

  • Candid discussions of great and not-so-great rapid-development practices—estimation, prototyping, forced overtime, motivation, teamwork, rapid-development languages, risk management, and many others

  • A list of classic mistakes to avoid for rapid-development projects, including creeping requirements, shortchanged quality, and silver-bullet syndrome

  • Case studies that vividly illustrate what can go wrong, what can go right, and how to tell which direction your project is going

  • RAPID DEVELOPMENT is the real-world guide to more efficient applications development.

  • Table of Contents

    1. Rapid Development: Taming Wild Software Schedules
      1. Preface
        1. Who Should Read This Book?
          1. Technical Leads
          2. Individual Programmers
          3. Managers
        2. Key Benefits of This Book
        3. Why This Book Was Written
        4. Acknowledgments
      2. I. EFFICIENT DEVELOPMENT
        1. 1. Welcome to Rapid Development
          1. What Is Rapid Development?
          2. Attaining Rapid Development
        2. 2. Rapid-Development Strategy
          1. General Strategy for Rapid Development
          2. Four Dimensions of Development Speed
            1. People
            2. Process
            3. Product
            4. Technology
            5. Synergy
          3. General Kinds of Fast Development
            1. Efficient Development
            2. Efficient Development Tilted Toward Best Schedule
            3. All-Out Rapid Development
          4. Which Dimension Matters the Most?
          5. An Alternative Rapid-Development Strategy
          6. Further Reading
        3. 3. Classic Mistakes
          1. Case Study: in Classic Mistakes
          2. Effect of Mistakes on a Development Schedule
          3. Classic Mistakes Enumerated
            1. People
            2. Process
            3. Product
            4. Technology
          4. Escape from Gilligan's Island
            1. Your Own List of Worst Practices
          5. Further Reading
        4. 4. Software-Development Fundamentals
          1. Management Fundamentals
            1. Estimation and Scheduling
            2. Planning
            3. Tracking
            4. Measurement
            5. Further Reading on Management Fundamentals
          2. Technical Fundamentals
            1. Requirements Management
            2. Design
            3. Construction
            4. Software Configuration Management
            5. Further Reading on Development Fundamentals
              1. Requirements management
              2. Design
              3. Construction
              4. Software configuration management (SCM)
          3. Quality-Assurance Fundamentals
            1. Error-Prone Modules
            2. Testing
            3. Technical Reviews
              1. Walkthroughs
              2. Code reading
              3. Inspections
              4. Comment on technical reviews
            4. Further Reading on QA Fundamentals
              1. General software quality
              2. Testing
              3. Reviews and inspections
          4. Following the Instructions
          5. Further General Reading
        5. 5. Risk Management
          1. Elements of Risk Management
            1. Risk Assessment
            2. Risk Control
          2. Risk Identification
            1. Most Common Schedule Risks
            2. Complete List of Schedule Risks
          3. Risk Analysis
            1. Risk Exposure
            2. Estimating Size of Loss
            3. Estimating Probability of Loss
            4. Total Project Overrun and Buffers
          4. Risk Prioritization
          5. Risk Control
            1. Risk-Management Planning
            2. Risk Resolution
            3. Risk Monitoring
              1. Top-10 Risks List
              2. Interim Postmortems
              3. Risk Officer
          6. Risk, High Risk, and Gambling
          7. Further Reading
      3. II. RAPID DEVELOPMENT
        1. 6. Core Issues in Rapid Development
          1. Does One Size Fit All?
          2. What Kind of Rapid Development Do You Need?
            1. Products with Strong Schedule Constraints
            2. Rapid-Development Look-Alikes
            3. So, Is All-Out Rapid Development Really What You Need?
          3. Odds of Completing on Time
          4. Perception and Reality
            1. Unrealistic Customer Expectations
            2. Overcoming the Perception of Slow Development
          5. Where the Time Goes
            1. The Classic View
            2. Soft Spots
          6. Development-Speed Trade-Offs
            1. Schedule, Cost, and Product Trade-Offs
            2. Quality Trade-Offs
            3. Per-Person–Efficiency Trade-Off
          7. Typical Schedule-Improvement Pattern
          8. Onward to Rapid Development
          9. Further Reading
        2. 7. Lifecycle Planning
          1. Pure Waterfall
          2. Code-and-Fix
          3. Spiral
          4. Modified Waterfalls
            1. Sashimi (Waterfall with Overlapping Phases)
            2. Waterfall with Subprojects
            3. Waterfall with Risk Reduction
          5. Evolutionary Prototyping
          6. Staged Delivery
          7. Design-to-Schedule
          8. Evolutionary Delivery
          9. Design-to-Tools
          10. Commercial Off-the-Shelf Software
          11. Choosing the Most Rapid Lifecycle for Your Project
          12. Further Reading
        3. 8. Estimation
          1. The Software-Estimation Story
            1. Software and Construction
            2. Software Development as a Process of Refinement
            3. Amount of Refinement Possible
            4. Estimation vs. Control
            5. Cooperation
              1. Convergence Between Estimates and Reality
            6. The Estimation Story in a Nutshell
          2. Estimation-Process Overview
          3. Size Estimation
            1. Function-Point Estimation
            2. Estimation Tips
            3. Estimate Presentation Styles
          4. Effort Estimation
          5. Schedule Estimation
            1. Commitment-Based Scheduling
            2. Jones's First-Order Estimation Practice
            3. Ballpark Schedule Estimates
            4. Background
              1. Schedules
              2. Efforts
              3. System sizes
              4. Small projects
              5. Lines of code
              6. Accuracy of the estimates
            5. Shortest Possible Schedules
              1. Assumptions
              2. Two facts of life
            6. Efficient Schedules
              1. Assumptions
              2. Relationship between shortest possible and efficient schedules
            7. Nominal Schedules
              1. Assumptions
              2. Why develop efficiently?
            8. What to Do First with the Ballpark Schedules
          6. Estimate Refinement
            1. Recalibration
          7. Further Reading
            1. General Estimation
            2. Function-Point Analysis
        4. 9. Scheduling
          1. Overly Optimistic Scheduling
            1. An Example of Overly Optimistic Scheduling
            2. Root Causes of Overly Optimistic Schedules
            3. Effects of Overly Optimistic Schedules
            4. Excessive Schedule Pressure
            5. The Bottom Line
          2. Beating Schedule Pressure
            1. Principled Negotiation
            2. Separate the People from the Problem
            3. Focus on Interests, Not Positions
            4. Invent Options for Mutual Gain
            5. Insist on Using Objective Criteria
          3. Further Reading
        5. 10. Customer-Oriented Development
          1. Customers' Importance to Rapid Development
            1. Improved Efficiency
            2. Less Rework
            3. Reduced Risk
            4. Lack of Friction
          2. Customer-Oriented Practices
            1. Planning
            2. Requirements Analysis
            3. Design
            4. Construction
          3. Managing Customer Expectations
          4. Further Reading
        6. 11. Motivation
          1. Typical Developer Motivations
          2. Using the Top Five Motivation Factors
            1. Achievement
              1. Ownership
              2. Goal setting
            2. Possibility for Growth
            3. Work Itself
              1. Opportunity to focus on the work itself
            4. Personal Life
            5. Technical-Supervision Opportunity
          3. Using Other Motivation Factors
            1. Rewards and Incentives
            2. Pilot Projects
            3. Performance Reviews
          4. Morale Killers
            1. Hygiene Factors
            2. Other Morale Killers
          5. Further Reading
        7. 12. Teamwork
          1. Software Uses of Teamwork
          2. Teamwork's Importance to Rapid Development
            1. Variations in Team Productivity
            2. Cohesiveness and Performance
          3. Creating a High-Performance Team
            1. Shared, Elevating Vision or Goal
              1. Challenging Work
            2. Sense of Team Identity
            3. Results-Driven Structure
            4. Competent Team Members
              1. Mix of Roles
            5. Commitment to the Team
            6. Mutual Trust
            7. Interdependence Among Members
            8. Effective Communication
            9. Sense of Autonomy
            10. Sense of Empowerment
            11. Small Team Size
            12. High Level of Enjoyment
            13. How to Manage a High-Performance Team
          4. Why Teams Fail
          5. Long-Term Teambuilding
          6. Summary of Teamwork Guidelines
          7. Further Reading
        8. 13. Team Structure
          1. Team-Structure Considerations
            1. Kinds of Teams
            2. Additional Team-Design Features
            3. Which Kind of Team Is Best for Rapid Development?
          2. Team Models
            1. Business Team
            2. Chief-Programmer Team
              1. Skunkworks Team
            3. Feature Team
            4. Search-and-Rescue Team
            5. SWAT Team
            6. Professional Athletic Team
            7. Theater Team
            8. Large Teams
          3. Managers and Technical Leads
          4. Further Reading
        9. 14. Feature-Set Control
          1. Early Project: Feature-Set Reduction
            1. Minimal Specification
              1. Problems with traditional specifications
              2. Creating a minimal specification
              3. Benefits of minimal specifications
              4. Risks of minimal specifications
              5. Keys to success in using minimal specifications
            2. Requirements Scrubbing
            3. Versioned Development
          2. Mid-Project: Feature-Creep Control
            1. Sources of Change
              1. Killer-app syndrome
              2. Unclear or impossible goals
            2. Effects of Change
            3. Wisdom of Stopping Changes Altogether
              1. Stable or not stable?
            4. Methods of Change Control
              1. Customer-oriented requirements practices
              2. Change analysis
              3. Version 2
              4. Short release cycles
              5. Change board
          3. Late Project: Feature Cuts
          4. Further Reading
        10. 15. Productivity Tools
          1. Role of Productivity Tools in Rapid Development
            1. Areas of Special Applicability
            2. Productivity Tool Limitations
            3. Ultimate Role of Productivity Tools on Rapid-Development Projects
          2. Productivity-Tool Strategy
          3. Productivity-Tool Acquisition
            1. Acquisition Plan
              1. Tools group
              2. Risks of setting up a tools group
            2. Selection Criteria
            3. Commitment
          4. Productivity-Tool Use
            1. When to Deploy
            2. Importance of Training
            3. How Much Schedule Reduction to Expect
          5. Silver-Bullet Syndrome
            1. Identifying Silver Bullets
            2. Biting the Bullet
          6. Further Reading
        11. 16. Project Recovery
          1. General Recovery Options
            1. Philosophy
          2. Recovery Plan
            1. First Steps
            2. People
            3. Process
            4. Product
            5. Timing
          3. Further Reading
      4. III. BEST PRACTICES
        1. Introduction to Best Practices
          1. Organization of Best-Practice Chapters
            1. Other Sections
          2. Summary of Best-Practice Candidates
          3. Summary of Best-Practice Evaluations
        2. 17. Change Board
        3. 18. Daily Build and Smoke Test
          1. Using the Daily Build and Smoke Test
            1. What Kinds of Projects Can Use the Daily-Build-and-Smoke-Test Process?
          2. Managing the Risks of the Daily Build and Smoke Test
          3. Side Effects of the Daily Build and Smoke Test
          4. The Daily Build and Smoke Test's Interactions with Other Practices
          5. The Bottom Line on the Daily Build and Smoke Test
          6. Keys to Success in Using the Daily Build and Smoke Test
          7. Further Reading
        4. 19. Designing for Change
          1. Using Designing for Change
            1. Identify Areas Likely to Change
            2. Use Information Hiding
            3. Develop a Change Plan
            4. Define Families of Programs
            5. Use Object-Oriented Design
          2. Managing the Risks of Designing for Change
          3. Side Effects of Designing for Change
          4. Designing for Change's Interactions with Other Practices
          5. The Bottom Line on Designing for Change
          6. Keys to Success in Using Designing for Change
          7. Further Reading
        5. 20. Evolutionary Delivery
          1. Using Evolutionary Delivery
            1. Release Order
            2. When to Use Evolutionary Delivery
          2. Managing the Risks of Evolutionary Delivery
          3. Side Effects of Evolutionary Delivery
          4. Evolutionary Delivery's Interactions with Other Practices
          5. The Bottom Line on Evolutionary Delivery
          6. Keys to Success in Using Evolutionary Delivery
          7. Further Reading
        6. 21. Evolutionary Prototyping
          1. Using Evolutionary Prototyping
          2. Managing the Risks of Evolutionary Prototyping
          3. Side Effects of Evolutionary Prototyping
          4. Evolutionary Prototyping's Interactions with Other Practices
            1. Relationship to Other Kinds of Prototyping
          5. The Bottom Line on Evolutionary Prototyping
          6. Keys to Success in Using Evolutionary Prototyping
          7. Further Reading
        7. 22. Goal Setting
        8. 23. Inspections
        9. 24. Joint Application Development (JAD)
          1. Using JAD
            1. JAD Planning
              1. Customization
              2. Session
                1. Timeline
                2. Facilities
                3. Roles
                4. Common problems
                5. What happens during a session
              3. Wrap-Up
            2. JAD Design
              1. Customization
              2. Session
                1. What happens during a session
              3. Wrap-Up
          2. Managing the Risks of JAD
          3. Side Effects of JAD
          4. JAD's Interactions with Other Practices
          5. The Bottom Line on JAD
          6. Keys to Success in Using JAD
          7. Further Reading
        10. 25. Lifecycle Model Selection
        11. 26. Measurement
          1. Using Measurement
            1. Goals, Questions, Metrics
            2. Measurement Group
            3. What to Measure
              1. Granularity
            4. Using the Data You Collect
              1. Pareto analysis
              2. Analysis vs. measurement
              3. Feedback
              4. Baseline report
            5. Limitations
          2. Managing the Risks of Measurement
          3. Side Effects of Measurement
          4. Measurement's Interactions with Other Practices
          5. The Bottom Line on Measurement
          6. Keys to Success in Using Measurement
          7. Further Reading
        12. 27. Miniature Milestones
          1. Using Miniature Milestones
          2. Managing Risks of Miniature Milestones
          3. Side Effects of Miniature Milestones
          4. Miniature Milestones' Interactions with Other Practices
          5. The Bottom Line on Miniature Milestones
          6. Keys to Success in Using Miniature Milestones
          7. Further Reading
        13. 28. Outsourcing
          1. Using Outsourcing
            1. Kinds of Arrangements
            2. Offshore Outsourcing
            3. Vendor Evaluation
            4. Contract Considerations
          2. Managing the Risks of Outsourcing
          3. Side Effects of Outsourcing
          4. Outsourcing's Interactions with Other Practices
          5. The Bottom Line on Outsourcing
          6. Keys to Success in Using Outsourcing
          7. Further Reading
        14. 29. Principled Negotiation
        15. 30. Productivity Environments
          1. Using Productivity Environments
          2. Managing the Risks of Productivity Environments
          3. Side Effects of Productivity Environments
          4. Productivity Environments' Interactions with Other Practices
          5. The Bottom Line on Productivity Environments
          6. Keys to Success in Using Productivity Environments
          7. Further Reading
        16. 31. Rapid-Development Languages (RDLs)
          1. Using RDLs
          2. Managing the Risks of RDLs
          3. Side Effects of RDLs
          4. RDLs' Interactions with Other Practices
          5. The Bottom Line on RDLs
          6. Keys to Success in Using RDLs
          7. Further Reading
        17. 32. Requirements Scrubbing
        18. 33. Reuse
          1. Using Reuse
            1. Using Opportunistic Reuse
              1. Adapt or salvage?
              2. Overestimated savings
              3. Experience with Opportunistic Reuse
              4. External reuse
            2. Using Planned Reuse
              1. Management considerations
              2. Technical considerations
          2. Managing the Risks of Reuse
          3. Side Effects of Reuse
          4. Reuse's Interactions with Other Practices
          5. The Bottom Line on Reuse
          6. Keys to Success in Using Reuse
          7. Further Reading
        19. 34. Signing Up
          1. Using Signing Up
            1. Signing Up in Different Environments
          2. Managing the Risks of Signing Up
          3. Side Effects of Signing Up
          4. Signing Up's Interactions with Other Practices
          5. The Bottom Line on Signing Up
          6. Keys to Success in Using Signing Up
          7. Further Reading
        20. 35. Spiral Lifecycle Model
        21. 36. Staged Delivery
          1. Using Staged Delivery
            1. Technical Dependencies
            2. Developer Focus
            3. Theme Releases
            4. Kinds Of Projects
          2. Managing the Risks of Staged Delivery
          3. Side Effects of Staged Delivery
          4. Staged Delivery's Interactions with Other Practices
          5. The Bottom Line on Staged Delivery
          6. Keys to Success in Using Staged Delivery
          7. Further Reading
        22. 37. Theory-W Management
          1. Using Theory-W Management
            1. Make Everyone a Winner
            2. Step 1: Establish Win-Win Preconditions
            3. Step 2: Structure a Win-Win Software Process
            4. Step 3: Structure a Win-Win Software Product
            5. Kinds of Projects That Can Use Theory-W
            6. The Manager's Role
          2. Managing the Risks of Theory-W Management
          3. Side Effects of Theory-W Management
          4. Theory-W Management's Interactions with Other Practices
          5. The Bottom Line on Theory-W Management
          6. Keys to Success in Using Theory-W Management
          7. Further Reading
        23. 38. Throwaway Prototyping
          1. Using Throwaway Prototyping
          2. Managing the Risks of Throwaway Prototyping
          3. Side Effects of Throwaway Prototyping
          4. Throwaway Prototyping's Interactions with Other Practices
          5. The Bottom Line on Throwaway Prototyping
          6. Keys to Success in Using Throwaway Prototyping
          7. Further Reading
        24. 39. Timebox Development
          1. Using Timebox Development
            1. Entrance Criteria for Timebox Development
            2. The Timebox Team
            3. Variations on Timebox Development
          2. Managing the Risks of Timebox Development
          3. Side Effects of Timebox Development
          4. Timebox Development's Interactions with Other Practices
          5. The Bottom Line on Timebox Development
          6. Keys to Success in Using Timebox Development
          7. Further Reading
        25. 40. Tools Group
        26. 41. Top-10 Risks List
        27. 42. User-Interface Prototyping
          1. Using User-Interface Prototyping
            1. Throwaway or Evolve
            2. Choosing a Prototyping Language
            3. Hollywood Facade
            4. End-User Feedback and Involvement
            5. The Finished Product
          2. Managing the Risks of User-Interface Prototyping
          3. Side Effects of User-Interface Prototyping
          4. User-Interface Prototyping's Interactions with Other Practices
          5. The Bottom Line on User-Interface Prototyping
          6. Keys to Success in Using User-Interface Prototyping
          7. Further Reading
        28. 43. Voluntary Overtime
          1. Using Voluntary Overtime
          2. Managing the Risks of Voluntary Overtime
          3. Side Effects of Voluntary Overtime
          4. Voluntary Overtime's Interactions with Other Practices
          5. The Bottom Line on Voluntary Overtime
          6. Keys to Success in Using Voluntary Overtime
          7. Further Reading
      5. A. Bibliography
      6. Index