A developer I know got pulled into a “productivity review” last month. Not because their output dropped. Because their AI tool usage was below the team average. Their manager wanted to know why they weren’t using AI for coding enough. Not why their code had fewer bugs. Not why their PRs moved through review faster….
Category: Software Engineering
Complexity Is Never Eliminated. It Is Only Relocated.
COBOL moved complexity from machine instructions to business logic specification. 4GLs moved it from code to data modeling. No-code moved it from programming to workflow configuration. LLMs are moving it from syntax to verification. The complexity never disappeared. It accumulated at the new boundary. And the new boundary is arguably harder than the old one.
“Done” Is Not Merge: Why Your Definition of Done Is Probably a Lie
The most dangerous lie in software engineering is a two-word status update: “It’s done.” In most teams, done means the pull request was merged. The CI pipeline turned green. The ticket moved to the right column on the board. Someone wrote “Done” in Slack, maybe with a checkmark emoji for extra confidence. And then everyone…
AI Made Learning Feel Pointless. That’s Exactly When It Matters Most.
A week ago my blog post got noticed by developers. I got so many messages and there was a recurring theme. They feel helpless and anxious with the ever growing AI dominance in writing code that might not be perfect but it is almost good enough in many cases. But one question stood out more…
The Training Data Paradox: What Happens When AI Replaces the Engineers Who Trained It
There is a question hiding in plain sight behind every celebration of AI-generated code, every prediction that developers are obsolete, every LinkedIn post about building an app 100x faster with a prompt. It is a question that almost nobody in the current hype cycle is asking, and it may be the most important question of…
Software Companies Are Dead. Just Nobody Told Them.
Software companies are dead. Just nobody told them. Or so everyone keeps saying. LinkedIn is flooded with Claude Code hype. Cursor is “changing everything.” Every founder on your feed is screaming that developers will be redundant by Q2. The revolution is here, they say. Pack your bags. This is now the third consecutive year of…
ADD in Context: Greenfield, Legacy, Refactoring, and Testing
The ADD cycle is consistent across contexts: Specify, Generate, Evaluate, Integrate. But how you apply each phase changes depending on what you are building and where you are building it. Greenfield projects offer freedom that legacy codebases do not. Refactoring has constraints that new feature development lacks. Test generation inverts the typical flow. This post…
No, Average People Will Not Build Their Own Software With AI
There is a narrative gaining traction in tech circles, on social media, and in breathless conference keynotes that goes something like this: AI will soon let anyone build their own software. Need a budgeting app? Just describe it to an AI and it will create one for you. Want a custom CRM for your small…
Architect or Extinct: Why Software Developers Must Evolve Beyond Writing Code
A house architect does not lay bricks. They do not mix concrete, install plumbing, or wire electrical panels. They design the building. They decide how spaces connect, where light enters, how loads distribute, and how the structure will age over decades of use. The actual construction is performed by skilled tradespeople following the architect’s plans….
Integrate: Completing the ADD Cycle for AI-Driven Development
Code that passes evaluation is ready for integration. This is the final phase of the ADD cycle, where generated code becomes part of your system. But integration is more than merging a pull request. It is where AI-generated code meets the full reality of your codebase, your testing infrastructure, your deployment pipeline, and your team’s…