Programming
The Pragmatic Programmer
by Austin Kleon
This is much more valuable for developing engineering judgment than for teaching programming syntax or a particular technology.
Why I think it's worth reading
The central idea is essentially this: don't just make code that works.
Become the kind of developer who consistently makes good decisions.
It may sound obvious, but the book gets into the habits behind it.
- DRY (Don't Repeat Yourself): duplication is usually a maintenance problem, not merely an aesthetic one.
- Orthogonality: keep parts of a system independent so changing one thing doesn't unexpectedly break another.
- Tracer bullets: build thin, end-to-end implementations early rather than spending weeks perfecting isolated pieces.
- Design by contract: make assumptions and expectations explicit.
- Fail fast: detect incorrect states as close to their source as possible.
- Automation: remove repetitive manual work wherever practical.
- Refactoring: continuously improve code rather than waiting for a mythical "rewrite everything later".
- Software entropy: unmanaged mess tends to accumulate unless you actively fight it.
- Knowledge portfolio: treat your knowledge as something you continuously invest in.
These ideas remain useful regardless of whether you're writing
Python, TypeScript, Java, Rust, or something else.
A pragmatic mindset makes you start asking:
- Where should this responsibility live?
- What assumptions are being made?
- What happens when this dependency fails?
- Is this duplicated?
- Can I change this component without touching five unrelated components?
- How will I know when this breaks?
- Can this process be automated?
- Am I solving the actual problem or merely the immediate error?
These questions are arguably more important than knowing another framework.
One important caveat
This is not a modern web-development manual.
Some examples and recommendations reflect the era in which the book was written
So I wouldn't treat every implementation technique as gospel.
Don't read it as:
"This is how modern TypeScript/Next.js development should be done."
Read it as:
"These are durable principles for thinking about software."
Overall
I'd rate this 9/10 for an aspiring software engineer
But probably 6/10 if you're looking specifically for modern coding techniques.