Yesterday's lectures, tomorrow's battlefield
Building tomorrow's developers in the workplace, not the classroom
My son is studying computer science at high school. He enjoys it. But I’m well aware that much of what he’s learning may have little relevance in a few years’ time.
But does it matter? When I was at university I spent a year studying Computer Science. But much of what I learnt - Modula-2, trying to mathematically prove software was correct, compiler design - was irrelevant for my ultimate career. What I did learn was how to think. How to approach problems. And how to fail fast - after a year I switched to Electrical Engineering because, well, it was more interesting.
Learning how to think. How to work - and live - independently. And growing up. Those were the key lessons from university. Oh - and I spent most of my free time and vacations coding in C & C++, building applications for Windows. Which is where I learnt the skills I needed for a career in software engineering.
So maybe it’s not any different these days? The university degree gets you the interview; the skills you develop independently help you thrive once you’ve got the job?
But it’s so…inefficient. Surely it would be better if we could match the skills taught in university with those needed in the workplace? Even the best degrees have an imprecise overlap with the real world. I’ve spent years training new, smart graduates how to work as part of a team. How to communicate effectively. How to influence and persuade people. How to get things done - in the real world. Those are table-stakes skills. Yet university barely covers them.
Are apprenticeships the answer?
One of my previous employers realized A level results were a better indicator of long-term success than degree results. If that remains true, then perhaps apprentice schemes are the answer - if employers are going to have to teach new graduates the tools of the trade, then is it better to start earlier? Build loyalty early on?
Looking back, my internship wasn’t much different from my full-time role. I likely could have started full-time work after a year at university. I’d have coped. I’d have learnt faster in a full-time professional environment. And there are plenty of examples of people who’ve done that - Bill Gates, Steve Jobs, Mark Zuckerberg, Larry Ellison - the list is long. Of course dropping out doesn’t guarantee success. But nor does a university degree guarantee success.
The future
So if software engineering degrees are rapidly becoming obsolete, what should my son do? What does the future of software engineering look like? What should he be learning?
The cynic might say we won’t need software developers in a few years’ time. But I’m an optimist. Sure, software development is going to change. And change a lot. But it seems likely we’ll need humans in the software development loop for the foreseeable future. Humans will provide the ideas of what to build. And then the direction of how to build it. They’ll bring their battle scars, their experience of how to deploy and operate systems at scale. The lessons learnt from doing - the things that aren’t in the training data.
We need to start learning the skills required for this new world. And I think there are three skills:
An obsession with learning. Software has never stood still. When I started, Pascal was all the rage. Since then, Java and Flash have come and gone, only to be replaced by Python, React, and a dozen others. It’s a constantly evolving field - you need to keep learning just to stand still.
A desire to embrace change. Over the years I’ve observed the best software engineers are the ones willing to embrace change. Those who seek uncertainty and new experiences. Who dive in on the leading edge and help create the paved paths others follow.
Systems thinking. The third crucial skill is the ability to conceptualize entire systems - understand how components interact, identify boundaries, and design architectures that can evolve. It’s the classic big picture thinking. AI can now deal with the trees; we humans have to deal with the forest.
And AI can help us. It makes an excellent teacher. Infinitely patient, deeply knowledgeable, always available. And much cheaper. It might not know all the answers, but it’s an intelligent, always-on partner you can discuss and reason with. It can help formulate learning paths, provide guidance and advice. And encouragement.
The thing is, though - this approach doesn’t just apply to my son. It applies to all of us. The world is changing rapidly and if we’re going to remain relevant we need to keep up.
Finding the path forward
Of course, university advocates would argue the benefits of a formal education. Developing critical thinking. Access to research and networking. I don’t disagree. And for certain specializations - perhaps AI research, cryptography, compiler design - that deep theoretical grounding remains invaluable. But for the vast majority of software development roles in the new AI led world, the advantage is shifting rapidly toward learning by doing.
So what advice do I have for my son? I'm increasingly convinced that traditional university education - while valuable for many fields - is no longer the optimal path for software development.
Instead, apprenticeships offer a more effective and efficient path. Consider the advantages:
1. Learning in context. Apprenticeships teach skills in the environment where they'll actually be used. No more struggling to apply abstract classroom concepts to real-world problems.
2. Currency of knowledge. Universities inevitably teach yesterday's technologies. Apprenticeships expose students to the tools and practices being used right now in industry.
3. Development of soft skills. The table-stakes skills - teamwork, communication, influence - are developed naturally in a workplace environment.
4. Economic efficiency. Students earn while they learn instead of accumulating debt, and employers develop talent tailored to their specific needs. And build loyalty.
The AI revolution makes this shift even more urgent. When implementation can be handled by AI, what matters is judgment and context - qualities better developed through doing than through studying. Universities excel at theory; apprenticeships excel at practice. And now AI can teach the current theory when needed.
The companies that are going to thrive in the coming years are the ones that are dynamic and adaptable. That build workforces which are dynamic and adaptable. University can’t provide them with that workforce, so they’ll need to build it themselves. And if you’re going to have to train your workforce, you might as well cut out four years at University.
My career wasn't defined by my degree but by hands-on experience and constant reinvention. That's what I want for my son - not just knowledge, but adaptability. Not memorization, but the confidence to navigate an uncertain future.
Why spend four years training for yesterday's battles when tomorrow's war will be fought with weapons we've barely begun to understand?


I’m working my way backwards through your posts, and opened a bunch of articles in new tabs. When I got to this one, I was glad to find it more interesting than the title promised - since my browser abbreviated it to “Yesterday’s lectures, tomorrow” 😄