Code Is Communication
People love to pretend code is a purely technical thing, instructions for a machine, nothing more. Which is adorable. In reality, code is mostly a long-form letter to the next poor developer who has to read it. The compiler doesn’t care how many layers of nested ternaries you cram in. Future humans, unfortunately, do.
When you start to realise you’re writing for human beings, not CPUs, your entire approach to software changes, including who you actually want on your team.
-
Category:
Developing -
Author:
Oliver Lillie -
Published:
Communication Debt, The Sneaky One That Bites You Later
We all know technical debt. But its quieter, more vindictive cousin is what I like to call, communication debt.
Communication debt happens when someone sprints through a feature, gets it logically working, and then high-fives themselves for a job well done… while leaving behind a perfectly functioning black box that no living creature can understand. It works beautifully right up until the moment anyone tries to extend it, at which point it becomes a museum exhibit titled “Don’t know what this is, but it did something important”
Martin Fowler summed it up nicely:
Any fool can write code a computer can understand. Good programmers write code humans can understand.
Being readable alone is not enough. Code must communicate intention so clearly that a sleep-deprived colleague can’t possibly misinterpret it. Comments help, yes, especially when the logic is complex for legitimate reasons, not “I had five minutes and a death wish” reasons, but they’re not a glue stick for bad structure.
Enter AI: Now the Chaos Just Scales Faster
AI produces enormous amounts of code at astonishing speed, which is impressive right up until you have to maintain any of it.
You’ll get a lot of code instantly, sure! But do you understand this monstrosity you just vibe-coded? Or more importantly, does anyone else understand it? LLMs aren’t good communicators, but they’re doing an incredible job masquerading like one.
The LLM confidently hands you a beautifully formatted pile of “logic” with the subtle communicative finesse of someone shouting instructions through a tin can.
Developers are now starting to spend more time verifying intent than writing it. Half the job is rewriting AI-generated code so it looks like a human wrote it, and the other half is quietly apologising to future maintainers in advance.
AI will increase the productivity of developers, but it also changes the role more towards testing and verifying the code actually does what it is supposed to do.
Build Bands, Not Rockstar Carnage
And this all leads to hiring. Somewhere out there is a recruiter still trying to hire a “rockstar developer,” which is the software equivalent of inviting Keith Moon into your living room and being shocked when the furniture explodes.
Rockstars ship features at frightening speeds. They will come in guns blazing, and create something incredible and then get to the next shiny thing. Leaving behind codebases that look like they’ve hosted an after-party. The rest of the team will spend months sweeping up the metaphorical smashed televisions and wine stains.
Of course, this is not to say that great, exceptional developers wouldn’t be worth their weight in gold. Just avoid the rockstar variety.
If developers were RPG characters, I’d distribute their stat points evenly between actual coding skill and communication. Not because communication is a nice-to-have, but because a team of competent communicators will run circles around six isolated geniuses who only speak in riddles and commit messages like “fixes.”
We want to be building cohesive bands made up of interchangeable band members, not hosting tryouts for the world’s fastest drum solo.
The Core of It
Code is communication. It’s the medium through which our ideas stumble awkwardly from one brain into another.
If we optimise for clarity, we build systems that survive.
If we optimise for velocity alone, we build future archaeology projects.
A team of good coders who are excellent communicators will always outperform a team of isolated geniuses with lousy communication skills when you consider the longevity of a software products’ lifespan.
Code is communication. It’s the bridge, the translator if you will, between human thought and machine execution.
So, write code for humans.
The computers will cope.
They always do.
Oliver Lillie is a senior developer and frontend software architect at Witted Mavericks. He writes code with future-him in mind, which is touching, considering future-him usually swears at present-him.