- Save 10% on Books for Schools offered by Amazon.co.uk when you purchase 10 or more of the same book. Here's how (terms and conditions apply) Enter code SCHOOLS2017 at checkout. Here's how (terms and conditions apply)
The Pragmatic Programmer Paperback – 20 Oct 1999
|New from||Used from|
- Choose from over 13,000 locations across the UK
- Prime members get unlimited deliveries at no additional cost
- Find your preferred location and add it to your address book
- Dispatch to this address when you check out
Special offers and product promotions
Frequently bought together
Customers who bought this item also bought
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
Would you like to tell us about a lower price?
If you are a seller for this product, would you like to suggest updates through seller support?
Programmers are craftspeople. They are trained to use a certain set of tools(editors, object mangers, version trackers) to generate a certain kind of product (programs) that will operate in some environment (operating systems on hardware assemblies). Like any other craft, computer programming has spawned a body of wisdom, most of which isn't taught at universities or in certification classes. Rather, most programmers arrive at the so-called tricks of the trade over time, by independent experimentation. In ThePragmatic Programmer, Andrew Hunt and David Thomas codify many of the truths they've discovered during their respective careers as designers of software and writers of code.
Some of the authors' nuggets of pragmatism are concrete, and the path to their implementation is clear. They advise readers to learn one text editor, for example, and use it for everything. They recommend the use of version-tracking software for even the smallest projects, and promote the merits of learning regular expression syntax and a text-manipulation language. Other (perhaps more valuable) advice is softer. The authors note in their section on debugging, "if you see hoof prints think horses, notzebras". That is, suspect everything, but start looking for problems in the most obvious places. They offer some advice on making estimates of time and expense, and on integrating testing into the development process. You'll want a copy of The Pragmatic Programmer for two reasons: It displays your own accumulated wisdom more cleanly than you ever bothered to state it and it introduces you to methods of work that you may not yet have considered. Working programmers will enjoy this book.
Topics covered: A workmanlike approach to software design and construction that allows for efficient, profitable development of high-quality products. Elements of the approach include specification development, customer relations, team management, design practices, development tools, and testing procedures. The authors present their approach with the help of anecdotes and technical problems. --DavidWall, amazon.com
From the Back Cover
What others in the trenches say about The Pragmatic Programmer...
“The cool thing about this book is that it’s great for keeping the programming process fresh. The book helps you to continue to grow and clearly comes from people who have been there.”―Kent Beck, author of Extreme Programming Explained: Embrace Change
“I found this book to be a great mix of solid advice and wonderful analogies!”―Martin Fowler, author of Refactoring and UML Distilled
“I would buy a copy, read it twice, then tell all my colleagues to run out and grab a copy. This is a book I would never loan because I would worry about it being lost.”―Kevin Ruland, Management Science, MSG-Logistics
“The wisdom and practical experience of the authors is obvious. The topics presented are relevant and useful.... By far its greatest strength for me has been the outstanding analogies―tracer bullets, broken windows, and the fabulous helicopter-based explanation of the need for orthogonality, especially in a crisis situation. I have little doubt that this book will eventually become an excellent source of useful information for journeymen programmers and expert mentors alike.”―John Lakos, author of Large-Scale C++ Software Design
“This is the sort of book I will buy a dozen copies of when it comes out so I can give it to my clients.”―Eric Vought, Software Engineer
“Most modern books on software development fail to cover the basics of what makes a great software developer, instead spending their time on syntax or technology where in reality the greatest leverage possible for any software team is in having talented developers who really know their craft well. An excellent book.”―Pete McBreen, Independent Consultant
“Since reading this book, I have implemented many of the practical suggestions and tips it contains. Across the board, they have saved my company time and money while helping me get my job done quicker! This should be a desktop reference for everyone who works with code for a living.”―Jared Richardson, Senior Software Developer, iRenaissance, Inc.
“I would like to see this issued to every new employee at my company....”―Chris Cleeland, Senior Software Engineer, Object Computing, Inc.
“If I’m putting together a project, it’s the authors of this book that I want. . . . And failing that I’d settle for people who’ve read their book.”―Ward Cunningham
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.
See all Product description
What other items do customers buy after viewing this item?
Top customer reviews
I will imidiately agree with some of the negative reviewers that the book states "the obvious". But that is the whole point, dammit! I do know that I should not do so-and-so, but I still do the bad thing occasionally. The book shows me - gently! - other ways.
Some may be irritated because of the elementary stuff and simple language (and "no examples"), but if you need examples, you have perhaps not that many years of practical experience. I, at least, do not feel the need.
Some say that the book is part of the eXtreem Programming paradigm. Well, no - I think the book to be unrelated to a particular school of thoughts. Instead it is a book that every programmer can relate to.
A few days ago, I visited a bookshop and bought this book. I sat up half the night reading it. In a few years, I think it might be as famous as "Programming Pearls". It certainly reminds me more of "Pearls" than does any other book I can think of.
The book is a whirlwind tour of a wide range of interesting topics. (Examples, chosen at random by opening the book to random pages: "tracer bullets", a variety of exploratory programming; the advantages of plain-text representations of data; how to handle resources like memory and open files; how to apply the old GUI technique of separating "models" and "views" to things that have nothing to do with user interfaces; how to organise a project team; the value of exceeding expectations.)
The writing is clear and lively. The authors have a keen sense of humour and a fine feel for apposite quotations.
The book is structured as a series of 46 sections, in 8 chapters. Along the way, they give 70 brief tips (random examples: "Don't Repeat Yourself"; "Estimate to avoid surprises"; "Write code that writes code"; "Separate views from models"; "Don't use wizard code you don't understand"; "Expensive tools do not produce better designs"; "Sign your work"). There's a pull-out card in the back of the book that contains all the tips, and a few "checklists" too.
I only found one typo. The typography is pretty good, although I happen to detest the main typeface they've used. The binding is bad; it looks fine, but (on my copy, at least) the covers have a distressing tendency to curl outwards. The pull-out card at the back is difficult to pull out without damaging anything.
I gave some random examples earlier. Here are a few highlights.
1. An excellent attack on what they call "programming by coincidence": being happy when your system works even if you don't know why it works.
2. A discussion of the benefits of automation: code generators, text munging tools to massage your source code, automated test suites and the like.
3. The multitude of little insights scattered through the book: even in sections whose topics I already knew plenty about, there were usually one or two startling observations or neat tricks or insightful points of view.
Lowlights? Because the book covers such a lot of ground, they have to skim over a lot of issues (but don't misunderstand me; there's plenty of meat here). And the two purely mechanical things I mentioned above. I think the only two sections I learned nothing from were the ones on Algorithm Speed (which I think is rather shallow) and Refactoring (which does have some not-generally-known ideas in it; but I've just finished reading Martin Fowler's book on refactoring).
Neophytes will learn a lot from the book. Old hands ought to know most of what's in here, though too many don't; those who do will still find enough that's new to justify the price, and have a lot of fun reading it.
A fine book: enjoyable and instructive.
The key principal is one that I (and most people) probably subscribe to, perhaps even subconsciously, which is called 'DRY', which stands for 'Don't Repeat Yourself'. The difference is that the authors explain how to apply this to _all_ aspects of your job, not just the obvious one which is code re-use and sharing.
In general, the message seems to be 'invest time in the short term to automate and increase efficiency in the long term'. A sensible message, but one that many people (and I most definitely include myself here) avoid doing because of the initial time and effort involved in learning the required technologies and implementing the automation (Emacs and Perl for example).
Other advice I particularly agreed with was the importance of recognizing limitations of methodologies and diagram-types, and using them as a guide and communication medium rather than as an end in themselves. I also really liked the sections on decoupling, which has a nice introduction to JavaSpaces - a really cool paradigm for certain classes of problem.
In summary, this is not really a reference book - instead it's a 'memory-jogger', reiterating many things you already know at some intuitive level, but fail to follow - up due to external pressures or just plain homeostasis.
Would you like to see more reviews about this item?
Most recent customer reviews
Look for similar items by category