AI is here to stay, adapt to it.

· ai, thoughts

Abstract blue-to-purple gradient

LLMs have already proven to be good at generating coherent text. This spooks software developers because LLMs are exceptionally good at generating code. Why is that? Code is nothing but well-structured text that follows formal rules. At a lower level, a programming language has a ruleset which allows the program to be compiled and/or executed. At a higher level, software design also follows some rules and practices. Stuff like SOLID, Clean Architecture, or even application design approaches like DDD or Event sourcing - they tell you how to structure code in order to either make it more practical, more suitable for human comprehension or something else. But at its core it’s also a ruleset, albeit a less formal one.

When an LLM is given a task to come up with a natural text, one can easily recognize the patterns of an AI-written text - Anthropic’s Opus 5 was especially guilty of that. Natural speech is very varied and emotional, and when AI writes something, it sounds like, well, AI. Similarly, you can recognize a text written by your friends and family members because of the small quirks, word choice and sentence structure that are specific to them. However, when an LLM approaches coding tasks, it does a far better job. It has stronger guardrails and much more uniform training data. Therefore, when put to work, it is already above the level of an average software engineer when it comes to writing code.

For better or for worse, it will never cease to be the case, despite people on Reddit telling each other that LLM APIs will eventually cost more than maintaining a team of professionals. Please don’t let them fool you - when the rules of the game that one is used to change, and this change is out of one’s control, it can get really frustrating. However, the best thing one can do is to adapt to the change instead of wasting breath and fighting windmills. So why am I so sure LLMs are not going anywhere? Because they are already woven into how software gets made. They are woven into the software itself - companies have built products on top of them. Even if prices go up for a while, the value of a task done in minutes instead of hours or, let’s be honest, even days, is hard to give back.

It is also not the first time our profession has gone through something like this. Compilers took away hand-written assembly, high-level languages like Java took away manual memory management (for most of us), and frameworks took away a lot of boilerplate (thank God for that!). Every time, someone predicted the end of “real” programming, and every time the level of abstraction went up while the amount of software in the world grew. The work we do as software engineers moved on, or rather up, to thinking about app design instead of thinking about managing sockets and freeing memory. I urge you to see LLMs as the next step on that ladder. And I completely understand the frustration caused by this new step changing the rules of the game so quickly and so drastically.

This is where all those rules from the first paragraph come back into play. An LLM gives you code that looks plausible, and plausible is not the same as right. Even more so from a business perspective - saving some sort of data might be convenient for the product but can also have legal implications, for example under GDPR. The model has read every book on software design, but it does not carry responsibility for your system. You do. Knowing why SOLID or a clean architecture exists is what lets you steer the model, judge its output and push the big red button saying “hol’ up, wait a minute” at the right moment. Engineering judgement is now the main thing you bring to the table.

If AI writing the code for us is not the problem, what is? I think the issue we’ll be facing in a few years is going to be the lack qualified new blood.

Back when I did my Bachelor’s in Law, in my fourth year, I went to a LegalTech conference. That was before the LLM boom, back when ML teams actually built their own in-house ML models as well as fine-tuned open-weight models for their specific tasks. Anyway, this one speaker was talking about how ML would transform the structure of a law firm once the processes had been reliably automated. He illustrated the “now” as a pyramid, where there are a few senior lawyers at the top, multiple mid-level lawyers in the middle doing most of the work, and numerous lower-level junior staff doing the monotonous, undemanding work. The “will be” was illustrated as a diamond - basically, the junior, low-level workforce is cut out of the picture because the grunt work is dumped onto the AI model.

In my opinion, this was a very insightful illustration. I bet you that nobody in the room expected, though, that the same bus would hit us, software engineers, as hard as (honestly, even harder than) lawyers. Neither did I. Is it frustrating? Of course. Is it as hard as ever for new grads or career changers to hop onto the train to a career in IT? You bet. Once we cut down the junior roles, there will be no talent incubator like the one we had before. Training programs and traditional pathways will naturally get readjusted, but it will take time and, unfortunately, cost some young people their dreams. I see that as a problem with no easy solution, and I think it’s one of those things we as a society cannot forget. Leaving young professionals high and dry will definitely backfire if it grows out of proportion.

On the positive side, the change is already visible in the market. LLMs have led to the emergence of a whole wave of startups, many of them built by teams that would have been considered far too small to ship a serious product a few years ago. Prototypes that used to take a quarter now take a couple of weeks. Plenty of these companies will not survive - every gold rush ends with more victims than tycoons - but the ones that do will reset expectations about how fast and with how few people software can be built. Hopefully that’s something that young engineers will be able to leverage, if they have that entrepreneurial gene.

That brings me to the established giants of the software world. Many of them sit on products that are decades old, with release cycles, organisational layers and pricing models designed for a different era. Here’s a big one that recently made the news - Adobe, known for their expensive products, has been forced to face the fact that ArtCraft reverse-engineered part of their products with the use of LLMs and made them open-source and free to use. Uncomfortable as it is, this might be exactly the push that the industry needed to be rethought. As the meme goes - improvise, adapt, overcome. If you can’t, you will be overtaken by much smaller competitors.

For us as individual engineers, I think the lesson is simple. The market will increasingly reward people who combine solid fundamentals, knowledge of a domain and fluency with these tools. Those who reap the most will be the ones who have the guts to be entrepreneurs in these challenging times. So build things with these tools, at work and on the side. Try them on real problems instead of toy examples, and notice where they help and where they get in the way. All those pet projects you have always thought about but never had the 10 hours a week to actually work on - now’s the time!

Coming back to the windmills: the rules of the game have changed, and they are not changing back. We can spend our energy arguing on forums about whether that is fair and boycotting reality, or we can spend it learning how to play the new game well and win. I know which one I would rather do.

All posts