| help | account  


Pragmatic Programmer: From Journeyman to Master
View Larger Image
Andrew Hunt, David Thomas
Addison-Wesley, Paperback, Published October 1999, 321 pages, ISBN 020161622X
List Price: $45.99
Our Price: $35.95
You Save: $10.04 (22% Off)


FREE Shipping on Orders over $40!*
Availability: In-Stock

Customer Reviews: 9     Average Customer Rating:

Write a Review and tell the world about this title!

People who purchase this book frequently purchase:

Books on similar topics, in best-seller order:Books from the same publisher, in best-seller order:

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.


Contents

Foreword xii
Preface xvii

1 A Pragmatic Philosophy 1

1. The Cat Ate My Source Code 2
2. Software Entropy 4
3. Stone Soup and Boiled Frogs
4. Good-Enough Software 9
5. Your Knowledge Portfolio 12
6. Communicate! 18

2 A Pragmatic Approach 25

7. The Evils of Duplication 26
8. Orthogonality 34
9. Reversibility 44
10. Tracer Bullets 48
11. Prototypes and Post-it Notes 53
12. Domain Languages 57
13. Estimating 64

3 The Basic Tools 71

14. The Power of Plain Text 73
15. Shell Games 77
16. Power Editing 82
17. Source Code Control 86
18. Debugging 90
19. Text Manipulation 99
20. Code Generators 102

4 Pragmatic Paranoia 107

21. Design by Contract 109
22. Dead Programs Tell No Lies 120
23. Assertive Programming 122
24. When to Use Exceptions 125
25. How to Balance Resources 129

5 Bend, or Break 137

26. Decoupling and the Law of Demeter 138
27. Metaprogramming 144
28. Temporal Coupling 150
29. It's Just a View 157
30. Blackboards 165

6 While You Are Coding 171

31. Programming by Coincidence 172
32. Algorithm Speed 177
33. Refactoring 184
34. Code That's Easy to Test 189
35. Evil Wizards 198

7 Before the Project 201

36. The Requirements Pit 202
37. Solving Impossible Puzzles 212
38. Not Until You're Ready 215
39. The Specification Trap 217
40. Circles and Arrows 220

8 Pragmatic Projects 223

41. Pragmatic Teams 224
42. Ubiquitous Automation 230
43. Ruthless Testing 237
44. It's All Writing 248
45. Great Expectations 255
46. Pride and Prejudice 258

Appendices

A Resources 261
Professional Societies 262
Building a Library 262
Internet Resources 266
Bibliography 275
B Answers to Exercises 279
Index 309

Customer Reviews

Customer Reviews: 9     Average Customer Rating:

Aug 15, 2006     Ken LeGro (klegro@totality.com) from USA
Stupendous Work
Overall, a fabulous body of work. The content hits home with any seasoned programmer. And, the style engages the reader without resorting to silly gimmicks (like images of smirky looking teenage girls.) If you read this book and take time to digest its character, your career-advancement opportunities will definitely improve. No doubt about it.

I only have one ideological disagreement with the book (and, I'm not sure how deep the disagreement runs since the topic isn't presented in much depth.) Anyway, chapter two includes a section entitled "Reversibility". In that section, the authors indicate that it is advantageous to "abstract the idea of your database [out of your application]." They intimate that your database should be abstracted into a "persistence service" which the application uses. I has not clear how the authors would implement such abstractions. They seems to be advocating a minimalist database approach. That is, remove database concerns from the architecture and let the App Server drive persistence needs. If true, then I think this information is misguided.

Modern databases (like Oracle) are not data dumps. And, the data abstraction problem isn't solved by less database involvement. Rather, in most cases, the converse is true. The abstraction problem is better addressed by more database involvement. Databases do far more than provide simple persistence. Databases are the preeminent tool in a Master programmer's toolbox. They are like the nucleus of programmer mechanics. Learn your database and learn it well. Otherwise, you will fall well short of the mastery you seek.

