The Error Handling

The developer wrapped every function in try-catch blocks. “Now nothing can go wrong,” they declared. The senior developer asked, “If you catch all errors, what throws them?” And then, “When you handle an error, where does it go?” What Are We Really Asking? Error handling reveals something fundamental about how we think about our systems […]

The Sprint Planning

The team estimated story points and committed to a sprint goal. They planned every hour of the coming weeks. The senior developer asked, “What happens to the time you didn’t plan?” And, “When you commit to the future, what do you assume about the present?” What This Means for Your Practice Sprint planning represents one […]

The Container

The application was packaged in a container, isolated from its environment. “Now it runs the same everywhere,” said the developer. The senior developer asked, “If it is isolated, how does it receive input?” And, “When you contain something, what do you leave outside?” What This Means for Your Practice The container koan points to a […]

The Real-Time Sync

Data flowed instantly between devices, keeping everything in perfect synchronization. The senior developer observed, “When all things are synchronized, what is the rhythm they follow?” And, “If everything changes in real-time, when is the time that is real?” Understanding the Koan Real-time synchronization represents one of the most seductive promises in modern web development: the […]

The Code Generator

The developer built a tool that wrote code automatically. Thousands of lines appeared instantly. The senior developer asked, “Who understands this generated code?” The developer replied, “The generator does.” “And who understands the generator?” Sitting with the Koan Code generators represent one of the most transformative shifts in modern software development. They promise speed, consistency, […]

The Breaking Change

A developer updated a library, breaking dependent applications. Users complained loudly. The senior developer asked, “If the change improves the library, what does it break besides the code?” And then, “When something breaks, what was it depending on that you didn’t see?” Sitting with the Koan When we speak of breaking changes, we typically frame […]

The Serverless Function

The developer deployed code that ran without servers. “Look,” they said, “no infrastructure to manage!” The senior developer smiled, “If there are no servers, what is serving your code?” And, “When you remove the server, where does it go?” Beyond the Surface The serverless paradigm represents one of modern development’s most seductive abstractions. We write […]

The Framework Migration

The team spent months migrating to the newest framework. The old system was discarded. The senior developer asked, “What did the old framework teach you that the new one cannot?” And, “When you migrate code, what else travels with it?” The Teaching Unfolds Every few years, the software industry experiences a collective migration. React replaces […]

The Code Coverage

The team achieved 100% test coverage. They celebrated their thoroughness. The senior developer asked, “What percentage of your understanding is covered?” And then, “If every line is tested, what remains untested?” Understanding the Koan We treat code coverage as a destination, a number that validates our diligence. When that metric reaches 100%, we feel we’ve […]

The Pair Programming

Two developers shared one keyboard, solving problems together. The senior developer watched them debate each line of code. “Which of you is writing the code?” she asked. “Both of us,” they replied. “Then which of you is learning?” Sitting with the Koan At first glance, this koan seems to have an obvious answer: both developers […]