Contemplations
The world is changed.
I feel it in the water.
I feel it in the earth.
I smell it in the air.
Much that once was is lost, for none now live who remember it.
— Galadriel (The Fellowship of the Ring)
Last week, I was having a nice dinner with some longtime friends. If you want good food, good booze, and good times, Black Smoke really does the job! Since we are all in our 30s, we were discussing things that matter at our age: friends, family, and the work we do. Naturally, we landed on the question of whether it would make sense to do a career switch. So, I threw this into the mix: "Well, actually, I kind of did. But I don’t know if I really like it. It mostly just happened…".
The rest of the group looked at me with utter astonishment. After all, I hadn’t changed my job at all, right? You’ve probably already guessed it: as posts on the JDriven blog tend to be technical, it’s about the shift to AI. Of course! But my friends, most of whom work outside the tech sector, some not even in white-collar jobs, don’t know as much about AI as people in tech do. Sure, they use ChatGPT, but it doesn’t compare to how rapidly software engineering is changing. So, I explained that, to put it bluntly, my job had changed from builder to reviewer.
It’s something I’m still trying to figure out. A couple of months ago, a colleague shared AI fatigue is real and nobody talks about it. It’s an excellent post about all sorts of challenges you face as an engineer when using AI to its full potential. I wrote in reaction:
Thanks for sharing indeed! I also feel like coding has become way less fun now that AI is everywhere. Like it stole a thing I was particularly good at after years of craftsmanship, and now everybody can just do it. Especially that "You became a reviewer, and you didn’t sign up for it" resonated a lot with me.
Now that I’ve spent many more days using AI, I stand firmly behind those words. Not just because I consider them true, but because I experience them as true. Let me give an example: Over the last few years, I have been really excited about functional programming. To learn more, I even joined the FP focus group within JDriven. We discovered new concepts and learned from one another, as we were all at different skill levels. I particularly loved learning that some languages are sophisticated enough to express advanced concepts within the language itself. So, a Scala blog post like Generic Derivation was a real treat. Although I never got that good at Scala, it still gave me the foundation to understand and write fairly complex Kotlin code. Removing code duplication by using Type Classes? Check!
But is this knowledge starting to become obsolete? What does it matter if the AI doesn’t use these advanced paradigms and chooses the 'old-fashioned' way instead[1]? The code runs just fine. Even the joy of Kotlin is starting to wane. I used to be enthusiastic about infix and extension functions. I mean, compare these two assertions:
// AssertJ
assertThat(fellowshipOfTheRing).hasSize(9);
assertThat(wizard)
.extracting(wizard::getName, wizard::getAge)
.containsExactly("Gandalf", 2019);
// Kotest
fellowshipOfTheRing.shouldHaveSize(9)
wizard shouldBe Wizard(
name = "Gandalf",
age = 2019,
)
The latter reads much more naturally due to Kotlin’s language features. I imagine even a non-coder could easily understand it. Way cooler, right? Well, not so much if you only quickly scan the generated test classes anyway… I could continue to give examples, but I think my point is clear.
There is one thing I must mention, though. One could say: let’s just not use AI. But even if we disregard the corporate push for AI, I already notice that I don’t want to go back to the way things were. Having AI quickly scan and summarize what a system is doing, write code at lightning speed, generate visuals for presentations, create a bunch of Jira stories, and even help improve this very blog post is just too handy! Yet, I still feel that craftsmanship and skill are slowly being replaced by a general slop.
Is the future of software engineering bleak then? I guess it depends on who’s asking. Those who really love the coding itself—syntax and all—would probably answer with a tentative "yes". For others who love the business side much more than the actual coding, it would be a "no". Or maybe a "not yet". The problem here is that AI is changing the world so fast that we cannot predict its future very well. There have been some attempts, like AI 2027 and Europe 2031, but both have a negative bias to begin with[2]. Furthermore, these reports look at the industry as a whole. For an individual engineer, this question should be asked on a more personal level: "Do I still love my job, now that it is changing into something else? And what do I have to do to keep up?"[3].
To be honest, that’s where I am stuck right now. There is no definitive guide or source out there to help with this question. We can look back at history to see how people reacted to previous major shifts. To name just the most important: the mastery of fire, the origin of language, the dawn of agriculture, the invention of the wheel, writing, the rise of religion, the invention of the printing press, the coming of the Industrial Revolution, electricity, and, later on, the digital revolution. While these events occurred in increasingly rapid succession, a common pattern emerges for those we have records of: people in all ages have responded to transformative technologies with a mix of excitement, fear, skepticism, and adaptation[4]. The same applies to our current age. A 2018 study Artificial Intelligence and the Future of Humans showed that 63% believed people would be better off with advanced AI, while 37% believed they would not[5]. So where does that leave us?
For me, this is an ongoing struggle. That’s also why I wrote this post: I have a feeling this sentiment is shared by many more people in our field than it might seem. The internet is flooded with AI enthusiasm. On the other extreme, some are fiercely against the use of AI. But for most of us, we’ve simply been thrown into it, whether we like it or not. So, at the very least, I suggest we start talking about it! Don’t hesitate to voice your discomfort. And while doing so, try to ride the waves of AI as best as you can. Or at least, that’s what I’ve been trying to do.
To end this post, let’s get back to the quote I started with. Real Tolkien fans know it’s actually an adapted quote from Treebeard in the book "The Return of the King". Still, I chose the film version because of that final line: "for none now live who remember it". Perhaps that’s where we are headed, our job slowly fading into something else until it no longer exists. Well, if that’s the case, let’s enjoy it while we can. And maybe, one day, we can tell our grandchildren about the days when we programmed the machines ourselves. Now that would be a tale to tell!