Software Thinking
These posts are about the thinking behind the code rather than the code itself: which technical debates are worth having, where Dunning-Kruger shows up on a team, and why vibe coding is not engineering even when it produces something that runs.
AI Code Review Is Mostly Noise
AI code reviewers are the hot dev-tool category of 2026. After months of real use on a review queue, the signal-to-noise ratio is bad. Here are the numbers.
Read more ThinkingYour AI Coding Speedup Is Not What You Think
AI coding tools promise a 10x speedup. After a year of daily Claude Code use, the real number on a real codebase is closer to 1.5x. Here is what I measure.
Read more BackendThe Java Terminology Survival Guide
Java EE, Jakarta EE, javax, SE, JDK, JRE, OpenJDK, Spring Boot, Spring MVC. A plain-language guide to every confusing name in the entire Java ecosystem.
Read more PracticesPremature Abstraction Is Worse Than Duplication
DRY is right, but not yet. Three identical code blocks are better than one wrong abstraction that fights you for months. Wait until the pattern is obvious.
Read more ThinkingThe Senior Engineer's Job Is to Say No
Knowing what not to build is more valuable than knowing how to build it. The hardest skill I learned as a senior engineer had nothing to do with code.
Read more ThinkingHealthcare AI Has an Engineering Problem
Healthcare AI fails not because the models are bad, but because the surrounding software is. A software engineer's take on why it is harder than it looks.
Read more BackendThe Monolith That Works Fine, Thanks
Monoliths aren't a sign of technical immaturity. Most teams don't need microservices. Here's why a well-structured monolith is often the smarter choice.
Read more ThinkingWhy Most Technical Debates Don't Matter
Tabs vs spaces. REST vs GraphQL. Monolith vs microservices. Some technical debates matter, but most don't. Here's how I tell the difference after a decade.
Read more ThinkingVibe Coding Is Not Engineering
Vibe coding has its place. But the gap between prompting an AI until something works and actually engineering reliable software is wider than people think.
Read more ThinkingThe Dunning-Kruger Effect: Why Incompetence Feels Like Confidence
People with limited skill overestimate their ability while experts underestimate theirs. Here is how the Dunning-Kruger effect shows up in engineering teams.
Read more