Why Boring PRs Are the Best PRs

Why Boring PRs Are the Best PRs

Sometimes the most satisfying thing in our job is also the least flashy: simple code.

I’m not talking about minimalism as a philosophy, or chasing some abstract idea of perfection. I mean that very concrete, very real gut feeling you get when you make a change and it ends up being linear, clean, and free of hacks or weird workarounds.

You ship the PR, look at the diff, and think: “Yep. That’s exactly how it should be.”

In theory, every solution should look like that. Every PR, every new feature, every fix: simple, readable, maintainable, and performant. In a fairy-tale codebase, we’d always get there. In reality, you know how it goes: time pressure, edge cases, legacy bits, constraints that don’t show up in the ticket description. What starts as a conceptually simple fix often mutates into something much harder to chew.

What I’ve noticed over time is that when the overall quality of development goes up, those complications don’t disappear, but the way you handle them changes.

On a mature codebase, built by competent people, you still hit problems. It’s not like “good code” magically prevents that. The difference is that nobody reaches for duct tape as the first option. Quick patches, random workarounds, and “we’ll clean it later” fixes just aren’t good enough anymore.

You’re expected to go for a robust solution. Do it properly. Future-proof it.

That often means spending more time upfront, but the downstream benefits are enormous when the next issue inevitably appears.

Right now I’m lucky: I get to work on a healthy codebase. Not perfect, but clearly built with solid principles in mind. There’s an internal UI library. The app is split into well-defined areas. Types are structured cleanly. There’s a toolbox of utilities and hooks that usually already do what you need, if you take the time to look instead of reinventing them.

Once you start working in a system like this, your mindset shifts. You begin to notice when you’re doing something that smells “off”:

Those moments become alarm bells. Your code starts slimming down almost naturally. You write less, reuse more, and you gain space in your head to focus on naming, patterns, performance, and overall clarity.

Drafting a PR and seeing only a handful of small, logical changes. No odd comments trying to explain a convoluted approach, no spooky conditionals you’re secretly ashamed of, that’s become one of my favourite feelings. Clean diffs, boring code, obvious intent. There’s a weird kind of beauty in that.

It wasn’t always like this. For a long time my priority was: “Does it work? Ship it.”

And that’s fine when you’re working alone on small projects. But once you move into larger teams and bigger products, that approach just doesn’t scale. Sloppy or overcomplicated solutions turn into landmines for your colleagues and poison the dev experience long term.

This shift doesn’t happen overnight. It comes from:

and that inner drive for quality, that little fire that makes you question every line, every abstraction, every “clever” solution

With time, you start to feel what’s right and what isn’t. You don’t always nail it, but the compass gets better. Trial and error. Refactor and learn.

The beauty of simplicity isn’t that it’s easy. The beauty is that you’ve done the hard thinking so nobody else has to.

« The Calm Inside the Storm You've just read my latest post. Nothing after this!