Why analytically strong engineers build overly rigid systems, and how to design software as infrastructure for human action instead.
Engineering as metacognition, and why learning to revise your own reasoning matters more than being right.
A planning method that starts from intended outcomes and reasons backward, making risk and trade-offs visible early.
How collaborative, visual modelling builds the shared theoretical understanding that valuable software depends on.
How software engineers use knowledge elicitation to discover the essence of a problem together with domain experts.
Why managing complexity is the core of software engineering, and how distinguishing essential from accidental complexity helps us reduce it.
Why the validated learning loop is the most important tool in modern software engineering, from TDD to DORA metrics.