The Software Development Lifecycle
A Complete 10-Chapter Software Development Course
Table of Contents
- Why Process Matters
- Agile Foundations: Iterative Development & What the Manifesto Actually Says
- Scrum in Practice: Sprints, Roles & Ceremonies
- Kanban & Flow-Based Work: WIP Limits & Continuous Delivery
- Requirements & User Stories
- Estimation: Story Points, Planning Poker & the Cone of Uncertainty
- Code Review: What Makes a Review Actually Useful
- Design Documents & Architecture Decision Records
- Retrospectives & Continuous Improvement
- Capstone — Running a Sprint from Planning to Retrospective
Why Process Matters
The Software Development Lifecycle
Chapter 1 · Why Process Matters
"Process" gets a bad reputation from its worst examples — the change-approval meeting that takes longer than the change itself. That reputation is earned, but it isn't the whole story. This chapter verifies both directions: a real, measured cost from having no process at all, and an equally real, measured cost from applying too much of it indiscriminately.
The Cost of No Process: Interruption-Driven Work
The Cost of No Process: Work Nobody Remembers Deciding to Do
"addresses ticket #1000") before work started: 0 of 20 untraceable.
The Cost of Too Much Process: A Fixed Tax on Every Change
The Actual Question This Course Answers
Not "process or no process" — both extremes measured real, verified costs in this chapter. The real question, and this course's own throughline, is how much process a given piece of work actually needs: enough to prevent the interruption cost and the untraceability cost verified above, without imposing the fixed-tax cost verified above on work that never needed it. Every subsequent chapter — Scrum, Kanban, estimation, code review, ADRs, retrospectives — is a specific, calibrated answer to that same question, not a one-size-fits-all prescription.
Hands-On Exercises
Re-run this chapter's own interruption simulation with ARRIVAL_INTERVAL changed from 4 to 8 (requests arrive half as often). Determine the new total time and number of context switches, and explain how the overhead percentage changes as interruptions become less frequent.
Using this chapter's own untraceable-work simulation, increase the reason-recorded probability from 0.15 to 0.40 (a team that's slightly better, but still inconsistent, about writing commit messages). Determine the new untraceable count out of 20, and compare it to both the chapter's own 0.15 result and the lightweight-process result of 0.
📄 View solutionAdd a fifth change to this chapter's own heavy-process table: "update a dependency version with no code changes," 3 minutes of real work. Compute its overhead ratio under both the fixed 120-minute approval chain and the scaled process, and determine which of the chapter's own four existing changes it most resembles in outcome.
📄 View solutionChapter 1 Quick Reference
- Verified: interrupt-driven work with no queue discipline took 27.5% longer than queue-based work, for identical total effort
- Verified: 80% of features shipped under no process had no recorded reason they existed; 0% under a one-line backlog requirement
- Verified: a fixed, one-size-fits-all approval chain made a 2-minute fix take 61x longer than the fix itself required
- Verified: scaling process to actual change size recovered nearly all of that wasted overhead, while keeping full review weight on genuinely risky work
- The real question: not "process or no process" — how much process does this specific piece of work actually need
- Next chapter: Agile Foundations — what the Manifesto actually says, versus what "agile" has come to mean in practice
Agile Foundations: Iterative Development & What the Manifesto Actually Says
The Software Development Lifecycle
Chapter 2 · Agile Foundations: Iterative Development & What the Manifesto Actually Says
"Agile" is one of the most cited and least directly read documents in software. This chapter reads the actual 2001 Manifesto for Agile Software Development — four values, twelve principles, written by seventeen practitioners in one room — rather than the secondhand version most teams inherit. Then it verifies, with real numbers, what iterative delivery actually buys over the waterfall model the Manifesto was written against.
The Four Values, Read Directly
Each value is a preference, not a rejection — the Manifesto itself is explicit that the item on the right still has value, just less than the item on the left:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
The Manifesto is explicit that the items on the right still carry real value — as it puts it, "value the items on the left more" — a genuinely balanced statement, not the all-or-nothing reading it's often given secondhand.
The Twelve Principles, Paraphrased Accurately
Twelve principles expand on the four values. Summarized faithfully rather than quoted at length:
- Satisfying the customer through early and continuous delivery of valuable software is the highest priority
- Changing requirements are welcomed, even late in a project
- Working software is delivered frequently, on a timescale of weeks rather than months
- Business people and developers work together daily throughout the project
- Projects are built around motivated individuals, given the environment and trust to get the job done
- Face-to-face conversation is the most effective way to convey information within a team
- Working software is the primary measure of progress — not documentation, not a plan being on schedule
- Development should proceed at a sustainable pace the team can maintain indefinitely
- Continuous attention to technical excellence and good design supports agility over time
- Simplicity — maximizing the amount of work not done — is essential
- The best designs and architectures emerge from self-organizing teams, not top-down specification
- At regular intervals, the team reflects on how to improve, then adjusts
Iterative Delivery, Verified Against Waterfall
Responding to Change, Verified in Delivered Value
Where This Connects
| This chapter's finding | What it connects to |
|---|---|
| 75% of project rework avoided by checking in early | Chapter 1's own "cost of no process" findings — early feedback is itself a lightweight process, not a heavyweight one |
| A re-prioritizable backlog delivering measurably more value | Chapter 6's own estimation material — a backlog can only be re-prioritized if its items are estimated comparably in the first place |
Hands-On Exercises
Re-run this chapter's own waterfall-vs-iterative simulation with a checkpoint size of 2 instead of 5 (feedback gathered after every 2 features, not every 5). Determine the new rework count and percentage, and explain whether smaller checkpoints keep producing proportionally better results or hit a floor.
📄 View solutionUsing this chapter's own re-prioritization simulation, change the new opportunity's value from 9 to 3 (a much less compelling discovery). Determine whether the re-prioritizable backlog still outperforms the fixed plan, and explain what this reveals about when responding to change actually helps versus when it doesn't.
📄 View solutionThis chapter's own waterfall-vs-iterative simulation assumed the misunderstanding was caught at the very first checkpoint. Modify it so the mistake isn't caught until the second checkpoint (after 10 of 20 features), and determine the new rework percentage.
📄 View solutionChapter 2 Quick Reference
- Four values: individuals/interactions, working software, customer collaboration, responding to change — each a preference, not a rejection of the alternative
- Twelve principles: early/frequent delivery, welcoming change, daily collaboration, sustainable pace, technical excellence, simplicity, self-organization, regular reflection
- Verified: checking in after 5 features instead of 20 avoided 75% of a project's own rework once a misunderstood requirement was discovered
- Verified: a re-prioritizable backlog delivered 12.5% more value than an identically-sized fixed plan, given the same new information
- What "agile" often means in practice vs. the original text: Scrum ceremonies, story points, and specific tools are implementations built on these principles — not the principles themselves
- Next chapter: Scrum in Practice — sprints, roles, and ceremonies, one specific implementation of these values
Scrum in Practice: Sprints, Roles & Ceremonies
The Software Development Lifecycle
Chapter 3 · Scrum in Practice: Sprints, Roles & Ceremonies
Scrum is one specific, concrete implementation of Chapter 2's own values — a timeboxed iteration (the sprint), three defined roles, and four ceremonies whose entire purpose is to make Chapter 2's own "early and continuous delivery" and "responding to change" principles actually happen on a schedule, rather than by hoping the team remembers to. This chapter verifies exactly what two of those ceremonies buy you when they're skipped.
The Three Roles
| Role | Owns |
|---|---|
| Product Owner | The backlog and its priority order — what gets built, and in what order, based on business value |
| Scrum Master | The process itself — facilitating ceremonies, and specifically removing impediments the team can't clear on their own |
| Development Team | How the work gets built, and the commitment made at sprint planning |
Daily Standups: What Removing a Blocker Actually Costs Without One
Sprint Planning: What Ignoring Known Velocity Actually Costs
A Worked Sprint Cadence
| Day | Ceremony | Purpose (verified above) |
|---|---|---|
| Day 1 | Sprint Planning | Commit to a realistic scope — matching known velocity, not aspiration |
| Days 1–10 | Daily Standup | Surface blockers within hours, not days — the 70% finding above |
| Day 10 | Sprint Review | Demo working software to stakeholders, gather real feedback (Chapter 2's own early-feedback finding) |
| Day 10 | Sprint Retrospective | The team reflects on its own process — covered in full in Chapter 9 |
Where This Connects
| This chapter's finding | What it connects to |
|---|---|
| 70% of a sprint lost to an unsurfaced blocker | Chapter 1's own interruption-cost finding — both are real costs of information not reaching the person who could act on it in time |
| Overcommitting produced identical real output, worse-looking results | Chapter 6's own estimation material — a commitment is only meaningful if it's grounded in a real, measured capacity |
Hands-On Exercises
Using this chapter's own blocker simulation, change BLOCKED_ON_DAY from 2 to 8 (the blocker occurs near the end of the sprint instead of near the start). Determine the new "days lost" figure for both the with-standups and without-standups scenarios, and explain why the gap between them shrinks.
Using this chapter's own sprint capacity simulation, add a sixth past sprint completion of 12 points (a notably bad sprint, perhaps due to team illness) to PAST_SPRINT_COMPLETIONS. Recompute the known velocity and determine the new completion rate for a sprint committing to exactly that new velocity.
This chapter's own overcommitted-sprint simulation (35 points committed) still completed exactly the known velocity of 20 points. Determine at what committed-points value the completion rate first drops below 90%, using the same simulation logic.
📄 View solutionChapter 3 Quick Reference
- Three roles: Product Owner (backlog/priority), Scrum Master (process/impediments), Development Team (how the work gets built)
- Verified: a blocker surfaced at a daily standup cost 1 day; the same blocker surfaced only at the sprint review cost 8 — a 70%-of-sprint difference
- Verified: overcommitting past known velocity (35 vs. a real 20) produced identical actual output — 20 points either way — but a 57% completion rate instead of 100%
- The real value of ceremonies: not ritual — each one moves specific information to the person who can act on it, at a specific, predictable time
- A worked cadence: Day 1 planning, daily standups throughout, Day 10 review and retrospective
- Next chapter: Kanban & Flow-Based Work — a genuinely different shape for teams whose work doesn't fit sprint boundaries well
Kanban & Flow-Based Work: WIP Limits & Continuous Delivery
The Software Development Lifecycle
Chapter 4 · Kanban & Flow-Based Work: WIP Limits & Continuous Delivery
Scrum timeboxes work into sprints. Kanban timeboxes nothing — work is pulled continuously, one item at a time, the moment capacity opens up. Chapter 1's own interruption-cost finding already showed why unlimited work-in-progress is expensive; this chapter verifies the deeper, more precise reason WIP limits are Kanban's own central mechanism, using a well-known result from queueing theory that turns out to hold almost exactly in a real simulation.
Pull vs. Push, and the Metric That Actually Matters
Scrum plans a batch of work at the start of a fixed period (Chapter 3's own sprint). Kanban has no period — a team member pulls the next item from the backlog the moment they have capacity, and a strict work-in-progress limit caps how many items can be "in progress" across the whole board at once. The question this chapter answers: what does that limit actually protect against, precisely?
WIP Limits, Verified Across a Spectrum
| WIP limit | Total time (min) | Avg cycle time (min) |
|---|---|---|
| 1 | 200 | 10.0 |
| 2 | 797 | 79.7 |
| 3 | 797 | 115.7 |
| 5 | 797 | 197.8 |
| 10 | 797 | 390.9 |
| 20 | 797 | 761.9 |
WIP=2: predicted 79.7, measured 79.7; WIP=10: predicted 398.5, measured 390.9; WIP=20: predicted 797.0, measured 761.9.
Cumulative Flow Diagrams: Making a Bottleneck Visible
When Kanban Fits Better Than Scrum
| Scrum | Kanban | |
|---|---|---|
| Best fit for | Planned feature work with a natural batch boundary | Continuous, unpredictable work — support queues, ops, ongoing maintenance |
| Cadence | Fixed sprint length (Chapter 3) | Continuous — an item ships the moment it's done |
| Primary lever | Realistic commitment at planning (Chapter 3's own 100%-vs-57% finding) | WIP limit (this chapter's own cycle-time finding) |
Where This Connects
| This chapter's finding | What it connects to |
|---|---|
| Cycle time scaling with WIP even as total throughput stays flat | Chapter 1's own 27.5%-slower interruption finding — the same underlying cost, measured more precisely |
| A cumulative flow diagram exposing a bottleneck automatically | Chapter 9's own retrospective material — a CFD is exactly the kind of concrete, undisputable data a good retrospective works from |
Hands-On Exercises
Using this chapter's own WIP simulation, add WIP=4 to the tested spectrum. Determine its total time and average cycle time, and verify Little's Law's own prediction (WIP ÷ throughput) against the measured result, the same way the chapter did for the other WIP levels.
Using this chapter's own cumulative flow simulation, raise REVIEW_RATE from 2 to 4 (matching Build's own rate). Determine how the "waiting for review" backlog behaves over the same 10 days, and explain what this reveals about a CFD's own bottleneck signal when capacities are matched.
Using this chapter's own cumulative flow simulation, apply a WIP limit of 6 to the "awaiting review" queue — Build stops producing new items once 6 are waiting, resuming only once Review absorbs one. Determine how many days it takes to process all of Build's own first 40 items under this constraint, and compare it to the unconstrained version's own day-10 backlog of 20.
📄 View solutionChapter 4 Quick Reference
- Pull vs. push: Kanban pulls the next item on demand; Scrum plans a fixed batch for a fixed period
- Verified: raising WIP from 2 to 20 left total completion time nearly flat (797 min) but multiplied average cycle time by ~10x (79.7 → 761.9 min)
- Verified: Little's Law (cycle time = WIP ÷ throughput) predicted the measured cycle time closely at every WIP level tested
- Verified: a capacity mismatch between two pipeline stages produced a visibly growing backlog — 20 items waiting after just 10 days
- The real lever: a WIP limit doesn't just save total time — it keeps any individual item's own cycle time from ballooning, and makes bottlenecks visible instead of hidden in a queue
- Next chapter: Requirements & User Stories — what actually goes into the items pulled through this flow
Requirements & User Stories
The Software Development Lifecycle
Chapter 5 · Requirements & User Stories
A user story is a fixed template: "As a [role], I want [goal], so that [reason]." The format is simple; what makes a story actually usable is INVEST — Independent, Negotiable, Valuable, Estimable, Small, Testable — six criteria for a well-formed story. This chapter verifies three of the six with real numbers, and connects the sixth directly to a chapter already built in this site's own Software Testing Strategy course.
Independent: The Cost of a Story That Isn't
Testable: The Cost of a Story That Isn't
Testable, Concretely: Acceptance Criteria Are a BDD Scenario
A well-formed acceptance criterion and a Given-When-Then scenario aren't two different documents that happen to say similar things — written correctly, they're the same sentence, twice:
| As an acceptance criterion | As a Given-When-Then scenario (Software Testing Strategy Ch.8) |
|---|---|
| "Given a $100 cart, a GOLD member sees a 10% discount at checkout" | Given a cart total of $100, When a GOLD member checks out, Then the total is $90 |
Small: The Cost of a Story That Isn't
Where This Connects
| This chapter's finding | What it connects to |
|---|---|
| A dependent story inheriting its neighbor's own blocker delay | Chapter 3's own daily-standup finding — writing independent stories prevents the problem standups exist to catch faster |
| Acceptance criteria and BDD scenarios being the same sentence twice | Software Testing Strategy Chapter 8's own living-documentation finding |
| A single large story shipping zero value at a sprint boundary | Chapter 3's own overcommitment finding — both show a mismatch between commitment shape and real capacity |
Hands-On Exercises
Using this chapter's own independence simulation, add a third story, Story C (4 days effort), that depends on Story B rather than Story A. Determine Story C's own finish day under both the dependent and independent scenarios, and the new total delivery delay this chains onto the original finding.
📄 View solutionUsing this chapter's own testability simulation, add a third possible story: "the page should be secure" (equally vague). Propose 5 plausible, genuinely different developer interpretations of what "secure" might mean in practice, and explain why vagueness in a non-numeric requirement is at least as risky as vagueness in a numeric one like load time.
📄 View solutionUsing this chapter's own small-stories simulation, re-split the same 13 points differently: 5, 4, 4 instead of 3, 3, 3, 2, 2. Determine how many points actually ship within the same 10-point sprint capacity, and explain why the split itself — not just the total point count — determines the outcome.
📄 View solutionChapter 5 Quick Reference
- The format: "As a [role], I want [goal], so that [reason]"
- INVEST: Independent, Negotiable, Valuable, Estimable, Small, Testable
- Verified: a dependent story inherited a 12-day delay from an unrelated blocker; an independent one was unaffected
- Verified: a vague story produced 4 distinct developer interpretations; a testable one with explicit criteria produced 1
- Verified: the same 13 points of scope delivered 0 shipped value as one large story, 9 as several small ones
- Testable, concretely: a well-written acceptance criterion and a Given-When-Then scenario (Software Testing Strategy Ch.8) are the same sentence, not two documents
- Next chapter: Estimation — story points, planning poker, and why early estimates are structurally, not just accidentally, unreliable
Estimation: Story Points, Planning Poker & the Cone of Uncertainty
The Software Development Lifecycle
Chapter 6 · Estimation: Story Points, Planning Poker & the Cone of Uncertainty
Chapter 3 already showed what happens when a sprint commits past known velocity. This chapter goes one level deeper: why the estimates feeding that commitment are unreliable in the first place, why teams drift toward relative estimation instead of absolute time, how a specific technique (planning poker) surfaces disagreement that would otherwise stay hidden, and why even a perfectly-run estimation process is structurally less accurate early in a project than late in it.
Relative vs. Absolute: Why Teams Drift Toward Story Points
Planning Poker: Surfacing Disagreement Before It's a Missed Deadline
The Cone of Uncertainty: Why Early Estimates Are Structurally Unreliable
Where This Connects
| This chapter's finding | What it connects to |
|---|---|
| Relative estimation eliminating personal-speed variance entirely | Chapter 3's own known-velocity finding — velocity is only a meaningful number if the points feeding it are consistently sized in the first place |
| A visible outlier forcing a conversation before commitment | Chapter 1's own "work nobody remembers deciding to do" finding — planning poker surfaces the same kind of hidden information before it's lost, not after |
| Estimate uncertainty narrowing as more becomes known | Chapter 2's own iterative-delivery finding — checking in earlier doesn't just catch mistakes faster, it estimates more accurately too |
Hands-On Exercises
Add a sixth estimator to this chapter's own relative-vs-absolute simulation, Frank, with a personal speed multiplier of 1.5 (notably slower than everyone else). Determine his absolute hour estimate and his relative story-point estimate, and confirm whether the relative spread stays at 0.
📄 View solutionUsing this chapter's own planning-poker simulation, change the scenario so TWO team members (not just Eve) independently know about the same hidden complexity, both submitting 21 in the simultaneous-reveal round. Determine the new spread and discuss whether two matching outliers are more or less likely to trigger a genuine discussion than one.
📄 View solutionUsing this chapter's own cone-of-uncertainty simulation, add a fifth phase, "Code review complete," with an illustrative uncertainty range of (0.97, 1.03). Determine its range width in hours and its narrowing factor compared to "Initial concept," continuing the chapter's own progression.
📄 View solutionChapter 6 Quick Reference
- Verified: relative story-point estimation cancelled a 5-hour absolute-estimate spread down to exactly 0
- Verified: planning poker's simultaneous reveal produced a 16-point spread on a hidden concern that anchored estimation diluted to a 6.0 average
- Verified: the same true effort produced an 18.7x wider honest estimate range at "Initial concept" than at "Implementation underway"
- Why story points win: a ratio judgment structurally cancels out individual estimator differences that absolute duration guesses can't
- Why planning poker works: it makes disagreement visible before consensus quietly erases it
- Why early estimates are unreliable: a structural property of how much is genuinely knowable yet, not a skill failure
- Next chapter: Code Review — the human check on everything estimated, planned, and built so far
Code Review: What Makes a Review Actually Useful
The Software Development Lifecycle
Chapter 7 · Code Review: What Makes a Review Actually Useful
Chapter 6's own estimates and Chapter 5's own stories eventually turn into code someone else has to look at before it ships. This chapter verifies three real distinctions that separate a review that catches something from one that merely feels thorough: what it actually checks for, which feedback is allowed to block a merge, and whether a rejection teaches anything at all.
Style vs. Substance: What a Checklist Actually Catches
Blocking vs. Non-Blocking: What Gets to Delay a Merge
Teaching vs. Gate: What a Rejection Actually Changes
Where This Connects
| This chapter's finding | What it connects to |
|---|---|
| A style-only checklist missing a real Extract Method violation | Clean Code, SOLID & Refactoring Chapter 8's own duplicated-calculation finding, reused directly as the reviewed code |
| 31% more review rounds from over-broad blocking | Chapter 1's own fixed-tax "too much process" finding, applied specifically to code review |
| 45% fewer recurring mistakes from explaining the reasoning | Chapter 9's own retrospective material — both are about turning a caught problem into an actual, lasting improvement |
Hands-On Exercises
Modify this chapter's own smell-aware checklist to also detect a second Clean Code smell: a function with more than 6 positional parameters (Chapter 4's own long-parameter-list finding). Write a sample function that triggers it, and verify the checklist correctly flags it while leaving a well-formed function alone.
📄 View solutionUsing this chapter's own blocking-vs-non-blocking simulation, lower FIX_SUCCESS_RATE from 0.9 to 0.7 (a genuinely harder or more ambiguous set of fixes). Determine the new average round counts for both policies, and explain how the gap between them changes as fixes become less reliable.
Using this chapter's own teaching-vs-gate simulation, extend the number of PRs per author from 8 to 20. Determine the new average total mistakes for both review styles, and explain whether the relative gap between gate-only and teaching grows, shrinks, or stays proportional as more PRs are observed.
📄 View solutionChapter 7 Quick Reference
- Verified: a style-only checklist approved code with a real Extract Method violation; a Clean-Code-aware checklist caught it
- Verified: treating every nit as blocking cost 31% more review rounds than gating only on genuine correctness issues
- Verified: explaining the reasoning behind a rejection cut the same mistake's recurrence rate by 45%
- The real distinction: style is what a linter checks; substance is what a human review exists for
- Blocking should scale with risk: not every flagged issue deserves the same power to delay a merge
- A gate stops one PR; teaching prevents the next several
- Next chapter: Design Documents & Architecture Decision Records — deciding when a decision is worth writing down at all
Design Documents & Architecture Decision Records
The Software Development Lifecycle
Chapter 8 · Design Documents & Architecture Decision Records
Software Architecture Fundamentals Chapter 9 already established the ADR's own format — Context, Decision, Consequences — and verified a real, well-written ADR answers 4 of 4 questions a future engineer would ask, against a vague one-liner's 1 of 4. This chapter doesn't repeat that format; it answers the two questions that determine whether an ADR gets written at all: is this decision worth documenting, and does it matter when.
Is This Decision Worth Writing Down?
Does It Matter When the ADR Gets Written?
Where This Connects
| This chapter's finding | What it connects to |
|---|---|
| An ADR being the worse choice for a reversible decision | Chapter 1's own fixed-tax "too much process" finding, applied specifically to ADRs |
| A late-written ADR losing most of its own real content | Chapter 1's own untraceable-work finding — both are the same underlying failure, recorded reason vs. no recorded reason |
| What actually goes in a well-written ADR | Software Architecture Fundamentals Chapter 9's own Context/Decision/Consequences format and its 4-of-4-vs-1-of-4 finding |
Hands-On Exercises
Using this chapter's own expected-cost formula, find the reversal cost (in hours) at which writing an ADR first becomes the better choice, holding ADR_WRITING_COST_HOURS, WRONG_DECISION_PROBABILITY_WITHOUT_ADR, and ADR_RISK_REDUCTION at the chapter's own values.
Using this chapter's own decay simulation, add a fifth checkpoint at 180 days (6 months). Determine how many alternatives and reasons remain captured, and explain why the result doesn't keep decreasing indefinitely toward a genuinely useless document.
📄 View solutionUsing this chapter's own expected-cost formula, determine what ADR_RISK_REDUCTION value would need to be true for writing an ADR to become worthwhile even for the chapter's own reversible decision (1-hour reversal cost), holding everything else fixed.
Chapter 8 Quick Reference
- Verified: writing an ADR cost 1.85 hours more than skipping it for a reversible decision; saved 28 hours of expected cost for an irreversible one
- The decision rule: reversal cost, not decision size or team status, determines whether an ADR is worth its own fixed writing cost
- Verified: a same-day ADR captured 4 of 4 alternatives and 3 of 3 reasons; a 3-month-late one captured 1 of 4 and 0 of 3
- The timing rule: write it when the decision is made — delay doesn't make the reasoning easier to recall accurately, it guarantees some of it is already lost
- What goes in it: Software Architecture Fundamentals Chapter 9's own Context/Decision/Consequences format, verified answering 4 of 4 real questions when written well
- Next chapter: Retrospectives & Continuous Improvement — turning what a team learns into real, tracked change
Retrospectives & Continuous Improvement
The Software Development Lifecycle
Chapter 9 · Retrospectives & Continuous Improvement
Technical Support's own Incident Response & Ticketing Workflows Chapter 9 verified that a blameless post-incident review produces more trustworthy data than a blame-focused one, tracing a proximate trigger back to a real root cause via a 5-whys chain. A sprint retrospective is the same discipline applied to routine work rather than an emergency — and this chapter verifies both halves of what makes it actually work: psychological safety, and whether its findings turn into anything that structurally changes.
Tracked Action Items vs. Venting
Blameless vs. Blame-Focused
Where This Connects
| This chapter's finding | What it connects to |
|---|---|
| Blame reducing honest reporting by more than half | Incident Response & Ticketing Workflows Chapter 9's own blameless post-incident review — the same mechanism, applied to routine sprint work instead of an emergency |
| An unbounded backlog under venting-only retrospectives | Chapter 4's own cumulative flow diagram finding — an unresolved-issue backlog is exactly the kind of growing gap a CFD makes visible |
| Tracked action items needing a real owner and date | Chapter 1's own untraceable-work finding — an action item with no owner is, structurally, the same as a feature with no recorded reason |
Hands-On Exercises
Using this chapter's own tracked-action-items simulation, lower ACTION_ITEM_COMPLETION_RATE from 0.5 to 0.3 (a team that consistently struggles to follow through on what it commits to). Determine the new steady-state backlog after 10 retros, and compare it to both the chapter's own tracked (0.5) and venting-only results.
Using this chapter's own reporting-rate simulation, determine the reporting rate exactly halfway between blame-focused (0.3) and blameless (0.8) — a retro that's "mostly blameless but occasionally tense." Compute the average issues reported and unreported at that midpoint rate, and determine whether the relationship between reporting rate and unreported issues is linear.
📄 View solutionCombine this chapter's own two simulations: a blame-focused team (reporting rate 0.3) also running venting-only retrospectives (no tracked action items). Using the reporting rate to scale down how many of each sprint's issues even get added to the backlog in the first place, determine the backlog size after 10 retros and compare it to the chapter's own "both dysfunctions" prediction.
📄 View solutionChapter 9 Quick Reference
- Verified: venting-only retrospectives left an unbounded, ever-growing backlog (13 issues by retro 10); tracked action items reached a stable steady state (2)
- Verified: a blame-focused retro surfaced only 1.22 of 4 real issues per sprint; a blameless one surfaced 3.19 — over 3x more reachable
- The real requirement for a fix, not just a discussion: a named owner and a date — an action item without both is a note, not a commitment
- This is Incident Response's own finding, confirmed again: blamelessness isn't a nicety, it's what makes the data trustworthy enough to act on
- These two failures compound: fewer reported issues, plus fewer of those turning into real fixes, is worse than either alone
- Next chapter: Capstone — running a sprint from planning to retrospective, applying every chapter in this course to one continuous piece of work
Capstone — Running a Sprint from Planning to Retrospective
The Software Development Lifecycle
Chapter 10 · Capstone: Running a Sprint from Planning to Retrospective
One continuous worked sprint: adding loyalty-point redemption to Clean Code, SOLID & Refactoring's own TangleMart order system — the same system Software Testing Strategy's own capstone already extended with point-earning. Every technique from Chapters 1 through 9 gets applied to this one real piece of work, in the order a real sprint actually forces, closing with the finished feature verified end to end against its own acceptance criteria.
Step 1Lightweight Process (Chapter 1)
"addresses ticket #2044 - GOLD members asked how to use their points" — recorded reason: present, avoiding Chapter 1's own verified 80%-untraceable outcome under no process, without imposing Chapter 1's own 61x heavy-process tax on a normal feature request.
Step 2Early Check-In (Chapter 2)
Step 3Sprint Planning & Daily Standups (Chapter 3)
Step 4WIP Discipline (Chapter 4)
WIP=1: 60 minutes total, 10.0-minute average cycle time. WIP=6 (juggling all subtasks at once): 237 minutes total, 229.5-minute average cycle time — the same WIP-vs-cycle-time relationship Chapter 4 verified generally, confirmed again on this sprint's own real subtask list.
Step 5The User Story (Chapter 5)
Step 6Planning Poker (Chapter 6)
Step 7Code Review (Chapter 7)
preview_redemption_discount and apply_redemption_discount, well-formatted and well-named: style-only checklist approves. Smell-aware checklist: flags duplicated validation+calculation logic — the same Extract Method risk Clean Code Chapter 8 catalogued, and the same composed-bug shape Software Testing Strategy Chapter 1 verified. It blocks merge (a real duplication-drift risk, not a nit), with the reviewer explaining why rather than just rejecting.
Step 8The Architecture Decision (Chapter 8)
Step 9The Retrospective (Chapter 9)
Final Integration: The Feature, Verified Against Its Own Story
calculate_redemption_discount(): preview and actual both return $4.00 for 40 redeemed points — identical, closing the duplication-drift risk Step 7 flagged. Negative points: correctly rejected, closing Step 3's own standup blocker. A full checkout — $41.00 order total, minus the $4.00 redemption — correctly totals $37.00.
Where This Connects
| This capstone's step | Direct connection |
|---|---|
| A composed-bug-shaped review finding | Software Testing Strategy Chapter 1's own $1799.10-instead-of-$17.99 finding — the same risk shape, caught here before it ever shipped |
| The reused TangleMart system itself | Clean Code, SOLID & Refactoring's own capstone and Software Testing Strategy's own capstone — three courses' worth of capstones building on the identical codebase |
| The ADR decision rule | Software Architecture Fundamentals Chapter 9's own ADR format — Chapter 8 of this course added the timing/worth-it question that format doesn't answer on its own |
Hands-On Exercises
Add a second user story to this chapter's own sprint: "As a PLATINUM member, I want to see my points balance on the order confirmation page." Determine whether it's independent of the redemption story, estimate it at a plausible point value, and verify the sprint's own total commitment still fits within the 20-point known velocity.
📄 View solutionUsing this chapter's own ADR expected-cost formula, determine the reversal-cost threshold above which writing an ADR becomes the better choice for a decision made during this sprint, using the chapter's own risk parameters.
📄 View solutionExtend this chapter's own final integration check with a second redemption in the same sprint — a PLATINUM member with 25 points redeeming all 25. Verify the discount amount, verify it doesn't affect the first GOLD member's own already-completed redemption, and verify negative-point rejection still works for this second customer too.
📄 View solutionChapter 10 Quick Reference — Course Summary
- Verified end to end: one real sprint — a loyalty-points-redemption feature — carried through all 9 prior chapters' own techniques, each directly reusing that chapter's own verified formula on fresh, real inputs
- Step 2 avoided 67% of rework by checking in early instead of waiting for the sprint review
- Step 6's planning poker surfaced a hidden 13-point complexity that anchored estimation diluted to 5.6
- Step 7's review caught the exact composed-bug risk Software Testing Strategy Chapter 1 first verified, before it ever shipped
- Step 8's formula correctly separated a genuine ADR-worthy decision from a trivial one, using the same rule twice with two different real answers
- Course complete: process cost, Agile foundations, Scrum, Kanban, requirements, estimation, code review, ADRs, and retrospectives — all ten chapters, verified throughout
- Subject complete: this closes the Software Development subject's entire original seven-course scope