For some shameful reason, most probably because of some profound ignorance on our side, we managed to publish four years of this magazine without mentioning James “Jim” (“Cope”) Coplien not even once. It is high time to correct this, and there is no better moment to do that than in this issue dedicated to Object-Oriented Programming.
James Coplien has had a long relationship with Agile and OOP; he was Program Chair at OOPSLA 1996; he gave a name to the “Curiously Recurring Template Pattern” in C++; he studied Borland’s software engineering craftsmanship and quality; dared to mock the Gang of Four patterns; and he also wrote in 1991 what many consider to be one of the best books about C++ ever published: “Advanced C++: Programming Styles and Idioms.” His influence is such that Kent Beck, who defines himself in terms of relationships, claims to have invented Extreme Programming based on Jim’s ideas. The 1990s was an exciting time for object-oriented discussions; we were still far away from the times of the backlash.
A prolific author, we could easily have talked about James in the Library section of this magazine; instead, we will focus our attention on a particular video. In GOTO Berlin 2017, he gave a substantial overview of his thinking around Agile, OOP, testing, and programming in a now-classic video: “The Dehumanisation of Agile and Objects.”
The gist of the video stands in a single concept, whereby the Agile and Object Orientation movements were essentially born with the same goal: to channel human thinking into software artifacts as faithfully as possible. In essence, objects were a mechanism to model concepts, which is why the Agile Manifesto stresses so much “Individuals and interactions over processes and tools.”
It was all about humans. Yet… we got it all wrong; maybe, ironically enough, because we are humans. Instead of objects, we got classes; instead of Agile, we got SAFe; instead of building quality into our software, we got TDD.
Unbeknownst to many software developers, the work of MIT’s Seymour Papert is the origin of OOP, who based his research on the findings of Swiss child psychologist Jean Piaget. A child psychologist. Now it all makes sense: the reason why Adele Goldberg and Alan Kay built a tool named “Smalltalk” is to be able to teach programming to kids. Thus James Coplien asserts, and rightfully so, that “every product owner should be a UX person” (minute 44:05.) We wanted to allow kids to discover the world by themselves, using a Dynabook (not an iPad.) Instead, we have social networks “gamifying” and “monetizing” their interactions, feeding their brains with the image of a divided, unbearable, immutable world.
Having almost literally thrown the water with the babies, our industry insists on quarreling about programming language A versus B, multiple versus single inheritance, strong versus weak typing, tabs versus spaces, JSON versus YAML, or whether to curly brackets or not.
This video lets some desperation through; you have been warned. It has a long run of epic quotes; here are just a few:
“If you are working on one class at a time, you don’t even know where the link to the next object goes. By design you are not allowed to know where it goes because of this wonderful thing called polymorphism. It’s GOTOs on steroids!”
“TDD is not a testing technique, it’s a design technique.”
“Our industry cannot afford to suck a little less; we need paradigm shifts.”
“There’s no DevOps teams in Scrum.”
(About Daily Scrums) “Now here you are, you’re probably all in a Scrum team and you’ve been doing this a million times and you don’t know what you’re doing!”
“These conferences are doing unbelievable damage (…) and have driven both Agile and Object-Orientation into the ground.”
Finally, to the question, “I’m trapped working in a Java shop, what should I do?” James replied with an Obama-style mic drop: “You should refactor… your CV.” (minute 50:16).
Besides the fun, Jim makes an interesting final observation about the things that are actually working well in the industry nowadays. These are regression and integration test automation, mob programming, refactoring organizational structures, and UX knowledge in general. Interestingly, he also mentions microservices (individual entities, developed and deployed separately, and most importantly, interacting via messaging) as a proper OOP paradigm, a point also raised by Graham in his book “OOP The Easy Way,” published in 2018.
Jim Coplien ends his talk with a simple call to action: at every conference where new technology is introduced, software engineers should strive to be skeptical; to ask whether it improves the quality of life of society as a whole, and to take it home only to increase the human value of our products and services.
Focus on the people. Again and again. Because that is what Agile and OOP were all about, to begin with.
Graham explained in his AppBuilders 2018 talk, one that fits this edition of De Programmatica Ipsum perfectly well, that if monads are burritos (are they?), then objects are jam donuts. Maybe we got Agile and OOP completely wrong.
Complement James Coplien’s GOTO Berlin Conference video with a discussion between him and Robert “Uncle Bob” Martin at the 2007 JAOO Conference about TDD. In it, Jim explained his disagreement with Martin’s idea of professionalism being directly connected to the practice of TDD. Jim repeats this concept at the very end of the GOTO video discussed in this article; he has written contrarian views about TDD in the past, and his sentiments are shared by other prominent bloggers.
(We will not mention Mr. Martin any further in this magazine; it is time to move on, and we say this fully aware that this simple phrase will suffice to alienate a substantial segment of our readership. So be it.)
James Coplien’s talk “The Dehumanisation of Agile and Objects” is part of the GOTO Conferences YouTube channel, by far one of the most interesting YouTube channels you could subscribe to. This particular video includes a very helpful “first comment” from Jim himself, promptly pinned by the GOTO Conference team, with a full list of topics and references to the various papers and books mentioned therein.
Or even better, attend the next GOTO Conference nearby. You will not regret it.
: JAOO is the direct ancestor of the GOTO Conferences. Both conferences were created and managed by the same team at Trifork, an organization with which this author has had a fruitful relationship in the past.
Cover snapshot by the author.