Stories
Slash Boxes
Comments

News for nerds, stuff that matters

The Pragmatic Programmer

Posted by Hemos on Wed Feb 16, 2000 08:58 AM
from the learn-your-skills dept.
Justin Harvey has written a review of The Pragmatic Programmer, a work famous for helping programmers develop their skills. Click below to learn more.
The Pragmatic Programmer
author Hunt, Andrew / Thomas, David
pages 320
publisher Addison-Wesley, 10/1999
rating 9/10
reviewer Justin Harvey
ISBN 0-201-61622-X
summary This book describes how to be an efficient and productive programmer.

The Scenario

The Pragmatic Programmer is a great view into what it takes to be a master at software engineering in this day and age. While the book has code examples in C, C++ and Java, if your primary language happens to be another, don't count this book out. You'll find it equally beneficial because the authors really focus on the core skills and methods of software engineering. This book is the K&R for methodology.

What's Bad?

TPP covers a lot about what we programmers love to hate: process, planning, documentation and requirements. However, don't skip over these parts. While we'd rather be reading about the different methods of code reuse or prototyping, it is important to take the time (and concentration) to read through these sections because they are integral to becoming a master at software development. Truthfully, the only bad thing about this book is that it has a very soft cover, it's too floppy for my taste.

What's Good?

If you're expecting this to be another Practice of Programming (Kernighan, Pike) you're in for a surprise. The book does have code examples, but it's just not about indenting or variable naming, it's about coding principles, methodology, philosophy, communication and practices.

Contrary to how it may sound, the book is actually very enjoyable to read and is full of interesting quotes, jokes and anecdotes. It is far from a dry, boring textbook.

So What's In It For Me?

If you do development in any language, this book is for you. Whether you're just starting out trying your hand at Java or are a Perl guru, there is always something more to learn. This book really stresses professional growth and suggests taking a different look at the way you're doing development today. If you can absorb 10% of this book, your work and code will improve. Following the tips and advice in this book will earn you the respect (or at least a tip of the hat) from fellow programmers as well as improve the relationships you have with vendors, product managers and management.

Not just for journeymen....

So you're an experienced programmer with 20 years under your belt and you think you know all there is to know about software engineering. Pick up this book and you'll find at least one helpful insight or process which will change your outlook on the way you do business. That's one of the great things about this book, whether you're a journeyman or a master, you'll discover something new.

A plethora of idioms, catch phrases and buzzwords.

The book has a lot of idioms, catch phrases and buzzwords that you might have heard from a team member and wondered what the hell they're talking about. The authors spend a good amount of time carefully explaining each of these concepts and how it relates to our coding. Here are just a few, let's see how many you know:

  • Orthogonal
  • Decoupling (Temporal and Modular)
  • Laws of Demeter
  • Design By Contract
  • Metaprogramming
  • Tracer Bullets Programs
Read the book, pick up a few of these phrases and impress your team members while confusing script kiddies.

X is better than Y

We've heard it a thousand times, X is better than Y. If it's not emacs is better than vi, it's C vs C++ or it's Linux vs Microsoft. I like this book because it's very programming language and operating system agnostic. TPP does have examples in different languages but it goes far beyond choosing a side, it has a more practical view of "right tool, for the right job". Not only do they try to emphasize the right tool, but also looking at the way you're programming today in a different light. They suggest things like: if you're a UNIX geek with your editor and makefiles, try using an IDE. If you're a Windows programmer, try using a UNIX machine or command line interface to the tools. They go more in depth suggesting various strategies encouraging growth.

Humor Value

And last, but not least, the book has a lot of funny quotes from famous people, stories of foolish and funny programming errors, and amusing tip boxes sprinkled throughout each chapter.

Some of my favorites tips from the book

  • Tip #11: Don't Repeat Yourself (DRY)
  • Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

  • Tip #15: Use Tracer Bullets to Find the Target
  • Tracer bullets let you home in on your target by trying things and seeing how close they land.

  • Tip #20: Keep Knowledge in Plain Text
  • Plain text won't become obsolete. It helps leverage your work and simplifies debugging and test.

This one isn't a tip, but it has a whole section devoted to it: The Law of Demeter for Functions:

An object's method should call only methods belonging to:

  • Itself
  • Objects it creates
  • Component Objets

In closing

I read a lot of software engineering books, both technical and about methodology, and I would recommend this book to be on every programmer's shelf, right next to the K&R, and Practice of Programming. I hope you enjoy it as much as I have.

justharv jbharvey@foobarbaz.com

Purchase this book at fatbrain.

Table of Contents

  1. A PRAGMATIC PHILOSOPHY
  2. A PRAGMATIC APPROACH
  3. THE BASIC TOOLS
  4. PRAGMATIC PARANOIA
  5. BEND OR BREAK
  6. WHILE YOU ARE CODING
  7. BEFORE THE PROJECT
  8. PRAGMATIC PROJECTS
  9. APPENDICES
This discussion has been archived. No new comments can be posted.
The Pragmatic Programmer | Log In/Create an Account | Top | 115 comments (Spill at 50!) | Index Only | Search Discussion
Display Options Threshold:
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
(1) | 2
(1) | 2