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