System Oscillation: From Thermostats to Software Documentation

2025-02-14
System Oscillation: From Thermostats to Software Documentation

This article explores common system oscillations, using thermostats and rabbit-hawk populations as examples to illustrate how delayed feedback leads to cyclical fluctuations. The author applies this model to the problem of software documentation, pointing out that excessive documentation becomes outdated over time, diminishing its value. In agile development, the author argues that good code, tests, and team communication can replace redundant documentation, while the advent of generative AI further addresses information retrieval, reducing reliance on outdated documentation.

Read more
Development systems theory

A Programmer's Lesson: Always Bundle a Proposal with a Complaint

2024-12-27
A Programmer's Lesson: Always Bundle a Proposal with a Complaint

In 1988 at Apple, a young, cocky engineer, Kent Beck, was summoned to Jean-Louis Gassée's office after sending an email complaining about a company decision. Instead of anger, Gassée challenged Beck to consider his perspective and rewrite the email as a proposal for a solution. This experience taught Beck three valuable lessons: most problems aren't as big as they seem; always include a solution with a complaint; and effective communication requires empathy. This anecdote highlights crucial workplace communication skills and the importance of understanding different viewpoints.

Read more

Slow Deployments Breed Meetings: A Reverse Causality Argument

2024-12-22
Slow Deployments Breed Meetings: A Reverse Causality Argument

Programmers often complain about too many meetings hindering productivity. Kent Beck challenges this notion, suggesting that meetings are a consequence, not the cause, of slow deployments. Facebook's experience shows that increasing deployment frequency is key. When deployment speed lags behind code changes, organizations add meetings and reviews to mitigate risk, ultimately reducing efficiency. Instead of reducing meetings, focus on improving deployment capacity by shortening cycles or enhancing code quality. This essay offers a fresh perspective, exploring the counter-intuitive relationship between slow deployments and increased organizational overhead.

Read more