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]
"Risk management is not about eliminating risk — it's about making informed decisions under uncertainty." — Barry Boehm 2
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…
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 genuinely 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…
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.…
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…
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, real, actively-developed codebase where…