Welcome back to software engineering
Good news: we’re becoming software engineers again. Not coders.
Software engineering is about solving problems. Like in math: there’s a problem, it needs to be solved. How you solve it, in which language, with which tool — by and large it doesn’t matter. What matters is the result: the problem is solved, or it isn’t.
That was the interesting part. To sit and think. To find a solution no one had before. To come up with something new and make it work. Intellectual and creative work — that’s what we came into the profession for. Not to spend half a day fighting a config, a week fighting a framework, months fighting infrastructure.
How engineers turned into coders
And then, over time, software engineering quietly turned into coding. Not because engineers got dumber — but because frameworks and infrastructure multiplied beyond all decency. Every library has to be learned, every service connected, every pipeline configured.
And engineers got bogged down. Bogged down in coding and in configuring everything under the sun: bringing up environments, wrestling with deployment, fixing the build, updating dependencies, googling why version A won’t fit with version B. Bogged down in that — instead of solving the intellectual problems our profession is actually about. They had no energy and no attention left for creativity.
And so the engineer turned into a coder. Into someone who spends all day writing code around the problem, barely getting to the problem itself. Solving problems became a rare, almost festive state — a short pause between two rounds of coding.
Brooks named this back in 1986
This has a name. Frederick Brooks split the complexity of software into two kinds: essential and accidental.[1]
Essential complexity is the difficulty of the problem itself. You can’t remove it: it is engineering — those very intellectual problems. Accidental is everything that has grown up around it: languages, frameworks, infrastructure, glue, tools. Coding just to make all of it fit together.
Brooks warned: there is no silver bullet, accidental complexity can only be trimmed. For thirty years no one trimmed it — they grew it. Every new framework promised to make life simpler and added one more layer of code that now also has to be written and kept in your head. And so coding ate engineering.
AI takes over the dirty work
For the first time, there’s someone to hand that coding to.
AI takes on exactly the stuff that’s boring to write: code, boilerplate, shuffling data around, glue, configs, "how do I do this in that framework". The dull work of writing code — the coding itself. The dirty work we’ve been bogged down in for decades. What Brooks called accidental, the machine does faster and without whining.
This scares a lot of people: "AI will replace engineers." Well — they’re afraid of the wrong thing. AI doesn’t replace the engineer. It replaces the coder — the part of our day that was never engineering in the first place.
Welcome back
So what’s left for us, the programmers? The essential is left. Deciding what we’re building at all, and why. Understanding the problem. Choosing the shape. Making decisions you’ll answer for later. The hard and interesting part — those very intellectual problems we came here for.
And now we, software engineers, can finally go back from coding to the essence of software engineering — to solving problems. From coder back to engineer.
This is what real software engineering is. Not a fight with tools — solving problems. Like in math. Like it was from the start.
So — welcome back. The coder is a machine now — and we’re engineers again.
And honestly — life got interesting again.
Comments
Be the first to leave a comment.