UmurInan
Software Thinking Topic

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.

Thinking

Posted on May 22, 2026

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
Thinking

Posted on May 16, 2026

Your 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
Backend

Posted on Apr 9, 2026

The 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
Practices

Posted on Apr 3, 2026

Premature 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
Thinking

Posted on Mar 31, 2026

The 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
Thinking

Posted on Mar 28, 2026

Healthcare 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
Backend

Posted on Mar 23, 2026

The 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
Thinking

Posted on Mar 22, 2026

Why 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
Thinking

Posted on Mar 21, 2026

Vibe 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
Thinking

Posted on Feb 12, 2026

The 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