RSSAmplifier

Blog

Jake Lundberg's Blog

Engineering, leadership, productivity, and the craft of shipping software.

jakelundberg.devRSS feed ↗20 posts

Latest posts

Pair Programming Earned a Lighter Code Review. AI Hasn't.

On a lot of teams, code that a pair of devs wrote usually gets a lighter code review. Nobody wrote that rule down and nobody voted on it, but pairing earned it. Here's what the research actually says about that discount, why it's never one flat size, and what happens when dev + agent starts getting filed under the same category.

The Warning That Took My Site Down Was in the Log the Whole Time

A one-line warning in my deploy log took my site down for thirty minutes. It didn't stop anything, the command exited zero, and it looked like every other line scrolling past. Software risk stays invisible until traffic hits it, and that invisibility is why the work that prevents incidents is the first thing a deadline cuts.

Your 1:1s Have No Ticket, So They're the First to Go

Nothing logs a 1:1. No ticket closes when it's over, and its best outcome is a prevented problem, which no system can count. Here's the 30 minutes a week I protect for each person, the short document that runs it, and what protecting it actually costs me.

Culture Debt Kills Faster Than Tech Debt

Tech debt you can see, point at, and put on a ticket. Culture debt gives you none of that...it compounds quietly in the norms and the trust until it shows up in the product. Here's how one small team went into it, why the reward quietly beat the values everyone said they held, and why the trust took over a year to rebuild.

AI Code Generation Has a Social Media Problem

When making something gets cheap but judging it stays expensive, the cost slides downstream...social media did it to your feed, AI code generation does it to your repo. The difference is a bad post washes away by morning, and a bad merge sits there for years.

What I Look For When a Risky PR Lands

The risky PR is rarely the big one...it's the one carrying money code, a migration, or a red build, regardless of size. Here's what I look for when one lands, and the product I'm building so senior attention goes where the risk actually is.

The Stale Feature Flag We Deleted That Turned a Feature Back On

Deleting a year-dead feature flag turned a forgotten feature back on and broke production...here's why flag cleanup is a runtime change, not tidying, and how the context you need decays while the flag sits there looking harmless.

The Real Reason Your PRs Get Big

Big PRs don't come from lazy engineers. They come from a skill almost nobody gets taught: how to cut a piece of work down into small, reviewable chunks. Here's why that's still the highest-leverage habit in engineering... and why AI just made it matter more, not less.

Merge Standards That Actually Get Followed

Most merge standards are wiki decoration. What makes a team actually follow them isn't the list...it's enforcement, consistency, and the why.

Three Targets I Set for My Engineering Team

The three targets I set for my engineering team — PR size, open-to-merge time, and change failure rate — and why these are the three that matter.

The Code Review Checklist I Actually Use

Most code-review checklists ask "does this work?" The harder question is "what happens when it doesn't?" Five things I check on every PR that the standard checklists miss... plus the comment grammar that makes reviews actually move.

Start with a Gravel Road: Why MVPs Beat 12‑Lane Highways

Building software is like traveling between destinations. In our case, it’s traveling from Problem...

Productivity Unlocked: Your Guide to Daily Inbox Processing

Hello, hello! So last week we learned about using your own inbox to capture all your to-dos into a...

The Hallmark of Great Developers: Writing Simple Code

"If you can't explain something to a first-year student, then you haven't really understood."...

Ditch the Clutter: Why You Need an Inbox for Your Brain

Ever feel like you're juggling too many tasks, and letting too many things fall through the cracks?...

Embracing Change: The Real Skill Every Software Engineer Needs

Let's face it: in software engineering, change is as inevitable as bugs in a first release. Yet, for...

The Roadmap to Real Impact: Goal-Setting for Productivity

Once again, I'd like to start this week's post off with a question. After last week's post we know...

Beyond the Bare Minimum: How Software Engineers Can Truly Stand Out

Continuous learning. Ask any accomplished person in the world today and they'll tell you this is one...

Busy vs. Productive: Why Prioritization Is the Real Game Changer

Hello hello 👋 I'd again like to start this week's post off with a question. You have your todo list...

The Uncomfortable Truth: You'll Always Feel Behind in Software Development

Let's face it: the world of software development is massive, and it's only getting bigger. With new...