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.

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
| # | Layer | What it looks like |
|---|---|---|
| 01 | Transistors | Electric switch - open = 0, closed = 1 |
| 02 | Logic Gates | AND, OR, NOT, XOR - transistors that reason |
| 03 | Bits and Bytes | 8 bits = 1 byte, 256 possible combinations |
| 04 | CPU / ALU / Registers | Adders, comparators, multiplexers coordinated |
| 05 | Machine Code | 10110000 01100001 - binary instructions to CPU |
| 06 | Assembly | MOV AX, 1 - one instruction per CPU operation |
| 07 | C / C++ | malloc(), free() - pointers and memory control |
| 08 | Python / JS / Java | Garbage collector, dynamic types, OOP |
| 09 | Frameworks | Flask, React, Django, Spring |
| 10 | APIs and Services | Stripe, Maps, OpenAI - interface first |
| 11 | AI / LLMs | Describe 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.

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.