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…
Using the activity system as a method for understanding the work a system changes, and the tensions it creates
An adapter is necessary for replacing a model, but it is not sufficient. What a substitution has to demonstrate, and what a system should be designed to make easy
"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 this page pushes further: a specification is a fossil, recording only what a domain expert managed to say out loud, in…
"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…