The Pragmatic Programmer: From Journeyman to Master

... Show More
Straight from the programming trenches, The Pragmatic Programmer cuts through the increasing specialization and technicalities of modern software development to examine the core process--taking a requirement and producing working, maintainable code that delights its users. It covers topics ranging from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse. Read this book, and you'll learn how to

Fight software rot; Avoid the trap of duplicating knowledge; Write flexible, dynamic, and adaptable code; Avoid programming by coincidence; Bullet-proof your code with contracts, assertions, and exceptions; Capture real requirements; Test ruthlessly and effectively; Delight your users; Build teams of pragmatic programmers; and Make your developments more precise with automation. Written as a series of self-contained sections and filled with entertaining anecdotes, thoughtful examples, and interesting analogies, The Pragmatic Programmer illustrates the best practices and major pitfalls of many different aspects of software development. Whether you're a new coder, an experienced programmer, or a manager responsible for software projects, use these lessons daily, and you'll quickly see improvements in personal productivity, accuracy, and job satisfaction. You'll learn skills and develop habits and attitudes that form the foundation for long-term success in your career. You'll become a Pragmatic Programmer.

Community Reviews

Rating(4 / 5.0, 100 votes)
5 stars
35(35%)
4 stars
27(27%)
3 stars
38(38%)
2 stars
0(0%)
1 stars
0(0%)
100 reviews All reviews
April 17,2025
... Show More
A must-read for all programmers irrespective of how experienced one is! The book does a very good job of taking us through the most important aspects to be a good programmer.
April 17,2025
... Show More
Overall, good as a refresher of what has become common sense among more experienced and disciplined developers, with a valuable principle here and there.
April 17,2025
... Show More
While many complain about already knowing everything in the book, or that it's outdated, I believe they are quite missing the point. Perhaps this book didn't speak to you at the point you are at in developing your skills and crafts, but it might speak to someone else just beginning. Rating the book low for the reason it wasn't what you needed is rather disingenuous, as a rating should be a guide to the quality of the book overall.

The information contained in this book is essential for software developers who want to develop their skills and knowledge into a craft worthy of renown, to become masters of the field. It is essential for anyone working in a team or working solo.

The book is dated in the specific examples it uses, as would any book become so dated. What is *not* dated are the principles, the tips, the stories, the **wisdom** of this book.

As I was reading it, it felt all so familiar. Yes, most anyone who has been at the craft of software development will probably recognize much of this. I felt like the authors had been following me around during my consulting practice in the 90s as they pull from the same stories, lore and practice that I taught. Reading this book now, in 2012, I recognize all this and am grateful for the review. One may know a lot of practices, but having a refresher on the extent of what matters in software development helps.

As I approach a new team, a new job, I am looking to convey a lot of these concepts to people who may have only been cursorily exposed to them, and develop the team into a high quality, high craftsmanship group. This book will aid in that quite a bit, I hope (although the Russian translation may be lacking).

If you are just starting out, read this book.

If you are in the midst of your career, read this book.

If you are an experience veteran of the craft, or feel yourself a master, read this book, THEN TEACH IT.
April 17,2025
... Show More
O culegere de sfaturi și idei pentru programatori pragmatici, răsărite din zeci de ani de experiență. De asemenea, sfârșitul capitolelor conțin câteva exerciții (cu posibile răspunsuri) și provocări, pe care eu însă nu le-am sărit deocamdată.

În mare parte, mi-au plăcut ideile oferite de autori, precum:
•tconceptul ferestrei sparte, care pare a fi evenimentul comun care declanșează ruina clădirilor în bună stare; similar, precum codul care nu e ”clean” declanșează ruina programelor
•tsă admiți mereu când nu știi ceva, dar să îți asumi responsibilitatea să afli
•tsă îți menții atenția și asupra lucrurilor care se întâmplă în jur, nu numai asupra celor la care lucrezi
•tsă livrezi des pentru a putea avea feedback constant de la utilizatori
•tsă încerci să înțelegi necesitățile utilizatorilor atunci când aceștia solicită funcționalități noi
•tsă îți creezi o obișnuință din a investi în portofoliul propriu de cunoștințe (similar celor care investesc în portofolii financiare), învățând limbaje și lucruri noi, chiar și în afara orelor de serviciu, pentru a te menține mereu la curent. Diversificarea este cheia succesului pe termen lung
•tsă înveți un limbaj de programare nou în fiecare an, căci procesul de a învăța duce la modalități noi de a gândi, iar polenizarea ideilor este importantă
•tsă încerci mereu să creezi cod care e ușor de schimbat
•tsă ascunzi serviciile externe în spatele unor abstracții (e.g. interfețe)
•ta crea un prototip este o experiență de descoperire și este în esență o activitate a cărui scop este a învăța. Codul produs trebuie aruncat ulterior la coșul de gunoi, iar cei din jur trebuie să fie conștienți de asta
•tsă încerci provocarea de a lucra o săptămână fără mouse, ci numai cu tastatura, pentru a descoperi limitele acțiunilor pe care le poți face numai cu tastatura și pentru a-ți îmbunătăți ulterior productivitatea

De asemenea, au vorbit și despre nenumărate concepte de programare și pericolele sau beneficiile acestora, precum mixins, configurații, paralelism, dependențe temporale (din engleză, ”temporal coupling”), ”shared state” și ”mutable data”, testare, documentarea codului, optimizare prematură, securitate, denumiri, și altele asemenea. Aici opiniile lor sunt, în general, aliniate cu ideile agile și de ”clean code” ale altor autori, precum Robert C. Martin, Martin Fowler etc.

O anologie nouă, pe care am descoperit-o în această carte și care mi-a plăcut destul de mult, este că programarea se aseamănă cel mai mult cu grădinăritul: codul este maleabil și organic și trebuie plivit în mod constant pentru a evita ca buruienile să distrugă totul în mod ireparabil.
April 17,2025
... Show More
Review for the 20th anniversary edition, audiobook format:

This is a well known book, full of practical advice for programmers, now updated after 20 years with new examples, and some newer advice that aligns with the current times. Still the core of the book remains unchanged.

Who do I recommend this book to: Software engineers starting out in their careers

What works and doesn't work in audio format:
The audio production is top notch. I like the book narrator and occasional stories narrated by the authors. The code samples don't translate well into audio.
April 17,2025
... Show More
Seminal book for programmers - but the 20th edition is a superior read! They done an excellent job of bringing it into the modern programming era.
April 17,2025
... Show More
Good information for software developers / engineers. Very similar to Uncle Bob's books (Clean Coder, Clean Agile, etc). Teaches you how to think like an effective developer.
April 17,2025
... Show More
I enjoyed the pragmatic programmer.

Still I found myself skipping sections, especially where I felt the subjects discussed I already had a good grip on. Other parts just felt dated, like the sections on source control and "modular code" in the age of distributed git, npm and microservices.

I would definitely recommend this to programmers looking to up their game. The advice this book gives for you to become a better programmer is solid, and you'll find yourself agreeing with it. You should especially pay attention to the more general software design aspects the book discusses. Just don't get caught up trying to implement every single hardcore system engineering principle the book highlights.
Leave a Review
You must be logged in to rate and post a review. Register an account to get started.