Skip to content

A Really Good Book

← Back to blog | ADMIN | 14-07-2011

I was in a bookstore looking at software engineering books, and what to my wondering eyes should appear but … a book by Robert C. Martin.

Hexagon pattern 1

book on chairWay back in the Dark Ages of the mid-90s, I used to read a newsgroup called comp.lang.c++. You can tell this was the Dark Ages because A) it was a newsgroup, not a web board and B) growth of the C++ community hadn’t forced it to transition to comp.lang.c++.moderated in order to keep the signal/noise ratio high. One of the things I remember from this time was some guy who was thinking through ideas for a book and posting articles about design metrics for commentary from the group. I found the ideas interesting, but didn’t pay close attention. (Amusingly, I think I might have found one of these posts just now while Googling to double-check the group name.)

Fast-forward a year or two, when I was in a bookstore looking at computer science books and noticed a book: ‘Designing Object-Oriented C++ Applications Using the Booch Method’ by Robert C. Martin. I already had Booch’s book (the 2nd edition) and had loved it – especially the case studies where he would go through the design of a toy application. And yes, that’s a measure of my geekiness – I used to re-read those cases studies over and over just for the fun of it. Anyway, I looked into the book, and lo and behold it was the same guy whose posts I’d been reading on comp.lang.c++! And he had case studies!!! :)

Fast forward another ten years or so. I was working on ACIS at Spatial, and we were in the process of going Agile. I was in a bookstore looking at software engineering books, and what to my wondering eyes should appear but … a book by Robert C. Martin titled ‘Agile Software Development: Principles, Patterns, and Practices’! Which, when reading the preface, said “This book started out as a second edition to Designing, but that’s not how it turned out.” I actually (respectfully) disagree with this statement – I think that the heart of the book is section 2 ‘Agile Design’, and that this heart is unchanged (albeit rearranged and improved).

So why am I making such a big deal about this book? Because I think it’s the best book I’ve ever read at capturing the reason object-oriented design (OOD) is so important: it’s a methodology for using interfaces to break the naïve dependence of client code upon server code. As Martin says on page 2 of Designing: “Instead the dependency has been inverted so that the server depends on the interface.” The idea is that both the client and the server depend on the interface, which means that they can be independently modified. This is discussed in detail in chapter 11 of Agile: ‘DIP: The Dependency-Inversion Principle’. Each of the six chapters in section 2 of Agile discusses principles of similar importance; it is my view that all professional programmers should read and embrace this section of the book. I’m pretty sure that I’m not alone in this opinion, since he’s very well known within the C++ community.

Who else puts his books on their ‘must-read’ list?

You might also like...

5 Min read
3D Modeling
What is digital manufacturing? Here’s a simple digital manufacturing definition: the process of using computer systems...
5 Min read
3D Modeling
Software components are like the stage crew at a big concert performance: the audience doesn’t see them, but their...
Application Lifecycle Management Flow
4 Min read
3D Modeling
When you hear the term, Application Lifecycle Management (ALM), you likely think about the process that a software...
8 Min read
3D Modeling
What is Computer Aided Manufacturing The CAM Market Who Uses CAM Software? Trends in CAM What do CAM Software...
9 Min read
3D Modeling
SLS in Additive Manufacturing is used to convert 3D CAD designs into physical parts, in a matter of hours.
8 Min read
3D Modeling
There’s a lot of confusion around what the terms additive manufacturing and 3D printing mean.
4 Min read
3D Modeling
Additive manufacturing, often referred to as 3D printing, is a computer-controlled process for creating 3D objects.
5 Min read
3D Modeling
Take a fresh, new sheet of paper, and fold it in half, like you’re making a paper airplane. Place the folded paper on...
6 Min read
3D Modeling
Table of Contents Simulation in CAD Who Uses Simulation Modeling? Key Benefits of Simulation Modeling Challenges in...
8 Min read
3D Modeling
What do you do? What Exactly is FEM? What You Need to Know About Choosing a FEM Modeler FEM and Partial Differential...
5 Min read
3D Modeling
Computational Fluid Dynamics (CFD) is a type of analysis that provides insight into solving complex problems, and...
2 Min read
3D Modeling
WRL files are an extension of the Virtual Reality Modeling Language (VRML) format . VRML file types enable browser...
Voxel model example
3 Min read
3D Modeling
Voxels are to 3D what pixels are to 2D. Firstly -- let’s examine what pixels actually are. Everything you see on your...
Point_cloud_torus
2 Min read
3D Modeling
Point-cloud modeling is typically used in the process of 3D scanning objects. Rather than defining surfaces through...
Polygonal Modeling
2 Min read
3D Modeling
Polygonal (or polyhedral) modeling is the most common type of modeling for video games and animation studios. This type...
aerodynamics-CFD
9 Min read
3D Modeling
Computational fluid dynamics (CFD) is a science that uses data structures to solve issues of fluid flow -- like...
BREP Model example
2 Min read
3D Modeling
BRep modeling, or Boundary Representation modeling, is, in CAD applications, the most common type of modeling. BRep is...
Feature Recognition Zoomed
5 Min read
3D Modeling
IN THIS ARTICLE: What is FEA (Finite Element Analysis) Principles of Finite Element Analysis and Simulation Software A...