For year’s I have been writing about what I called Flow-Design: a way of designing software by focussing on data flows first. Flow first, classes later. I even wrote a book with that term in the title:
I don’t know when the name “Flow-Design” first came up while I was working with Stefan Lieser on promoting clean code development from 2009 on. But it was a long time ago and it seemed absolutely fitting.
In the past two or three years, however, I noticed a change in my language, when I was talking about this approach to software design. More and more the term Flow-Design moved into the background and something else came to my mind more readily: Radical Object-Orientation.
Why was that? I don’t really know. I just noticed a change in my explanations. But I think there are two reasons at least:
Radical Object-Orientation emphazises the origin of the design approach. Because it all started when I looked closer at the roots of object-orientation. I was so dissatisfied by mainstream OOP that I thought, something must have been “lost in translation”. I could not believe that OOP was supposed to be that hard or confusing. Why weren’t 20 years of OOP (since the beginning of the 1990s) not enough to make it for everyone a straightforward thing? Design patterns were an early attempt - which largely failed. UML tried it from a different angle - and failed again. DDD did not really try to fix this, but was misunderstood as yet another attempt - to no avail. Since my early experiments with C++ in 1991 I had been unable to grasp OOP fully and saw many devs around me struggling in the same way. So, finally maybe in 2012 I decided it was not my fault. There had to be a root problem and I wanted to get to the bottom of it. That’s when I first had a really hard look at what Alan Kay had said back in 1967.
Flow-Design was descriptive of what applying the approach looked like. But wherever I used the term nobody knew what I meant by it at first. I had to explain a lot before anybody could be intrigued to give it a try. It did not ring a single bell for them. Over time that became very frustrating and tiring. Hence, I think, I was looking for a name which was easier to connect to for developers. That’s true for Radical Object-Orientation: “object-orientation” is ringing more than one bell and “radical” sounds strange, but also somehow true in connection with that. It tickles people’s interest. “What do you mean by that? I know object-orientation. What’s so radical about your approach?”
There you have it. It’s a marketing trick of some sort, I guess😁 “Flow-Design” has to become “Radical Object-Orientation” to be more palatable for more developers. Once their curiosity is piqued, we can enter a discussion starting on a different level compared to “Flow-Design”. Objects are the common ground to begin the exploration of a different approach to software design from. Objects, not some strange flows. (But of course we’ll get to flows pretty quickly since they are at the heart of Alan Kay’s vision.)
Yes, I feel very happy with the rebranding. Radical Object-Orientation is a less scary name, it connects to what’s already known, and it comes with a story. Well, two stories even: my personal story plus the story of developing a whole software design paradigm from a simple image while also tying in a lot of well-known clean code development principles and practices.
If you want to be part of the story, hit the button and don’t miss any step of the journey: