The Pragmatic Programmer
|
| Author
|
A. Hunt, D. Thomas |
| Publisher |
Addison Wesley
[http://www.awl.com/cseng] |
| ISBN |
020161622X |
| Published |
1999-10 |
| Price |
34.95 USD |
| Features |
[352 pages] |
| Abstract |
Discusses software projects best practicesa and pitfalls
|
| Rating |
2
|
| Reviewer |
Darren Collins |
| Categories | cpp |
|
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 favorite 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. 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?" Here's a definition from www.dictionary.com:
pragmatic (adj)
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 humorous 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 organized 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 program 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, programming languages, 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 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.