…without you. Because AI bots do not have a heartbeat.
So, you do not have to worry about becoming worthless and replaceable by a
machine.
Human communication vs Gen AI chats
Generative AI gives us plenty of possibilities. And as always when that happens
in the software industry, there is suddenly a lot that can be tried, and a few
things that should be tried. I believe that in order to tell the difference, it
is important to understand the value of the human interactions that we are
replacing with them. Here are some thoughts that might be useful.
Human communication is between at least two minds and at least two hearts. When
I talk to an AI, it is an interaction between two very differently shaped minds
and just one heart.
It does not need scientific research to know that communication involves more
than just words, and is more than just the exchange of thoughts expressed as
words.
Think of a parent distorting their face to send a goofy smile to a baby,
rejoicing at the reaction and the baby’s attempt to grasp what this all means.
There is so much going on, possibly without a single thought.
Or try the simple clowning exercise of bafflement, where you put your attention
on the back of your brain, deliberately avoiding your prefrontal cortex, and try
to look at the world as if you have seen everything for the first time. What you
feel, what your feelings guide you towards, how others react to you when you are
baffled, artificial intelligence might be able to comprehend conceptually, but
is not able to engage in.
Our hearts speak with each other all the time. The same words from two different
people can be received completely differently if you trust one but distrust the
other. Two very different heart-to-heart connections.
That is why it is futile if you ask ChatGPT: “Write a poem that uplifts my
spirits, making me believe in my own ability to create with purpose and
meaning.” Trust me: you will get disappointed by the results. The bot cannot
connect to your heart, because it does not have one.
Yes, vibe coding and all the other automations and abstractions to build,
orchestrate, and deploy that are hiding the real-world hardware behind some user
interface or API make it possible to launch a new idea in minutes, and it
actually works. But I have yet to hear of an application that came to life like
this and wowed the world, other than the AI tools that are supposed to
facilitate this. Maybe I am too impatient?
Vibe programming without the heart
Or did the AI hype make me too impatient?
A few weeks ago, I tried putting a simple integration for my website into a
WordPress plugin. I never really worked with PHP or any of the WordPress
internals before. And yet I was able to do it. After just a few hours, I had
something bundled up that I could install, activate, and configure. It was
amazing. Without reading a single bit of documentation, I was able to build a
WordPress plugin. Or could I?
When I started to refine and review it, I noticed how many things were really
broken. The AI had created a very complicated workflow to bundle the plugin,
spread it over several, sometimes redundant files, combined several hardly
compatible best practices, added tests that were mostly useless, added files
that looked necessary but were actually obsolete, and even though the business
logic was simple, the bot added unnecessary parts to it. All of which made me
want to start over instead of adding to the code.
Considering that programming is a thinking-heavy job, and that I was doing
nothing really novel, I thought that I was safe to accept most of the proposed
changes. But I was wrong. It is easy to forget how much programming and
engineering relies on human interactions. If an AI bot tries to fix a test, it
happily chugs along trying 100 different things and, once the context window
overflows, probably just removes the feature or the test. The bot does not get
tired or frustrated.
When I find myself in a situation like this, I feel frustrated and overwhelmed,
like I should. And I would not remove the breaking feature because that is what
I am excited about, and I would not remove the test because I have learned that
it will haunt me in the very near future.
These feelings tell me that I have to take a step back, conduct some research,
maybe rewrite and simplify the code. If I want to accelerate it, I talk it
through with another team member, a human team member.
The bot just does not feel. Unless a human has done the hard heart-work and
shared all their learnings with the bot beforehand, it will do a bunch of
useless stuff.
I thought it was a good experiment to put myself in a position where I had no
experience, basically putting myself into the shoes of a junior engineer. It
quickly showed me how many human interactions go even into a simple project like
the authoring of a WordPress plugin.
The Genius effect of Generative AI
With the AI tools at hand, I quickly felt like a genius. But being a genius
caused problems in engineering teams before the dawn of AI bots. In engineering
teams, genius developers can create working code very fast, but over time these
code pieces become bottlenecks because only the genius developer understands
them.
It is important to realize that AI can make us all into geniuses, flattering our
egos. But not everyone understands geniuses, and if you are a genius due to AI,
you might not even understand yourself.
For me, the lesson really was this: when using generative AI, there is still
lots of value in going slow. Yes, I need to type less and read less
documentation. I can forget about all the curl parameter flags that I memorized,
CSS tricks to vertically align an element in a div, or how to navigate layers of
AWS console UI. But in the end, I still need to be aware of the human
interactions that went into developing all these tools.
All of this makes me wonder if teams would be much better off if their members
used AI tools more collaboratively, in pairing or mob sessions. It does add the
heart-to-heart connection to the process.
Reflections of the day
If you are worried about being replaced by AI, take a deep breath, and maybe try
the clowning exercise of bafflement from above to remind yourself that you are
more than just a brain that processes digital information.
Then consider:
- Have you used Generative AI before, feeling like a genius? What important conflict might you have avoided that would have come up in a human interaction with an expert?
- When planning a generative AI project, it is important to have a data, model, and cost strategy, but maybe you should also add: how many human interactions are we avoiding or sidestepping? How confident are we that you can teach the AI the learned behavior from these interactions? Do you think that would help in understanding the feasibility and usefulness of your project?
With care,
Martin Drohmann