Is the introduction of AI causing a brain drain?
Are devs becoming bored as their job is increasingly review rather than reinvention?
This started out as a comment to a post by Kamilla Fredriksen Fon, but it quickly outgrew LinkedIn's comment limit (1250 characters), so I decided to make a post about it instead. But this topic engages me, and it turned out I had more to say than 3000 characters too, so here it is as an article 🤓
Her post, in short
Kamilla starts by saying that three of her strongest developers have started to feel bored after having embraced AI,
Kamilla’s post is about how she sees competent developers becoming bored of their work because they no longer feel like problem solvers, but rather solution reviewers. She brings up the point that this is an early signal of something that deserves attention, and asks:
What does excellent human contribution look like in an AI-native workflow, beyond oversight?
This is an important topic to discuss, and one that engages me. Both because I recognize this sentiment from several engineers I have discussed AI with, and because I am at the opposite end of that spectrum.
My own trajectory
As someone who has been coding for 35+ years, I do not feel remotely bored after embracing AI for development. I am actually feeling more enthusiastic about my career as an architect and software developer.
I did have a short period of ambivalence when I realized that I would likely not be doing much actual coding the coming years. But that ambivalence has been replaced by engagement and excitement. So much so, that after my last customer contract ended, I decided to take a 3-month sabbath to study AI full-time, experimenting, building and learning as much as I can, and then start looking for an AI-project with an interesting company. Not a project where we can use AI tools. A project where AI is the assignment: introducing AI in the company, an AI-specific experiment, AI adoption advisory work etc.
I'm not bored...
What’s the problem?
Kamilla identified “problem solving” (or the lack of it) as the key ingredient, and I agree completely. But my work with AI is fundamentally still problem solving, just on a different level than before. And maybe that is part of the answer: the level.
If you identify primarily as a programmer, and the problems you like to solve are complex low-level problems with code specifically - writing beautiful code, refactoring it, developing a smart algorithm that halves the execution-time of an important function - I guess I can understand that the new reality is not to your liking.
If, however, you get excited by the bigger picture, and you enjoy working on architectural challenges and system-level development, and just “building things” (like me), this new reality can be beyond exciting!
My vocation is redefined...
With the use of AI, I am no longer constrained by technologies I don’t know, or don’t know well, when building things. I can choose the technology that really does fit the task best, because that no longer means I might have to spend time learning it first. I can just build it.
I still get to apply all the experience those 35+ years have given me, ensuring that whatever I build, it must still meet the same quality demands as before. It must still be solid, performant, secure etc. All the requirements still apply. And a lot of that becomes traits of the system as a result of how I plan whatever I am building.
...but not to something more boring...
A large part of my enthusiasm comes from the fact that, with AI, I can now build “anything”. That does not look like me telling AI what I want, AI making it, and then me just reviewing its solutions.
It typically looks like me spending some time thinking through what it is that I am going to build, then spending quite a bit of time talking that through with an LLM (and still quite often correcting its answers or suggestions), which eventually ends up as a specification.
I then read this spec thoroughly to judge whether or not it reflects the choices and conclusions we reached during the discussion.
This work is interesting to me, because it helps me work through what it is that I really want to build, and it’s not unusual that what I end up specifying is not exactly the same thing I thought I wanted when I started.
...even when the agent is off working by itself
This phase of my workflow could have the potential to be boring. Because now starts the phase where the agent is mostly working by itself, doing the work at which the agents are strongest: writing the actual code, based on the the specifications I made (alone or with stakeholders, depending on the type of work).
Waiting for that would be boring.
But that coding part is (mostly) just producing the actual code, and it’s a fairly modest part of the total time from start to finish. Today, that is. If I was coding everything by hand like before, this would likely be the most time-consuming phase, depending on the task.
What I do while the agents are off by themselves
So, while the agents spend my money on tokens, I’m working with another LLM on the last phase of the build pipeline: the verification layer that will ensure that the AI produces what I intended it to produce.
That verification is not me reviewing solutions. Because, I agree: reviewing solutions is boring. No, that last phase is evals, verifying against intent.
This review/verification is, to me at least, just another problem-solving phase. I have to ask questions like:
How do I know that this works as intended?
What does that look like?
What happens if it doesn't?
What level of deviation can I tolerate?
How can I translate that into evals the system can run automatically?
And many more, several of which usually materialized while working on the initial spec. And they must be answered well.
I have not been replaced
AI hasn’t solved all of these layers. Yet, at least. So, I am still doing what I have loved doing: solving problems. Just differently. And, to a degree, I’m solving different problems.
Have I gone stale? Sitting close to the end of the conveyor belt to ogle completed work as it passes by, stamping APPROVED or REJECTED on something a machine has built? Stagnated because there are no problems to solve or skills to acquire?
That’s a hard no from me!
I still have a quintillion new things to learn, like before, just mostly different things. But equally interesting things. And, the icing on the cake for me: I’m learning all these new things together with everyone else!
Because the field moves so incredibly fast, the half-life of many of the things we learn today is so short that you often don’t get to learn it properly before it suddenly becomes “soooo last month” and you have to pivot to something new to keep up with all the others who’ve also pivoted.
I know that’s not for everyone. Depending on your personality type, this particular trait of the AI field may be exciting for some people and exhausting and frustrating to others. I feel challenged by it.
Am I the norm or an outlier?
Kamilla’s suggested solution looks like a description of my own trajectory:
“I think AI done well should move human contribution upstream. Into judgment, problem framing, architectural thinking. But that doesn't happen automatically. It has to be designed. It has to be thought of holistically as a way of working across the organisation.” —— Kamilla Fredriksen Fon
She might be right that it doesn’t happen automatically, although it was the natural direction for me personally. It might not be a skill problem or a culture fit problem either. But what type of problem is it?
Maybe an experience problem? During my 35 years, I’ve had to pivot several times. Not like this time, but still. Maybe that made this pivot easier for me.
Or maybe it’s an adoption problem. If AI where you work has mainly replaced the coding part, and possibly most of the planning part, but the rest of the pipeline looks mostly like before, that likely means you’re dealing with way more PRs than before. If those have to be reviewed manually by developers like before, and those poor souls have to stamp an approval on that which is really saying “I have read all the code and hereby confirm that I understand it all and accept the responsibility for it if it doesn’t”, then that would have made me a very bored and unhappy developer.
The problem is probably several things. And I agree that it’s an organizational responsibility to design solutions for it.
And it’s our responsibility as a field to discuss this and any other disruptive changes the introduction of AI capabilities push upon us.
Have you experienced the problem Kamilla highlights, or witnessed it among colleagues? Has your company found a solution? Or have you? Please share your thoughts!