← Back to blogs
Engineering

Reading Other People's Code: The Most Underrated Engineering Skill

6 min read
Cover illustration for "Reading Other People's Code: The Most Underrated Engineering Skill"

Every tutorial, bootcamp and CS course teaches you to write code. Almost nothing teaches you to read it. Yet from your first week on a real team, the ratio flips: for every hour you spend writing, you'll spend several buried in code someone else wrote — last month, last year, or long before anyone on the current team joined.

I wrote before about the skills that carry you from junior to mid-level, and reading code got one section there. It deserves a whole post, because in a decade of building and leading teams I've seen nothing separate engineers faster than how well they navigate a codebase they didn't write.

Code is a record of decisions

The biggest mental shift is realizing you're not reading instructions — you're reading history. That odd retry loop, that seemingly pointless flag, that function that does two unrelated things: each one was somebody's answer to a problem you can't see anymore.

Approach it like an archaeologist, not a critic. Before ripping out the strange fence in the field, figure out why someone built it. Sometimes it really is dead code. Surprisingly often, it's holding back something that will bite you at 2 a.m. two weeks after you delete it.

How I read an unfamiliar codebase

Start at the entry point, not the folder tree. Find where a request, click or job begins, and trace one complete flow to its end — database write, API response, rendered screen. One honest end-to-end trace teaches you more than an afternoon of skimming directories.

Run it while you read. A debugger, a couple of log lines, a breakpoint in the middle of the mystery — code you've watched execute is code you understand at a different level. Then read the tests: they're the only documentation that can't drift out of date, and they tell you what behavior the authors cared enough to pin down.

And use the history. Git blame isn't for assigning fault — it's the commentary track. The commit message, the ticket it links to, the review discussion around it: that's where the why lives.

The code tells you what the system does. The history tells you why. You need both to change either.

Reading makes you a better writer

Every painful codebase you've navigated is a lesson in what to never do to the next person, and every codebase that felt effortless is a pattern worth stealing. Taste in code isn't innate — it's accumulated from thousands of small encounters with other people's decisions, good and bad.

Once you've truly felt the cost of a misleading name or a function that lies about what it does, you stop writing them. You start writing for the reader: the teammate at 2 a.m., the new hire in their first week, and the future version of you who has forgotten everything.

Code review is reading practice

The cheapest way to practice is already on your calendar. Review pull requests properly: check out the branch, follow the change through the system, ask what breaks at the edges. Reviews done this way compound twice — the codebase gets better, and so does your reading.

If you want a habit to start this week: pick one module you depend on but have never opened — a library, a framework internal, a legacy corner of your own product — and read it for thirty minutes. Take notes on what surprises you. Do it weekly. Within a few months you'll be the person on the team who seems to just know how things work. That reputation isn't magic. It's reading.