Monday, June 8, 2009

The Object Primer 3rd Edition


The Object Primer: Agile Model Driven Development by Scott Ambler is the book I'm reading at work during lunch. In terms of introducing object-oriented concepts it is, in fact, a primer; very basic, starting off almost from scratch. Going back to basics is something everyone should do every once in a while... I have a definite tendency to make things as complicated as I can, and it's good to read a text that boils a topic down to the very basics.

It was written in 2004, and it's interesting how technology changes. One of the first chapters introduces the basic building blocks of business-oriented application development: object technology, relational databases, Web services, and XML. By "object technology" he means a rich domain model expressed in terms of the problem domain. I hardly ever see object technology applied in the disciplined way he describes... Maybe I've been working on the wrong projects. As for relational databases, they have certainly been everyone's bread and butter for over a generation now, but it is amazing how few programmers really know anything about them. The very largest Web sites don't seem to use traditional relational databases for the most part but every application I've written for over 20 years now is backed by one. Web services seem to be falling out of fashion in favor of plain old XML ("POX") and URL-driven interfaces.

But that is just the first chapter. I'm reading the book for practical experience and guidance on modeling - something I hardly ever do - I prefer writing paragraphs of text (much like this post that you are reading now), over boxes and arrows. But long and painful experience shows that modeling can be a huge help to team communication, team thought, communicating with the customer and management, etc. And it can help you write better software... All the problems arise from too much modeling, too early in the project; pro forma modeling done to fulfill a checklist by people who could care less about the model itself; and models that only partly reflect reality so they can't be trusted as a description of the actual software.

My hope from reading this book is to help me use models effectively, avoiding these traps.

No comments: