Yesterday, I wrote that Writing is a form of Thinking.
On the other hand, we are taught the way to write is
- Come up with an outline
- Flesh out the details
It rarely works that way because as we are fleshing out the details, we will get new insights and we restructure the content. The outline is dynamic, and changes as we go. The two steps are intertwined, simultaneous even.
This brings me to software development, where for long we have tried breaking it into phases: Design ➡️Development ➡️Testing.
But in reality it doesn't happen this way. When we actually write the code, we realise an insight that changes the design. Writing a test clarifies our thinking on the requirement - which in turn leads us to restructuring the code.
This is why test~driven~development is so useful. TDD is a tool for developers to clarify and restructure their code as they go along in an easy way. I rather think about TDD as a thinking tool, rather than a coding one.
Recent Articles
- • Is Clean Code Still Relevant in the AI Age? May 04, 2026
- • AI Agents Need Hard Boundaries Apr 24, 2026
- • Managing Context in Agentic Coding Apr 22, 2026
- • AI Agents Need to Learn to Forget Apr 20, 2026
- • Are enterprise coding agents getting unaffordable? Apr 17, 2026