Skip to content

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

  1. 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.
  2. 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

  1. 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.
  2. 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.
  3. 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

  1. 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.
  2. 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.
  3. 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.