||The Pragmatic Programmer: From Journeyman to Master|
by Andrew Hunt and David Thomas
352 pages (October 1999)
Addison Wesley Pub Co, ISBN 0201485672
Buy at Amazon.com.
So, you think you know C++ pretty well? Does that make you a good developer?
Not according to Andrew Hunt and David Thomas, the authors of The Pragmatic Programmer. There's a lot more to software development than just writing down statements in your favourite programming language.
Hunt and Thomas view programming as a craft. Just like carpentry, sewing, boat building and other crafts, computer programming has its basic skills. But, like those other crafts, there's also a whole body of knowledge that isn't taught in colleges, universities or training courses. It can only be picked up on the job, by getting your hands dirty and gaining real-world experience.
If you're anything like me, your first question when you read the title of this book was, "What does 'pragmatic' mean?" Don't worry, I looked it up at www.dictionary.com:
1) concerned with practical matters: "a matter-of-fact (or pragmatic) approach to the problem"
2) of or concerning the theory of pragmatism
3) guided by practical experience and observation rather than theory
The Pragmatic Programmer is exactly that. This book is a hard copy of the distilled knowledge of a couple of exceptional programmers, not some lengthy academic monologue about software engineering theory or the latest methodology. It really is full of practical, concrete advice, with a liberal sprinkling of interesting and humourous anecdotes, stories and quotes.
An apprentice carpenter spends hours learning how and when to use a hand saw, a circular saw, a plane, a chisel and the rest of his tools. The Pragmatic Programmer encourages programmers to do the same — select and master a good text editor, a command-line shell, a scripting language, a compiler, linker and debugger, and a source code control system, in addition to your primary programming language.
The book doesn't, however, enter into religious arguments about whether you should choose emacs or vi, Perl or Python, ksh or bash. These are all personal decisions, just like a carpenter choosing which plane to buy. Pick the one that suits you, that feels good in your hands, that is capable of doing the job at hand, and then get on with the real job.
The rest of the book is equally practical. It covers the use of assertions, design by contract, testing, refactoring, code generators and wizards, requirements specifications, project management, being a team player and so on, giving real examples you can start using today to improve your development practices.
The structure of The Pragmatic Programmer is matter-of-fact and informal. It is made up of short (1 or 2 page) tips, arranged under related sections which are organised into 8 chapters covering all the major topics of software development from philosophy to project management. Each tip only takes 5 or 10 minutes to read — keep it by the computer to browse while your code compiles, carry it with you to a doctor's appointment, or take it to read on the train on the way home.
Most sections in the book end with a couple of questions or challenges. Some are programming exercises (with the authors' answers in the back of the book), while others just raise interesting points to ponder. Some of these questions really got me thinking about the way I work!
The appendix contains a list of references to periodicals, books, papers and web sites that will keep you busy for years. It also lists web sites for popular editors, compilers, languages and other development tools, and a hefty bibliography for those that want to read more about the topics raised in the book.
The Pragmatic Programmer is aimed at people who already know how to program, but feel they are not achieving their full potential. It will fast-track your accumulation of experience. You'll begin to write better software, have greater control over your tools and development process, and you'll enjoy your work more as your confidence grows.
Everyone who programs has at some stage come across a person that seems to consistently produce great code. They always know how to approach a thorny problem, and they know where to look for bugs in your code. They always seem to know of a tool that can help with the current challenge. Everyone looks up to them, and wants to be like them. What do they know that we don't?
Read The Pragmatic Programmer.
You just might find some answers.
Read more at Amazon.com.