login as:
~/abapcraft.dev — code, crafted in SAP
florin@s4hana:~/abap/posts/book-pragmatic-programmer $ cat README.md

The Pragmatic Programmer — Hunt & Thomas

A career-spanning guide to software craftsmanship — from the mindset of a pragmatic programmer to the concrete practices that make software better and developers more effective.

What the book is about

Written by Andrew Hunt and David Thomas, The Pragmatic Programmer is one of the most widely read books in software engineering — and one of the few that holds up across the full span of a career. First published in 1999 and significantly revised in a 20th anniversary edition, it addresses not just how to write good code, but how to think about the craft of programming and how to grow as a developer over time.

The book does not focus on a single language or technique. It is a collection of principles, heuristics, and attitudes that apply regardless of the technology stack. The pragmatic programmer is someone who takes responsibility for their work, invests continuously in their skills, and thinks about the full context of what they build — not just whether it runs.

Most important ideas

Don’t Repeat Yourself (DRY) — the book is where the DRY principle was first clearly articulated. Every piece of knowledge should have a single, authoritative representation in the system. Duplication is not just a code smell — it is a maintenance liability. When the same logic exists in two places, it will eventually be updated in one and not the other.

Orthogonality — two components are orthogonal when a change to one does not affect the other. Orthogonal systems are easier to understand, easier to test, and easier to change. Every time a module knows something it does not need to know, orthogonality is reduced.

Tracer bullets — rather than building a full system in layers and integrating at the end, tracer bullet development builds a thin, working slice from end to end as early as possible. The tracer bullet hits the target — or misses, and you adjust. It is the same instinct as vertical slices: always have something working, always have feedback.

The broken window theory — a single broken window in a building signals that no one cares, and invites further neglect. Code works the same way. One piece of bad code, left unaddressed, lowers the standard for everything around it. Fix broken windows as you find them, or the entropy spreads.

Programming deliberately, not by coincidence — code that works but whose author does not fully understand why is an accident waiting to happen. The pragmatic programmer understands why their code works, tests the assumptions it rests on, and does not rely on behavior that is not guaranteed.

The boiling frog — the metaphor for a team or a project that accepts gradual deterioration without noticing, because each individual step seems small. By the time the problem is obvious, reversing it is expensive. The pragmatic programmer stays alert to slow drift — in code quality, in scope, in team health.

Estimating — the book treats estimation as a skill, not a guess. Break the problem down, understand the unknowns, communicate uncertainty honestly, and update estimates as you learn more. A good estimate is not a commitment — it is a calibrated prediction with stated assumptions.

Your knowledge portfolio — a pragmatic programmer treats their skills like a financial portfolio: invest regularly, diversify, and rebalance as the market changes. Learning one new language a year, reading technical books, attending conferences, and staying curious are not optional activities — they are professional maintenance.

Personal statement

The Pragmatic Programmer is one of those rare books that remains relevant at every stage of a career. Junior developers find the principles clarifying. Senior developers find them affirming — and occasionally humbling, when they recognise a broken window they have been ignoring.

What distinguishes it from the other books in this series is its scope. Where Clean Code focuses on the code itself, Refactoring on the process of changing it, and A Philosophy of Software Design on managing complexity, the Pragmatic Programmer zooms out further — to the career, the team, the profession. It is about what kind of developer you want to be, not just what kind of code you want to write.

It belongs on the same shelf as all the others — and is probably the one to read first.