Now, this does not mean that you shouldn't think about abstraction when it comes to your data-model. The book is clear and unequivocal in this respect. Indeed, not abstracting the data-model from an application is as foolish as using the database as a simple persistence layer. What is important to realize is that your database engine is probably the most effective and sophisticated means of layering data access needs. So don't be quick to dismiss your database; it isn't "the problem." The problem is that many programmers reject the database due to a gross misunderstanding; these programmers have swallowed the myth of "database independence" (which, in pragmatic terms, is rubbish.) If you find someone who "knows" that an Application Server can supplant the capabilities of a tool like Oracle, please bring them inside (they've had too much sun.) For more information, I suggest that you Ask Tom (asktom.oracle.com/pls/ask.)

Nov 26, 2005     
Changed me as a programmer
Can't say enough good about this book of gems.

It's short, concise, readable like a thriller, and bubbling with the joy of building software.

One of the first books where I actually sat down and did some of the exercises ("man, I've got to try _that_ and compare my solution to their's").

This book has simply changed the way I viewed my profession, and was a blessed wake-up call. One year after consuming its pages for the first time, I am extremely grateful to have stumbled across it.

No. 1 on my top-5 list of software books, hands down.

Jul 28, 2005     Bill Costa (Bill.Costa@unh.edu) from New Hampshire (USA)
A solid foundation for newbies; a battery recharge for old pros.
I got this book many years ago and read it cover to cover; a rare thing for me to do with a technical book. Recently I pulled it off the bookshelf and put it on my nightstand, and I am enjoying it all over again. I have a Master's degree in CS and have been coding for over 25 years. From my own experience I can promise you that the information and advice in this book goes to the very heart of the art, science, and practice of computer programming -- in any language, in any environment. Even for an old coder, such as myself, it can serve as an inspiration to return to many of the best practices you already knew, but have unintentionally drifted away from over time. This valuable resource deserves a place on every coder's bookshelf.

May 2, 2004     Shepard Towindo (sqlcertified@yahoo.com) from USA
Muat read for any serious Software developer
This is it! Its a must read for any software development profession from a newb to a professional.

Sep 17, 2002     Sanjay Munjal from Auckland, New Zealand
Get this Book if you are serious about software development.
I suggest every programmer, software developer to read this book. I bet you will come back and write the same review like me. It is that simple!

Jan 2, 2002     Zlatko from ... around (still)
Hard-core of any programer's background
I have not much more to add (to previous comments) ... just to support them. This is one of those books that give something that helps build, or goes right down into, the very basic programming skills (the most important ones, I mean). And it goes beyond this, but this I find to be its most important contribution.

In my mind, it rates rather well even when compared with the "Programming Pearls", "The Practice of Programming" and a (very) few more evergreens of similar class (it is yet a different book, what only adds to its usefulness). Of course, one can not learn anything serious from a book or two ... but this is one of the books that gives a *lot* of what one needs to pick up and understand.

On the practical side, I can not imagine a type of (serious) programming activity for which one would not benefit from it -- I most highly recommend it regardless of what exactly you are doing (and I mean it, quite literally.)

May 14, 2001     Eric Rasmussen (ericr@ericr.org) from Alpharetta, GA
This is "The Timess Way of Building" for Software Development
This is one of those books that transcends time and technologies. The tools we use to implement software systems will evolve over time, but the skills we need to implement them well will not. This book offers wisdom and insight that will help you become a more effective software developer, regardless of the technology you use.

Mar 27, 2000     John S. from Franklin, Massachusetts, USA
A must read -- an excellent book
A book I've had trouble reading...because my wife keeps stealing it!!! I'm a developer and she manages ten developers (and no I don't work for her...at least during the day!). She has sent me back to bookpool to order three more copies for her and her team. And once again, my copy will be mine, all mine!

Dec 25, 1999     R. Bogetti from Illinois
Excellent!
Sure to be a classic! I highly recommend this book to anyone that would like to hone his or her programming skills. Filled with common sense and practical application of work experience and software development knowledge.



Forgot your password?
FAQs
Shipping Options
Returns
Your Orders
Your Account