AI-Assisted Development
"AI won't replace developers. Developers who use AI will replace those who don't." — Satya Nadella (paraphrased)
"AI won't replace developers. Developers who use AI will replace those who don't." — Satya Nadella (paraphrased)
Education is, at heart, a control system. A signal goes in, something is processed, output is produced — and then the critical step: the output is compared against a reference , and the error drives the next iteration.…
"If it hurts, do it more often." — Jez Humble (paraphrasing Martin Fowler) [^humble2010]
Event-Driven Programming covers how individual objects communicate by passing messages. This page is about the same underlying question — how do the parts of a system talk to each other — asked at a much larger scale…
"Risk management is not about eliminating risk — it's about making informed decisions under uncertainty." — Barry Boehm 2
A risk register is only useful if it's actually filled in and actually re-read — a spreadsheet nobody opens after week one is worse than no register at all, because it creates the appearance of risk management without…
A risk burn-down chart does for risk what a sprint burn-down does for remaining work: one line, tracked over time, that should trend down as mitigations land — and whose failure to trend down is itself the signal worth…
The Risk Management & Mitigation page lays out the standard framework — taxonomy, likelihood/impact scoring, mitigation strategies. This page is a companion, not a replacement: it walks through what that framework…
"It works on my machine" is an obsolete metric. Software now moves money in microseconds, steers vehicles, allocates medical resources and mediates civic life — contexts where unreliable code is not an inconvenience but…
This site's own lecture on Software Engineering as Practical Anthropology opens with a claim worth taking further than it goes there: a specification is a fossil, recording only what a domain expert managed to say out…
"Informatics" itself doesn't have one fixed, universally agreed scope — some institutions use it as a broader synonym for computer science generally (the University of Edinburgh's School of Informatics is the best-known…
Frame Analysis for Software sets out Goffman's four concepts in the abstract: primary framework, keying, fabrication, and frame break. This page does the opposite — it starts from four real, already-documented moments…
Most of what gets taught early in a software engineering course assumes the hard part is building the system. Soft Systems Methodology (SSM) exists because, very often, the actually hard part happened earlier: deciding…
Soft Systems Methodology and CATWOE give you a useful way to surface conflicting worldviews before committing to a design. They don't make the underlying problem easy, and using them carelessly can create a false sense…
A persona is a named, specific, fictional-but-grounded stakeholder built to stand in for a real cluster of users during design decisions. Used well, it's one of the sharpest tools available for keeping a team honest…
"TDD is not about testing. It's about design." — Kent Beck [^beck2002]
"Testing shows the presence, not the absence of bugs." — Edsger W. Dijkstra 1
When code breaks, beginners default to voodoo: change a < to a <= , move a line, restart the IDE, sacrifice a coffee to the demo gods. Occasionally the voodoo works, which is the worst possible outcome — the bug is gone…
Testing Fundamentals introduces the individual techniques; this page is the map. Conversations about testing go wrong because "unit test", "black-box test" and "performance test" sound like items on one list when they…
Black-box testing asks whether the code meets its specification; code path analysis is the white-box counterpart — it reads the code's structure and asks: which routes through this logic have my tests actually walked?…
Every other page in this track helps you test the code. This one asks the uncomfortable follow-up: who tests the tests? A suite can execute every line and branch (see Code Path Analysis ) while asserting almost nothing.…
Most testing advice quietly assumes a program is a pure function of its input: same input, same output, every time. Two whole categories of system break that assumption on purpose. One consults a source of randomness —…
"Mock" gets used as a catch-all word for "not the real dependency," which flattens five genuinely different tools into one, and loses the distinction that actually matters: what kind of question a test can ask once the…
The V model is the oldest answer to a question teams still get wrong: when should tests be designed? Its answer — at the same moment as the specification they check, not after the code exists — remains sound advice in…
"A good tool improves the way you work. A great tool improves the way you think." — Jeff Atwood
An IDE is a luxury cruise ship; the command line is learning how to swim. Both get you across the water — but only one of them still works when the ship is unavailable. If you only ever compile by clicking a green play…
Software engineering has always been a magpie discipline. Many of its best ideas were not invented here — they were noticed somewhere else, translated, and put to work. This page is about cultivating that habit…
Text looks like the easiest data type in the language — a string is just a sequence of characters — right up until a program has to work with more than one language, script, or region. At that point almost every…
A companion to The Anatomy of a Debugging Strategy and Risk Management: Lessons from Testing Real Systems , grounded in a real performance investigation from Act XIV of the PatLang journey : a re-run benchmark found a…
A companion to The Anatomy of a Debugging Strategy and Performance Debugging: Lessons from a Real Regression and Its Fix , grounded in the PatLang journey's inheritance arc : a request to add real classes, inheritance…
A companion to TDD & BDD , which covers the Given/When/Then cycle and its tooling ecosystem in general. This page goes one layer deeper on a single claim that page only asserts: that a well-written BDD scenario isn't…
A companion to BDD as Specification , which treats a scenario as something precise enough to derive an implementation from. This page is about the opposite direction: a large, actively-developed codebase where most…