All chapters in this track
- 01Chapter 1: Why the SDLC Matters
- 02Chapter 2: An Honest Comparison of SDLC Models: Waterfall, Iterative, Agile/Scrum, Kanban, Lean, Spiral, DevOps
- 03Chapter 3: Choosing and Adapting a Model for Team Size, Domain, and Risk Tolerance
- 04Chapter 4: Requirements Gathering and Analysis
- 05Chapter 5: The Design Phase and Its Connection to HLD/LLD
- 06Chapter 6: Implementation Practices That Keep a Project Healthy
- 07Chapter 7: Testing Strategy Across the Pyramid
- 08Chapter 8: Documentation Across the Lifecycle: Specs, ADRs, Runbooks
- 09Chapter 9: Release and Deployment: CI/CD, Versioning, Blue-Green and Canary Releases, Feature Flags
- 10Chapter 10: Operations and Maintenance: On-Call, Monitoring, Incident Response
- 11Chapter 11: Measuring Delivery Health: Cycle Time, Deployment Frequency, Change Failure Rate, MTTR
- 12Chapter 12: Case Study: The SDLC in a Five-Person Startup
- 13Chapter 13: Case Study: The SDLC in a Large Enterprise Team
- 14Chapter 14: Worked Example: Choosing a Process for a New Team
- 15Chapter 15: Common Interview Questions About the SDLC
Chapter 1 of 15
Chapter 1: Why the SDLC Matters
Why this matters
Every piece of software that reaches a real user passed through some process, whether or not anyone ever named or designed it deliberately — a chaotic, undocumented, ad hoc process is still a process, just an unmanaged one. The Software Development Life Cycle (SDLC) is the umbrella term for the stages software passes through from a first idea to something running in production and maintained over time. Understanding it deliberately, rather than inheriting whatever a team happens to be doing, is what lets you diagnose why a project feels chaotic and choose a genuinely better structure instead of just a different set of unexamined habits.
The core concept: the stages every SDLC model organizes, in some order
[BEGINNER] Regardless of which specific model a team follows (Chapter 2 surveys the major ones), nearly every piece of software passes through some version of these stages:
Requirements -> Design -> Implementation -> Testing -> Release/Deployment -> Operations/Maintenance
^ |
|________________________________ feedback loop ______________________________________|
- Requirements: understanding what needs to be built and why (Chapter 4).
- Design: deciding how it will be built, at both a high level and a low level (Chapter 5).
- Implementation: actually writing the code (Chapter 6).
- Testing: verifying it works as intended (Chapter 7).
- Release/Deployment: getting it safely into production (Chapter 9).
- Operations/Maintenance: keeping it running, monitored, and supported over its operational life (Chapter 10).
What genuinely differs between SDLC models isn't whether these stages happen — every real project touches all of them in some form — it's the order, size, and repetition of these stages: does design fully complete before implementation starts, or do they interleave? Does the cycle run once for the whole project, or repeatedly in small increments? This framing is the key to understanding Chapter 2's model comparison without treating each model as an unrelated, separate universe of practice.
Why an unmanaged process is still a process, with real costs
[SENIOR INSIGHT] A team with no explicit SDLC discipline still moves through requirements, design, implementation, testing, and release — informally, inconsistently, and usually less efficiently, since the lack of an explicit structure means each stage's boundaries and hand-offs are negotiated ad hoc, every single time, rather than following an established, well-understood pattern the whole team can rely on. This is directly analogous to the companion Coding Standards book's Chapter 1 argument: an unmanaged practice isn't the absence of a standard, it's an inconsistent, unexamined one — and the costs (rework from misunderstood requirements, integration surprises from undiscussed design decisions, production incidents from insufficient testing) are just as real, only harder to attribute to a specific cause since there's no named process to point to as the source of the gap.
Common mistakes
- Treating "we don't really follow a formal process" as a neutral, cost-free state rather than recognizing it as an unmanaged, inconsistent process with its own real, if less visible, costs.
- Assuming every SDLC model organizes fundamentally different activities, rather than recognizing that all of them touch the same core stages, differing mainly in ordering, sizing, and repetition — this framing makes the model comparison in Chapter 2 much easier to reason about.
- Adopting a named process (Scrum, Kanban) as a label without actually changing the underlying practices, producing "process theater" that provides none of the real benefits the process is supposed to deliver.
- Believing the SDLC is purely an academic/interview topic disconnected from daily engineering work — every stage in this chapter's diagram maps directly to real, everyday practices (writing a ticket, designing an API, opening a PR, deploying, getting paged) covered in depth throughout this book.
Checklist: reasoning about your team's actual SDLC
- Identify which of the six core stages your team handles well versus poorly — this is more useful than asking "which named methodology should we adopt," since the answer to the latter should follow from the former.
- Recognize that an unmanaged process still incurs real costs, even without a name attached to diagnose them by.
- When adopting a named process, verify the underlying practices actually changed, not just the vocabulary used to describe daily work.
- Use the stage-based framing (requirements → design → implementation → testing → release → operations) to compare SDLC models on their actual differences (ordering, sizing, repetition) rather than treating each as an unrelated system.
Discussion / interview questions
-
"What is the SDLC, and what stages does it generally include?" Strong answer: The set of stages software passes through from an initial idea to production and ongoing maintenance — requirements, design, implementation, testing, release/deployment, and operations/maintenance — present in some form in every real project, regardless of which specific methodology a team follows.
-
"Does a team with no formal, named development process actually have 'no SDLC'?" Strong answer: No — every project moves through the same core stages in some form; a team with no explicit process still has an SDLC, just an unmanaged, informally negotiated one, with real (if less visibly attributable) costs like rework and integration surprises.
-
"What's the difference between adopting a named methodology like Scrum and actually changing how a team works?" Strong answer: A team can adopt Scrum's vocabulary (sprints, standups, retrospectives) without genuinely changing its underlying practices, producing "process theater" that provides none of the real benefits — real adoption changes the actual practices, not just the labels used to describe them.
-
"How would you compare two different SDLC models without getting lost in unrelated-seeming terminology?" Strong answer: Compare them by how each organizes the same core stages — differences in ordering (does design fully complete before implementation?), sizing (how much work per cycle?), and repetition (does the cycle run once or repeatedly) — rather than treating each model as a wholly separate, incomparable system.
Chapter summary / cheat sheet
- Every SDLC model organizes the same core stages: requirements, design, implementation, testing, release/deployment, operations/maintenance — models differ in ordering, sizing, and repetition, not in which activities exist at all.
- An unmanaged, informal process is still a process, with real (if less visibly attributable) costs — "we don't follow a formal process" isn't a neutral, cost-free state.
- Adopting a named methodology without changing underlying practices produces "process theater," not real improvement.
- Use the stage-based framing to compare SDLC models meaningfully, rather than treating each as an unrelated system of unfamiliar terminology.