The Competence Crisis.


“We can’t find good people any more.” That is the mantra of many CTOs, usually shortly after they have cut entry-level positions and replaced them with AI licences. Marketing sells us a fairy tale: AI takes care of the boring boilerplate code so we can focus on the big picture.

That is a lie. Boilerplate is not rubbish. Boilerplate is training. Anyone who never digs through the mud of configuration will never learn how the framework breathes. If we remove this step, we do not raise architects. We raise “prompt kiddies”. They know how to feed the machine, but have no idea whether the answer is poisonous.

The Learning Paradox: Pain Is Necessary

You do not learn balance from a physics textbook; you learn it by falling. The pain in your knee is the teacher telling your cerebellum: “Correction initiated.” Real engineering follows the same biological law. A deep understanding of race conditions does not come from consuming a ready-made solution. It comes from hours of debugging, frustration and wrestling with the problem.

Generative AI is the opioid of software development. It removes the pain. An error appears? Copy and paste it into the chatbot. Solution delivered. Ticket closed. A brief dopamine hit. But the crucial synapse – the one responsible for understanding – remains silent. We are training operators of code microwaves. They can heat up the food, but they have no idea how the radiation works.

Uber Drivers vs “The Knowledge”

To understand cognitive decline, look to London. Black-cab drivers have to memorise 25,000 streets for “The Knowledge”. Their hippocampus physically grows. They have internalised the city. The Uber driver, by contrast, depends on GPS. When the signal fails, they are stranded.

We developers are collectively giving up our own “Knowledge”. We are outsourcing our brains to the copilot. Yet our software landscapes change faster than any city. Navigate without a mental model here and the next API change will send you into a ditch.

The Most Dangerous Line of Code: errors='ignore'

A concrete example of how AI masks incompetence: a junior encounters a UnicodeDecodeError. A senior would open a hex editor, examine the encoding and understand it. The AI? It suggests errors='ignore'. The error disappears. The program runs. The junior feels productive. But in the background, data is corrupted, names are mangled and databases are poisoned. The AI has handed the developer a silenced weapon. Lacking foundational knowledge, they pull the trigger.

The Solution: The Socratic Review

We cannot turn back time, but we can change the interaction. We must stop treating AI as an oracle that delivers answers. We must use it as a Socratic mentor.

When a junior – or you yourself – gets stuck, the prompt must not be “Fix this error”. It must be: “Explain the concept behind this error. Don’t give me any code. Ask me questions that lead me to the solution.”

That is hard work. It takes longer. It hurts. But it is the only way to avoid degenerating into the next generation of Uber drivers.

Conclusion: The Offline Test

Ask yourself the hard question: can you still do your job when the Wi-Fi fails? This is not nostalgia; it is a question of professional independence. If your knowledge exists only on loan from OpenAI, you own nothing. You are an operator, not an engineer. Knowledge you cannot explain without looking at a screen is not knowledge. It is just a cache hit.

Leave a Reply