Software and the Meaning Crisis
What part do software developers and designers play in the Meaning Crisis?
I asked ChatGPT to interview me about meaningful software design. Instead of having ChatGPT generate answers or the whole interview, I made it ask me questions, which I responded to, so that it could then follow up with more detailed questions.
Let me say this again: I wrote all the answers myself without any help from AI. Only the questions are generated by AI. So, yes, I basically had AI prompt me instead of the other way around. This is how it went:
Can you share some of the key insights you've gained from studying Christopher Alexander's "The Nature of Order" and John Vervaeke's "Awakening from the Meaning Crisis," and how they relate to software development?
I think the binding element between Alexander and Vervaeke is that they both talk about meaning. Vervaeke very obviously, but as it turns out, Alexander’s work fits perfectly into the same context of trying to respond to the challenges of a meaning crisis, even if he doesn’t use any of those words.
Both Vervaeke and Alexander are ultimately trying to equip us with specific practices that help us finding meaning in the work we do, and make sure that the things we craft are appropriately designed to fit their environment and — most importantly — to serve the needs of the people using them.
This is a notion I have found to be lacking almost completely from software. Sure, we do a little bit of design thinking maybe, a little bit of agile methodologies, and we care a little bit about user experience, but I don’t think it can be said that software today has been meaningfully designed.
Do you think there is a role for software developers and designers to play in addressing the broader societal challenges that contribute to the meaning crisis, such as loneliness, social isolation, and the lack of purpose? If so, what might this role look like?
They are in fact playing a leading role, and at the moment I think that is the role of the villain.
A lot of the technologies introduced in the last few decades — social media comes to mind — have perhaps not caused but surely amplified issues like loneliness, social isolation, and lack of purpose. As we are publishing our own ego-centric feed of curated life updates to an audience we feel less and less connected to, we are isolating ourselves from making true meaningful relationships with other people and our communities.
The software industry needs to understand the impact on society it already has, and it will just accumulate more influence as software keeps eating the world. With that realization comes responsibility. And that responsibility means we have to design software with many of those consequences in mind, even if some of them are unintended. The software industry has grown too large and influential to just keep throwing stuff at the wall and see what sticks based on simple success metrics like user growth and ad revenue.
What are some specific design considerations that software developers and designers should take into account when creating applications to mitigate some of the negative impacts of technology on society, such as loneliness and social isolation?
One powerful technique from Alexander is his fundamental unfolding process: You look at the current situation or environment, what you already have built, or what your software is supposed to eventually replace, and then you pick the one most important thing that will improve the current situation and implement that. Once that is in place, you repeat the process with the next most important thing.
The difference to regular agile processes is that you reassess the situation after every single step and have much tighter feedback cycles. This gives you lots of opportunities to respond to changes in the environment, but also to surprise yourself with catching unintended consequences very early on.
Alexander considers this more of a healing process than a construction process. Instead of consequently adding new stuff, you look at what’s there, and you try to improve things, or bring out things that are somewhat hidden or not emphasized enough, which he calls latent centers.
This is less of an additive process and more of a differentiation process. You begin with a blurry understanding of the whole, the gestalt, and then differentiate its parts, its features, instead of adding a bunch of isolated components in a Lego-like fashion.
How can software developers and designers ensure they are identifying the "one most important thing" that will improve the current situation, and how do they prioritize which improvements to focus on next?
Yes, the word “important” does a lot of work here, and it’s easy to get that totally wrong.
First of all, this is about those who ultimately live with these improvements, so this is about your customers or users, not about you or the company that does the design and engineering work. You need to have empathy and take the perspective of your users to find out what’s most important to them.
And when we then think of important as most meaningful, it helps to look at what “meaning” actually means: We experience meaning in life when three factors are in place — coherence, purpose, and significance. These can be applied directly to design:
Coherence: How easy to understand it is, how much sense it makes.
Purpose: How it helps me achieve my goal, or moves me closer to it.
Significance: How important and valuable both the outcome and the process are.
And you want all three of these at the same time.
How do you balance the need to prioritize what's important to users with the need to innovate and introduce new features?
I don't think these are opposing goals that need to be balanced, at least as long as both are coming from a user-centric perspective.
There's lots of room for innovation, in the sense that customers are usually not very good at telling you exactly how something should work. That's what designers are supposed to figure out. If you try to figure that out based on a deep understanding of what users want to achieve (purpose), how important it is to them (significance), and how to make it as simple as possible for them to do (coherence), you're on a good path to significantly improve the current situation for them, and what is that if not innovation?
More often than not that might also lead you to invent a new feature. I think it's great if new features fall out of this process instead of out of the desire to create something new that hasn't been done before.
Mirror of the Self is a series of essays investigating the connection between creators and their creations, trying to understand the process of crafting beautiful objects, products, and art.
Using recent works of cognitive scientist John Vervaeke and design theorist Christopher Alexander, we embark on a journey to find out what enables us to create meaningful things that inspire awe and wonder in the people that know, use, and love them.
Series: Mirror of the Self • On simplicity… • Voices on software design
Presentations: Finding Meaning in The Nature of Order
The question of the broader societal challenges is essential, as you really need to go back to the telos of what your product. But also, to know what really brings humans meaning. Vervaeke is a fantastic person to bring in to the discussion as he has thought so much about that. This post came out a few days ago and really nails the issue.
https://open.substack.com/pub/tedgioia/p/10-reasons-why-technological-progress?utm_source=share&utm_medium=android&r=59ri9