The Pragmatic Programmer: From Journeyman to Master
by Andrew Hunt and David Thomas
Straight from the programming trenches, The Pragmatic Programmer: From Journeyman to Master cuts through the increasing specialization and technicalities of modern software development to examine the core process—what do you do, as an individual and as a team, if you want to create software that’s easy to work with and good for your users.
This is the title that got us started in the book business. It’s published by Addison-Wesley, but we’re offering for sale here simply because people come looking for it.
Enjoy!
Dave & Andy
ISBN: 978-0-2016-1622-4
Buy Now
About this Book
Read this book, and you’ll learn how to:
- Fight software rot.
- Catalyze change.
- Avoid the trap of duplicating knowledge.
- Write flexible, dynamic and adaptable code.
- Harness the power of basic tools.
- Avoid programming by coincidence.
- Bullet-proof your code with contracts, assertions and exceptions.
- Capture real requirements.
- Keep formal tools in their place.
- Test ruthlessly and effectively.
- Delight your users.
- Build teams of pragmatic programmers.
- Take responsibility for your work and career.
- Make your developments more precise with automation.
Contents and Extracts
The Pragmatic Programmer is written as 46 small sections, each section ranging from two to ten pages long. Associated with most sections are a small set of exercises (with answers) and possibly one or two challenges:
- FOREWORD
- PREFACE
- 1 A PRAGMATIC PHILOSOPHY
- 1. The Cat Ate My Source Code
- 2. Software Entropy
- 3. Stone Soup and Boiled Frogs
- 4. Good-Enough Software
- 5. Your Knowledge Portfolio
- 6. Communicate!
- 2 A PRAGMATIC APPROACH
- 7. The Evils of Duplication
- 8. Orthogonality
- 9. Reversibility
- 10. Tracer Bullets
- 11. Prototypes and Post-it Notes
- 12. Domain Languages
- 13. Estimating
- 3 THE BASIC TOOLS
- 14. The Power of Plain Text
- 15. Shell Games
- 16. Power Editing
- 17. Source Code Control
- 18. Debugging
- 19. Text Manipulation
- 20. Code Generators
- 4 PRAGMATIC PARANOIA
- 21. Design by Contract
- 22. Dead Programs Tell No Lies
- 23. Assertive Programming
- 24. When to Use Exceptions
- 25. How to Balance Resources
- 5 BEND, OR BREAK
- 26. Decoupling and the Law of Demeter
- 27. Metaprogramming
- 28. Temporal Coupling
- 29. It’s Just a View
- 30. Blackboards
- 6 WHILE YOU ARE CODING
- 31. Programming by Coincidence
- 32. Algorithm Speed
- 33. Refactoring
- 34. Code That’s Easy to Test
- 35. Evil Wizards
- 7 BEFORE THE PROJECT
- 36. The Requirements Pit
- 37. Solving Impossible Puzzles
- 38. Not Until You’re Ready
- 39. The Specification Trap
- 40. Circles and Arrows
- 8 PRAGMATIC PROJECTS
- 41. Pragmatic Teams
- 42. Ubiquitous Automation
- 43. Ruthless Testing
- 44. It’s All Writing
- 45. Great Expectations
- 46. Pride and Prejudice
- Appendices
- A RESOURCES
- B ANSWERS TO EXERCISES
- INDEX
About the Author
Andy and Dave run the Pragmatic Bookshelf. Before that, we wrote a whole bunch of software, and worked with teams to help them write even more software.
One day we hope to get it right.

