Software, Humans, and Emancipation
DDD Europe 2017 in Amsterdam was a blast, once again. The line-up of the conference was decided by one man, Mathias. We’re lucky he has very good taste and a large culture so he invited fantastic speakers! Although the conference was primarily about Domain-Driven Design, I had the impression of an implicit recurring theme across the various talks this year, revolving around the idea of “Emancipation” of people in software.
Emancipation: The fact or process of being set free from legal, social, or political restrictions
— Oxford dictionary
Emancipation of the non-programmers — Mel Conway
Mel Conway, the author of the Conway’s Law himself, started the first opening keynote by stating that software is so everywhere that everyone should have a concrete grasp on it. Not just using, but also creating bits of software. It should not be seen as magic reserved to just a few. Mel Conway is researching what it would take for software to become accessible to just everyone, with 12 principles explained in a short paper online.
I believe that spreadsheets are a perfect example of what he describes. That’s programming without even seeing it as programming. Spreadsheets are tools of emancipation for people, and even for managers, who can create they own programs by themselves. Still, at some point we need programmers. Mel Conway advocates we must carefully design the boundary between the non professional and the professional programmers.
I suggest you read his first paper on these ideas, Its an enjoyable read with anecdotes from his career which help understand his point.
Emancipation of developers as the inhabitants of software — Rebecca Wirfs-Brock
Rebecca Wirfs-Brock opened the second day keynote with a talk on Heuristics in design. Note that I’m a fan of Rebecca, she’s got so much experience in design and architecture. She gave the audience a huge list of pointers to ideas and design literature, in software and outside of software as well.
Heuristics compete with each other, they can contradict each other, and still they remain useful. Heuristics help us in a gentle way, but we remain firmly in the driver seat. Heuristics help us solve problems, and also help us making the software we work in more habitable.
Through the use of patterns, heuristics, and paying attention to what Christopher Alexander calls “Centers”, we help humans build software they can live more comfortably in.
While talking about algorithms, classes and interfaces, Rebecca repeatedly borrows concepts from Asian philosophy in her talk, and so does David West in the next talk. It’s about humans more than computers.
Emancipation of programmers outside of their traditional role — David West
I have to admit I didn’t know David West much before the conference, but now I’m a fan! David took us back in 1968. At that time, DDD was a tautology! Programmers were banking professionals who could also code. Programmers would attend the quarterly training on banking just like everyone else in the business. No divide between programmers and business people.
Then the NATO Software Engineering Conference in 1968 at Garmisch, Germany declared the controversial “Software Crisis”. Its was basically a major problem of supply and demand. To solve this imbalance the term Software Engineering was introduced. Programmer would become specialists of software, and would know nothing about business. What a sad idea indeed!
No everyone agreed, and there was objection.
But since then “most revolts have failed, except perhaps micro-services”. Scrum adoption went back to control and split of responsibilities. “Is there a way forward to solve this mess?” It’s our job as a profession to fix this big toxic divorce. David West is calling for ambition there: “Don’t go half-way DDD!” Go out of the building, understand the business domain yourselves, and “enhance the work environment and the humanity of the users!”
He also denounces the agenda of Computer Science and Software Engineering which “set themselves the task of replicating the Real in the Artificial”. What to say about disciples which want to make humans redundant?
Software construction is a creative process. Great designers are ‘modern polymaths’ who need to read and learn from various fields, not just software: biology, philosophy, music, novels…
This talk is all about calls for action for programmers, with references to Asian philosophy: “you need to start transcending at some point”. And if you think that Software Craftsmanship is already about all that, it’s still not enough:
Embrace everything! Diverse yourself, read on any topic, and read novels too.
During question with David West before and after this talk, he suggests we read the following: https://en.wikipedia.org/wiki/The_Interpretation_of_Cultures and http://www.sei.cmu.edu/uls/
You may have a look at the live-tweets of this talk: https://storify.com/cyriux/david-west-talk-at-ddd-europe-2017
Emancipation from our inhibitions —Andra Sonea
What if we created a bank. From scratch. — Stop kidding me, that’s impossible! — Are you sure?
Andrea Sonea takes us on this crazy journey of finding out what it would take to build a bank outside of the traditional banks. I could not attend her workshop which was scheduled at the same time as mine, but I’ve been lucky to spend time discussing with her. Coming from a company architecture background, she has the huge ambition to challenge the general belief that Fintechs should always be backed by traditional banks. Talking to her is really ambition-boosting. What if the impossible was possible, provided that we at the minimum dare to consider it?
Don’t limit yourself with beliefs such as “it’s not for me” or “it’s not my job to do that”.
As a software professional, you can step into business land as David West is calling us to do. You can influence the behaviour of other people, fellow software professionals or business people. You can embrace the company as a bigger system and contribute to its design and evolution, as Jérémie Chassaing suggest with his Generalized Conway’s Law, and Thomas Ploch on Change Agents. You may become an entrepreneur challenging the establishment, as Andrea Sonea is calling us to consider. You have the power to make the software you live in better and more inhabitable, as Rebecca Wirfs-Brock suggests. You can search ways for non-professionals to engage in programming, as Mel Conway is doing.
And remember you’re also humans, doing software for other humans. Beware Software Engineering. You may have seen the invention of artificial, software-powered bees to pollinate flowers, with headlines like “Hairy, insect-sized drones could one day offset the decline of bee populations worldwide”. Paraphrasing David West, remember not to replace “the real with the artificial”!