Pragmatic Objects
Pragmatic Objects is a philosophy of object-oriented programming. It contains a set of guidelines, incentives, heuristics, practices and patterns to develop object-oriented software.
This little book is my attempt to put together my ideas about object-oriented software development.
Most of our industry develops using so-called "object-oriented languages". Dominating the scene are JavaScript, Java, C#, Python, PHP & Ruby, all incorporating some flavor of object orientation. However, using classes doesn't mean the program will be object-oriented. In other words, it is not enough to use an object-oriented language to create an object-oriented software.
The biggest issue is that most people think they're doing object-oriented programming and blame object-orientation for issues that are not related to object-orientation. Their code is mostly procedural code wrapped in classes and does not benefits from object-oriented ideas at all.
This is mostly due to the way object-orientation is taught at school, with a focus on the technicalities (classes, inheritance...) rather than the design. However, object-orientation lies much more in the design and much less in the technicality, such that you can create perfectly object-oriented program in a procedural language like C, yet write an absurdly procedural program in Java.
Now, I don't want to blame anyone or argue against procedural programming, it's a very fine way to develop programs. But most of those thinking they're doing OO are missing out.
They have no idea how bad they're missing out and how far away they are from taking full benefits of OO.
That's the motivation for my effort in writing this book : to provide guidance, ideas, tools and principles toward a more object-oriented programming style.
But why "pragmatic" ? Would it be saying that object-orientation isn't pragmatic ?
Not exactly. The first developers of Simula were very pragmatic. The thinkers behind Smalltalk were very pragmatic. Heck, even the authors of The Pragmatic Programmer were heavy on object-orientation ! It turns out that most ideas that emerged in the industry of software engineering where developed within the object community. Think DRY, SOLID, the law of demeter... All born from the industry, from the field, and all born from the object people.
However, the integral concept of OO may be very difficult to achieve. If you're familiar with Object Thinking or Elegant Objects, you may have some idea of what I'm talking about. Reaching purity in OO in the modern world asks for a lot of effort. Would it be rewarding to follow that path ? I can assure you it is. But I don't want to scare people away from OO, an already quite obscure concept, and I would like to ease the transition from absence of OO to better OO.
That's the idea behind Pragmatic Objects. An attempt to setup a modern, up to date set of guidelines, heuristics, practices and patterns about modern object-oriented development. One that I have successfully applied as part of my work, one that I have taught to more than 1000 developers.
One that, I hope, will reconcile you with object-oriented design.
Last updated