Rob Colantuoni

October 17, 2022

Tags: Leadership and Career

The skill nobody teaches you

What I got wrong about being a good engineer

Early in my career, I figured technical skill was mostly about knowledge. Learn more languages, more frameworks, more algorithms, more design patterns — become a better engineer. I chased breadth and depth, and it worked for a while.

But at some point I noticed that the engineers I admired most weren’t necessarily the most knowledgeable. They were the ones with the best judgment — the ability to make good decisions when things are ambiguous, information is incomplete, and constraints are fighting each other. And that judgment didn’t correlate with knowledge as strongly as I’d expected.

So what is this judgment thing anyway

Technical judgment is the ability to make good decisions about technology in context. The “in context” part is doing a lot of work here. A technically correct decision that ignores organizational reality, business constraints, or what your ops team can actually run is a bad decision. Judgment weaves technical considerations together with everything else.

A few examples:

Choosing boring technology. A team needs a message queue. There are flashy new options — Pulsar, NATS, Redpanda — with compelling technical features. But your org has deep Kafka expertise, ops has runbooks for it, and everyone knows the failure modes. Good judgment picks Kafka. Not because it’s technically superior, but because the total cost of ownership (including operational expertise and organizational learning) is lower.

Knowing when to stop. A refactor has cleaned up 80% of the mess. The remaining 20% lives in a rarely-touched corner of the system. Good judgment says “stop here” even though the perfectionist in you wants to finish. The marginal value of cleaning stable, working code is low compared to what else you could do with that time.

Deciding what not to build. A PM proposes a feature that would require significant architectural changes. Good judgment can articulate why the complexity cost outweighs the value — not with a blanket “no,” but with a clear explanation of the trade-offs and maybe an alternative that gets 80% of the value at 20% of the cost.

Reading the room on technical debt. Some debt is benign. It exists, everyone knows about it, it doesn’t slow you down. Some is malignant — it quietly inflates the cost of every change and the risk of every deploy. Good judgment tells them apart and prioritizes accordingly.

How you actually develop it

If judgment were just knowledge, you could learn it from books. But it’s not. Judgment develops through a particular kind of experience: making decisions, watching what happens, and updating your mental models.

Pattern recognition from experience. After you’ve seen enough systems succeed and fail, you develop an intuition for what works. It’s not magic — it’s compressed experience. The engineer who’s watched three migration projects fail because of big-bang cutovers develops a deep skepticism of big-bang migrations. That skepticism is judgment.

Learning from mistakes. The most formative experiences are the decisions that went wrong. The architecture that looked elegant on the whiteboard but was a nightmare to operate. The “quick hack” that lived in production for five years. The premature optimization that made the code unreadable without measurably improving performance. Each mistake calibrates your judgment, if you’re honest enough to learn from it.

Exposure to diverse contexts. Judgment from one context doesn’t always transfer. What works for a startup doesn’t work for a bank. What works for a consumer product doesn’t work for an infrastructure platform. The engineers with the broadest judgment are usually the ones who’ve worked across different domains, scales, and organizational contexts.

Mentorship from people with good judgment. Watching a senior engineer with great judgment work through a problem — hearing them articulate their reasoning, seeing what they weigh, understanding why they’re skeptical of a particular approach — is one of the most effective ways to develop your own. (This is part of why the mentoring side of staff engineering matters so much.)

The gap I keep noticing

There’s a growing gap in the industry between engineers who can execute and engineers who can decide. The tools for execution keep improving — better frameworks, better libraries, better infrastructure, and now AI-assisted coding. But the tools for decision-making haven’t changed. Judgment is still built the old way: experience, reflection, mentorship.

That gap is going to widen. As AI automates more of the execution layer, the relative value of judgment goes up. The engineer who can look at a problem and say “here’s the right approach, and here’s why” becomes more valuable than the engineer who can implement any approach quickly.

If you’re trying to build this in others

As a technical leader, one of your most important jobs is cultivating judgment in the people around you. A few things I’ve found helpful:

Make your reasoning visible. When you make a technical decision, explain not just what you decided but why. What did you weigh? What alternatives did you consider? What risks did you accept? That gives less experienced engineers a window into how you think.

Create safe spaces for decision-making. Give people opportunities to make real decisions — and support them when those decisions don’t work out. Judgment only develops through practice, and practice requires the freedom to make mistakes.

Conduct decision reviews, not just code reviews. When you’re reviewing a design doc or architecture proposal, focus on the decision-making process, not just the artifact. Did they consider operational implications? Did they evaluate alternatives? Did they identify the key risks? Those are the muscles of judgment.

Share your failures. One of the most powerful things a senior engineer can say is “I made this mistake, here’s what happened, here’s what I learned.” It normalizes the learning process and gives others a shortcut to judgment they’d otherwise have to develop through their own painful experiences.

Judgment is the compound interest of an engineering career. Every good decision you make, every bad decision you learn from, every mentor whose reasoning you absorb — it accumulates. The engineers who invest in developing their judgment early will find it paying off for decades.