Software Development Pearls: Lessons from Fifty Years of Software Experience

Book description

Accelerate Your Pursuit of Software Excellence by Learning from Others’ Hard-Won Experience

“Wouldn’t it be great to gain a lifetime’s experience without having to pay for the inevitable errors of your own experience? Karl Wiegers is well versed in the best techniques of business analysis, software engineering, and project management.You’ll gain concise but important insights into how to recover from setbacks as well as how to avoid them in the first place.”

—Meilir Page-Jones, Senior Business Analyst, Wayland Systems Inc.

Experience is a powerful teacher, but it’s also slow and painful. You can’t afford to make every mistake yourself! Software Development Pearls helps you improve faster and bypass much of the pain by learning from others who already climbed the learning curves. Drawing on 25+ years helping software teams succeed, Karl Wiegers has crystallized 60 concise, practical lessons for all your projects, regardless of your role, industry, technology, or methodology.

Wiegers’s insights and specific recommendations cover six crucial elements of success: requirements, design, project management, culture and teamwork, quality, and process improvement. For each, Wiegers offers First Steps for reflecting on your own experiences before you start; detailed Lessons with core insights, real case studies, and actionable solutions; and Next Steps for planning adoption in your project, team, or organization. This is knowledge you weren’t taught in college or boot camp. It can boost your performance as a developer, business analyst, quality professional, or manager.

  • Clarify requirements to gain a shared vision and understanding of your real problem
  • Create robust designs that implement the right functionality and quality attributes and can evolve
  • Anticipate and avoid ubiquitous project management pitfalls
  • Grow a culture in which behaviors actually align with what people claim to value
  • Plan realistically for quality and build it in from the outset
  • Use process improvement to achieve desired business results, not as an end in itself
  • Choose your next steps to get full value from all these lessons

Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.

Table of contents

  1. Cover Page
  2. About This eBook
  3. Halftitle Page
  4. Title Page
  5. Copyright Page
  6. Dedication Page
  7. Contents
  8. Foreword
  9. Acknowledgments
  10. About the Author
  11. Chapter 1: Learning from Painful Experience
    1. My Perspective
    2. About the Book
    3. A Note on Terminology
    4. Your Opportunity
  12. Chapter 2: Lessons About Requirements
    1. Introduction to Requirements
    2. First Steps: Requirements
    3. Lesson 1: Get the requirements right or the project will fail
    4. Lesson 2: Requirements development delivers shared understanding
    5. Lesson 3: Stakeholder interests intersect at the requirements
    6. Lesson 4: Favor a usage-centric approach to requirements
    7. Lesson 5: Requirements development demands iteration
    8. Lesson 6: Agile requirements aren’t different from other requirements
    9. Lesson 7: Recording knowledge is cheaper than acquiring it
    10. Lesson 8: Requirements are about clear communication
    11. Lesson 9: Requirements quality is in the eye of the beholder
    12. Lesson 10: Requirements must be good enough to reduce risk
    13. Lesson 11: People don’t simply gather requirements
    14. Lesson 12: Elicitation brings the customer’s voice to the developer
    15. Lesson 13: Telepathy and clairvoyance don’t work
    16. Lesson 14: Large groups have difficulty agreeing on requirements
    17. Lesson 15: Avoid decibel prioritization
    18. Lesson 16: Define scope to know whether your scope is creeping
    19. Next Steps: Requirements
  13. Chapter 3: Lessons About Design
    1. Introduction to Design
    2. First Steps: Design
    3. Lesson 17: Design demands iteration
    4. Lesson 18: It’s cheaper to iterate at higher levels of abstraction
    5. Lesson 19: Make products easy to use correctly, hard to use incorrectly
    6. Lesson 20: You can’t optimize all desirable quality attributes
    7. Lesson 21: An ounce of design is worth a pound of recoding
    8. Lesson 22: Many system problems take place at interfaces
    9. Next Steps: Design
  14. Chapter 4: Lessons About Project Management
    1. Introduction to Project Management
    2. First Steps: Project Management
    3. Lesson 23: Work plans must account for friction
    4. Lesson 24: Don’t give anyone an estimate off the top of your head
    5. Lesson 25: Icebergs are always larger than they first appear
    6. Lesson 26: Data strengthens your negotiating position
    7. Lesson 27: Use historical data to improve estimates
    8. Lesson 28: Don’t change an estimate just to make someone happy
    9. Lesson 29: Stay off the critical path
    10. Lesson 30: Incomplete tasks get no partial credit
    11. Lesson 31: A project team needs flexibility to adapt to change
    12. Lesson 32: Uncontrolled project risks will control you
    13. Lesson 33: The customer is not always right
    14. Lesson 34: We do too much pretending in software
    15. Next Steps: Project Management
  15. Chapter 5: Lessons About Culture and Teamwork
    1. Introduction to Culture and Teamwork
    2. First Steps: Culture and Teamwork
    3. Lesson 35: Knowledge is not zero-sum
    4. Lesson 36: Don’t make commitments you know you can’t fulfill
    5. Lesson 37: Higher productivity requires training and better practices
    6. Lesson 38: The flip side of every right is a responsibility
    7. Lesson 39: Surprisingly little separation can inhibit communication
    8. Lesson 40: Small-team approaches don’t scale to large projects
    9. Lesson 41: Address culture change during a change initiative
    10. Lesson 42: Engineering techniques don’t work with unreasonable people
    11. Next Steps: Culture and Teamwork
  16. Chapter 6: Lessons About Quality
    1. Introduction to Quality
    2. First Steps: Quality
    3. Lesson 43: Pay for quality now or pay more later
    4. Lesson 44: High quality naturally leads to higher productivity
    5. Lesson 45: Organizations somehow find time to fix bad software
    6. Lesson 46: Beware the crap gap
    7. Lesson 47: Never let anyone talk you into doing a bad job Power Plays
    8. Lesson 48: Strive to have peers find defects
    9. Lesson 49: A fool with a tool is an amplified fool
    10. Lesson 50: Rushed development leads to maintenance nightmares
    11. Next Steps: Quality
  17. Chapter 7: Lessons About Process Improvement
    1. Introduction to Process Improvement
    2. First Steps: Software Process Improvement
    3. Lesson 51: Watch out for “Management by Businessweek”
    4. Lesson 52: Ask not, “What’s in it for me?” Ask, “What’s in it for us?”
    5. Lesson 53: The best motivation for changing how people work is pain
    6. Lesson 54: Steer change with gentle pressure, relentlessly applied
    7. Lesson 55: Don’t make all the mistakes other people already have
    8. Lesson 56: Good judgment and experience can trump a process
    9. Lesson 57: Shrink templates to fit your project
    10. Lesson 58: Learn and improve so the next project goes better Looking Back
    11. Lesson 59: Don’t do ineffective things repeatedly
    12. Next Steps: Software Process Improvement
  18. Chapter 8: What to Do Next
    1. Lesson 60: You can’t change everything at once
    2. Reality Check
    3. Action Planning
    4. Your Own Lessons
  19. Appendix: Summary of Lessons
    1. Requirements
    2. Design
    3. Project Management
    4. Culture and Teamwork
    5. Quality
    6. Process Improvement
    7. General
  20. References
  21. Index

Product information

  • Title: Software Development Pearls: Lessons from Fifty Years of Software Experience
  • Author(s): Karl Wiegers
  • Release date: October 2021
  • Publisher(s): Addison-Wesley Professional
  • ISBN: 9780137487806