Software Engineering

AI-Assisted Development

"AI won't replace developers. Developers who use AI will replace those who don't." — Satya Nadella (paraphrased)

Learning as a Feedback Loop

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.…

CI/CD

"If it hurts, do it more often." — Jez Humble (paraphrasing Martin Fowler) [^humble2010]

Risk Management

"Risk management is not about eliminating risk — it's about making informed decisions under uncertainty." — Barry Boehm 2

Risk Management: Lessons from Testing Real Systems

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…

Trustworthy Software

"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…

Frame Analysis for Software Engineering

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 PatLang

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…

Soft Systems Methodology

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…

Wicked Problems and Assumptions

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…

Disciplined use of Personas

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/BDD

"TDD is not about testing. It's about design." — Kent Beck [^beck2002]

Testing Fundamentals

"Testing shows the presence, not the absence of bugs." — Edsger W. Dijkstra 1

Debugging Strategy

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…

Types of Testing

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…

Code Path Analysis

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?…

Mutation Testing

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 & Values

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…

Tools Ecosystem

"A good tool improves the way you work. A great tool improves the way you think." — Jeff Atwood

CLI First

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…

Cross-Pollination of Ideas

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…