Andy Morrell

Is It Easier to Be Language Agnostic in 2026?

Andy Morrell ·

Someone asked me recently whether it is easier to be language agnostic now than it used to be. My honest answer, without much hesitation, is yes. Easier than it has ever been, in fact. But the interesting part is not the answer. It is the reason, because it forces you to be honest about what “learning a language” actually consisted of in the first place.

What learning a language always actually was

For most of my career, moving to a new language broke down into two very different jobs that we tended to lump together and call one thing.

The first job was the syntax. Where do the braces go, how do you declare a variable, what does a loop look like, how do you define a class or a function, how does the module system work. This was the visible part, the part everyone thinks of when they say they are “learning” a language. And it was mostly tedious. If you already understood programming, picking up the syntax of your fourth or fifth language was not an intellectual challenge. It was a memory exercise and a lot of tab-switching to documentation while your muscle memory caught up.

The second job was the quirks. This is where the real work lived. Every language has a personality, and that personality is made of the things that are not obvious from the syntax. How does JavaScript actually handle asynchronous code, and why does that bite you at three in the morning. What does Go want you to do with errors, and why does fighting that convention make you miserable. How does Python’s import system behave when your project grows past a certain size. What does the garbage collector do under load, how does the type system push back on you, what are the idioms that a native writer of that language reaches for without thinking.

The syntax you could learn in an afternoon. The quirks took months, sometimes years, and you mostly learned them by getting them wrong in production first.

AI took the syntax tax away

Here is what has changed. The first job, the syntax, has very nearly evaporated as a cost.

I can describe what I want in plain terms and an AI coding agent will produce idiomatic code in a language I have not touched in years, or have never seriously used at all. It knows where the braces go. It knows the module system. It knows the standard library well enough to reach for the right function instead of reinventing it. The mechanical translation of intent into correct, conventional syntax is the thing these tools are genuinely excellent at, and it happens to be exactly the part of language learning that was always the most tedious and the least valuable.

That is not a small shift. A meaningful chunk of what used to make people nervous about switching languages was really just the friction of the unfamiliar. You would avoid picking up Rust for a task it was perfect for because you did not want to spend a week fumbling with the borrow checker’s syntax before you could even test your idea. That week is now an afternoon, and a lot of the fumbling is gone.

So if being language agnostic means being willing and able to work in whatever language the job actually calls for, then yes, it is dramatically easier. The barrier that used to stop people was mostly the syntax barrier, and that barrier has largely come down.

What’s left is the quirks and the architecture

But notice what has not changed. The second job is still entirely yours.

The agent will happily write you idiomatic Go, but it will not stop you from designing a system that fights Go’s concurrency model at every turn. It will produce syntactically perfect async JavaScript and still let you build something with a race condition baked into the architecture, because that was a design decision you made, not a syntax error it could catch. It knows the quirks well enough to write around them line by line, but it does not know your system, your constraints, your traffic patterns, or the three-year-old decision that everything downstream depends on.

This is where I have landed on the whole question. The value has not disappeared, it has moved. It has moved up the stack, away from “can you write this in language X” and towards “do you understand how this language behaves under the conditions you are about to put it in, and have you designed the thing correctly to begin with.”

The quirks still matter, maybe more than ever, because now you have to recognise them in code you did not personally type out. When the agent hands you a confident, clean-looking block of Rust, you still need enough understanding of Rust’s ownership model to know whether it has done something sensible or something that will fall apart at scale. You are reviewing, not typing, and reviewing well requires the deeper knowledge, not the surface knowledge.

And the architecture never had a syntax to shortcut in the first place. Deciding how services talk to each other, where state lives, how you handle failure, what your data model should be, how the whole thing hangs together and degrades gracefully when part of it breaks. None of that is a language feature. It is judgement, and it is the same judgement whether you express it in C# or TypeScript or something you learned last week with an agent looking over your shoulder.

The honest caveats

I do not want to oversell this. Being language agnostic in the 2026 sense is not the same as being an expert in every language, and it would be a mistake to pretend otherwise.

You still need real depth somewhere. If you have never genuinely learned the quirks of any language properly, you will not have the instincts to spot when the generated code in an unfamiliar one is quietly wrong. The mental models transfer, but you have to build them at least once, the hard way, before they can transfer at all. The tools raise the floor for people who already know how to program. They do not manufacture that foundation from nothing.

There is also a real risk of a comfortable illusion. Producing working code in a language you do not understand feels like competence, right up until the moment it does not work and you have no idea why. Agnostic should mean “I can operate effectively across languages,” not “I no longer need to understand any of them.”

Where that leaves us

So, easier? Clearly. The thing that used to make language-switching painful was the syntax, and that pain is mostly gone. But being language agnostic in 2026 is less about breadth of syntax and more about breadth of thinking. The syntax was never the interesting part. It was just the toll you paid at the gate. Now that the toll has dropped to almost nothing, what is left is the work that always actually mattered: understanding how a language behaves, and designing systems that hold up regardless of which one you wrote them in.

That work is not going anywhere. If anything, it is now the whole job.


Edit (5 July 2026): A conversation after publishing made me realise there is a really interesting curve to this based on seniority, and it does not run in a straight line.

  • Junior to mid-level: the model fits beautifully. You can focus on logic and intent and lean on an agent to bypass the tedious syntax learning curve. Being language agnostic at this stage is almost all upside.
  • Senior to principal/staff: the curve bends. You absolutely have to know the deep quirks — memory management, the concurrency model, exact behaviour under heavy load — because you cannot fix a high-scale system failure without that depth.
  • Leadership (lead/manager/head): the curve swings back towards agnostic. The value shifts from syntax speed to architectural patterns and system resilience that hold regardless of the stack.

That bend in the middle raises a challenge I do not have a clean answer to: how does a junior bridge the gap to senior now? For my generation, you got there by getting stuck, hitting a wall with no tool to lift you over it, and learning the underlying mechanics clawing your way past it. Getting stuck was not a flaw in how we learned; it was the mechanism. Modern tools are very good at making sure you never get stuck in quite that way, which is wonderful for shipping and quietly worrying for learning.

So our jobs as leaders are shifting too. We have to deliberately design the exposure juniors used to get for free: putting them in front of code behaving badly under load, running code reviews that interrogate the “why” rather than the “what”, and letting them break things in sandboxes so they see how systems actually fail. If we do not teach people to look under the hood, we risk a generation of developers who can generate code all day but cannot debug a live system when it falls over at three in the morning.