Software Engineers are dead, Long Live Software Engineers
A Practical Guide for Junior Engineers in the Age of Generative AI
Hey, hey, it's been quite a long time since my last post. As I promised myself when starting this blog, I would write only about things I'm genuinely interested in. I'm not going to churn out content just to maintain relevance I don't care about.
A few months back, I thought about writing about MCP servers, then I looked into it more deeply. Turns out? They're essentially API wrappers. This made me realize how important it is to look beyond the hype and understand what tools actually do, which brings me to the question I was asked about AI and how junior engineers should approach it.
Well, this time it's going to be a little less technical and a little more about how I see our industry evolving.
The Questions That Made Me Think
A few months back, my company asked me to speak on an internal panel for early career professionals. I was there to present some of my current work and answer career questions from my colleagues. And, smart as I expected them to be, they asked very thoughtful questions that I think are worth exploring here.
The big one?
As Generative AI took the tech industry by storm, how should a junior software engineer approach it, and what challenges do we have in front of us?
If you read this blog, you probably suspect I'm a big fan of this new set of tools and the tech behind them. At the same time, I consider them "just another abstraction layer." Software Engineering is fundamentally a story of abstraction layers, built one on top of each other.
Do I think generative AI will make the SWE job obsolete? No, I don't. Let me argue why:
Why Software Engineers Aren't Going Anywhere
First, architectural limitations.
By design, LLMs aren't capable of innovation. What they do is statistically propose the most probable token to answer our prompt. That means they can only use their training set to provide answers. We still need to find more efficient ways to solve existing problems and entirely new ways to solve problems that don't exist yet. Gen AI (at least with this architecture) can be a good supporting tool, but not a substitution for a good SWE.
Second, coding is just one part of the job.
Writing code is important for an SWE team, but it's not the only thing we do. Searching, finding, assessing, and discussing trade-offs and their implications with end users is equally important. And if you think you can get clear, exhaustive requirements from users just by asking them or having them fill out a form... well, you need more exposure to actual users and clients. At the moment, our AI tools aren't helping much in this direction, except as a way to summarize and organize information.
Third, the legacy reality.
Everyone who's had experience in the corporate world has immense respect and fear for what "legacy code/system" means. There are systems running billions of critical transactions every day that were written 40 years ago. They cost a fortune to maintain, but everyone is very cautious about pushing to "rewrite" or replace them.
Why? Well, if you've listened to the Grady Booch podcast with
(if you haven't, please take the time because it's great fun), you know the concept:"The code is the truth, but not the whole truth."
This means that by understanding how a system works through reviewing and reverse-engineering code, we can understand how information moves and transforms. But we'll struggle to understand why some logic was implemented in that specific way, why certain system decisions were made. As Grady says, code becomes legacy the instant it's written, and how it's written results from a compromise between achieving the goal and the most economical solution available at that point in time. That means would be not wise to ask to a GenAI tool to blindly re-write a code base in COBOL in JS, the unknown implication of this will likely put the system to an alt.
Now, a counter-argument: "Doesn't software come with documentation?" Given how complex these trade-offs are and the vast context in which they're built, the effort to document them exhaustively would become bigger than the effort to build the system itself. So no, you'll never find documentation that can answer all your questions while also being maintained throughout the software's evolution.
Three Focus Areas for Junior Engineers
Based on these points, I think junior software engineers need to focus on three macro areas:
1. Fundamentals
SWE fundamentals are more important than ever. The bottleneck is moving from writing code to reviewing code. Only if you know the fundamentals and what good code looks like can you add value to the software engineering process you belong to. The era of "Become a SWE in 2 weeks" bootcamp is over. Data structures and algorithms, design patterns, and system design are now more critical than ever.
2. Understanding AI
Very aligned with the previous point, SWEs need to understand the details of how AI systems work, from the linear algebra that powers these systems to the platforms that host these models. I consider this important because we're information plumbers. We need a clear, exact picture of how these systems work if we want to fix them when they break and improve them when they don't do what we want them to do.
3. Communication
Let me be straight: as an SWE, being able to understand non-technical user needs and communicate with them, being the bridge between non-technical and technical people will add tremendous value to your service. Force yourself to get out of your tech bubble and challenge yourself to understand what users are actually talking about and why. About this
wrote a fantastic piece HEREHow Junior Engineers Should Approach AI Tools
Based on everything above, here's my practical advice for how to actually use these tools:
Use AI strategically, not as a crutch.
A technique I find helpful is requesting AI to create only small functions along with their unit tests. When I don't understand a specific choice, I spend time understanding it and evaluating potential alternatives. This keeps you in the driver's seat.
Maintain maximum skepticism.
Any Gen AI tool will provide confident answers even when wrong because they're not capable of understanding right or wrong. Keep your critical thinking sharp.
Combine AI with traditional learning.
Be curious and use AI to accelerate your understanding of SWE concepts, but never as a replacement for fundamentally understanding them.
The Real Challenges We Face
We're in an industry where people expect our productivity to increase massively due to AI. This isn't an automatic given, let me assure you. I believe there's space for our average productivity to increase, but as I argued before, SWE isn't only about writing code. Good productivity metrics can't be the number of lines of code but should be more connected to business results, platform performance, and application reliability.
As SWEs, we have to deal with this pressure, trying to satisfy expectations as much as our capabilities allow. But we also have to be able to explain bottlenecks and the reality we live in to the business and management parts of our organization. We need to explain short-term success versus long-term sustainability and provide thoughtful recommendations about where tech investment should go and why.
The challenge of maintaining deep technical skills in an industry that's advocating for speed over quality (no matter the cost) will fire back in the long term. So as I mentioned before, understanding what you write, understanding what you code, understanding the code you review and its implications, and being able to demonstrate this way of working to your management chain will be instrumental to your career.
The Opportunity Side
Here's the exciting part: never in the history of software engineering has it been so easy for someone who knows how to build apps to turn ideas into reality. If you have an idea, the cost to prototype and create an MVP is now borderline zero.
I won't be surprised if we see solo entrepreneurs making hundreds of millions in revenue in the near future—and I suspect those will have technical backgrounds rather than just business ones. The barrier between "I have an idea" and "I have a working prototype" has never been lower.
But and this circles back to our fundamentals discussion you still need to know what good software looks like to take advantage of this opportunity.
The industry is evolving, but the core skills that make a great software engineer remain. Gen AI is a powerful tool in our toolkit, but it's not replacing Software Engineering.
Long live to Software Engineers!