Software-engineering foundations
Software-engineering foundations: process models, Scrum and Kanban, requirements, estimation, Git workflows, delivery metrics and technical debt.
8 lessons
Lifecycle and the map of the field
- 1SDLC phases and process models: the same phases, different loopsEvery model runs the same phases; models differ in how long each loop is and when users first see working software.
- 2Software types and the SE knowledge mapWhat software runs on and whom it serves predict how often it can ship and how carefully; SWEBOK's 18 areas map the discipline.
Process in practice
- 3Scrum vs Kanban: timeboxes vs WIP-limited flowScrum fixes the time and aims it at one goal; Kanban fixes how much is started and starts the next item when one finishes.
- 4Requirements and quantified non-functional requirementsAn NFR you cannot fail is not a requirement yet: give it a metric, a percentile, a load and a window.
- 5Estimation under uncertaintyGive a range with its assumptions, narrow it by settling unknowns, and calibrate the next one with this one's actuals.
How change flows
- 6Merge vs rebase on the commit graphMerge joins two histories and keeps every commit; rebase rewrites your commits as new ones on a new base, so keep it to unshared work.
- 7Trunk-based development and delivery metricsMerge small changes into trunk at least daily, so each day's edits start from everyone else's; DORA's five metrics show whether delivery is improving.
- 8Technical debt: interest, not just principalDebt is a shortcut you pay interest on every time you change that code; pay first where the interest is highest.