Back to the beginning

Last week I walked back into my old high school, Novaschool Anoreta, for the first time in years. My former head of studies reached out asking whether I would speak to students in the STEM bachillerato track, the ones about to decide whether to study computer science, telecommunications, or engineering. I said yes without hesitation.

Añoreta Novaschool
Añoreta Novaschool

The room was full of sharp, slightly anxious seventeen and eighteen-year-olds. They had good questions. And the biggest one, hanging over everything, was the one I expected before I even started:

Is AI going to make our careers obsolete before we even start?

That is a fair question. It deserves an honest answer, not empty reassurance. So, in this blog post I will explain what I told them about the question.


Layers all the way down

Programming is one layer. Engineering is the whole stack. Every generation of software development has moved one rung higher on the abstraction ladder, away from raw hardware and toward human intention.

Abstraction ladder

#LayerWhat it looks like
01TransistorsElectric switch - open = 0, closed = 1
02Logic GatesAND, OR, NOT, XOR - transistors that reason
03Bits and Bytes8 bits = 1 byte, 256 possible combinations
04CPU / ALU / RegistersAdders, comparators, multiplexers coordinated
05Machine Code10110000 01100001 - binary instructions to CPU
06AssemblyMOV AX, 1 - one instruction per CPU operation
07C / C++malloc(), free() - pointers and memory control
08Python / JS / JavaGarbage collector, dynamic types, OOP
09FrameworksFlask, React, Django, Spring
10APIs and ServicesStripe, Maps, OpenAI - interface first
11AI / LLMsDescribe intent in natural language, model generates output

Each new layer did not kill the engineers below it. It multiplied what they could build. When Python abstracted away memory management, we did not stop needing developers. We unlocked more software than before.

AI could become layer 11 and it could be the strongest abstraction we have seen, but someone still has to understand what is underneath and decide what should be built, why, and whether it works correctly in the real world.

Clearing up a misconception

A software engineer's primary job is not to produce code. Code is a by-product. The real job is problem framing, system thinking, and long-term responsibility.

Engineering workflow

Only Phase 4 is direct code production, and even there the hardest part is knowing what to write and why. LLMs can assist implementation. They do not replace problem understanding, tradeoff decisions, architecture, or ownership over time. A programmer executes instructions. An engineer defines what those instructions should be.

A 19th-century lesson for the 21st century: Jevons Paradox

Jevons observed in 1865 that making coal usage more efficient did not reduce coal consumption. It increased it, because efficiency made coal economically attractive for many new uses. This is a well known phenomenon in economics and the same dynamic applies to software development today. As AI makes code generation cheaper and faster, demand for software does not shrink. It expands into areas that were previously too expensive to automate. The bottleneck is not typing speed. It is understanding problems deeply enough to decide what should be built.

Image

The honest part

Yes, the junior market is harder right now. Companies are hiring fewer entry-level profiles than in 2021-2022, and senior developers with AI tools can cover more surface area. But harder does not mean closed. The path just requires more intentionality.

Practical advice

  • Internship programs first: apply early and often to structured internship tracks.
  • Build in public: a GitHub profile with real projects is stronger than most certificates.
  • Specialize early: pick one domain and go deep before becoming a broad generalist.

Uncertainty is the price of living in an interesting time

Nobody knows exactly what software engineering will look like in 2030. But technical skills compound. Four years of engineering education are not a fixed snapshot; they are a base layer you keep building on. The people who thrive are not the ones who write the most code per hour. They are the ones who ask better questions, reason under ambiguity, and understand systems deeply enough to detect subtle failures. That is what engineering school trains: not syntax, not frameworks, but thinking.

The best time to become a software engineer was twenty years ago. The second best time is still right now, just for different reasons.