My view is that AI will enhance the capabilities of most software developers, and yes, it will replace some engineers—the bad ones. But there’s still a place for everyone, even if it’s not always under the “software engineer” tag. AI can automate repetitive tasks, optimize code, and even help write it, making skilled engineers more productive. However, it won’t eliminate the need for problem-solvers who understand architecture, design, and how to align software with business needs.
AI Redefines Essential Engineering Skills
Not all software engineers bring the same value. In the past, the high demand for developers meant many got jobs simply because there were more openings than qualified candidates. Some have coasted by just writing code—without necessarily thinking critically, solving complex problems, or collaborating well with a team.
This is where AI will have the biggest impact: handling simpler tasks and potentially taking over roles where the primary contribution is just “writing code.” As a result, skills that AI can’t replicate — like creativity, strategic thinking, understanding users, and collaborating with product managers and designers — will become more critical.
What Makes a Bad Software Engineer?
A “bad” software engineer is one whose skills end at writing code. They might write a function or build a basic feature, but they lack the ability to see the bigger picture—like designing scalable systems, understanding the problem space, or collaborating with stakeholders to align technical solutions with business goals. They aren’t curious about how their work fits into the broader product or how it can be improved.
In today’s market, the most valuable engineers are those who go beyond just coding. They understand architecture, propose better solutions, and communicate effectively with their teams. As AI takes over routine coding tasks, these qualities will become even more crucial for those who want to stay relevant.
Bad Engineers vs. Junior Engineers
Now that I’ve clarified what a “bad engineer” means to me, here’s what I’d like to add: bad engineers need a lot of guidance and specific tasks, often distracting the good ones. It’s similar with juniors—except for one key difference: great juniors learn and improve. Fresh talent comes with new perspectives and passion, taking even small tasks seriously and putting in extra effort when needed.
The tech industry has become wary of juniors, labeling them as easy targets for AI replacement. But in reality, junior engineers will replace bad engineers. Bad engineers are expensive liabilities, and they need to look in the mirror and invest in their skills if they want to keep earning a salary. Sorry to say it like this, but I believe it’s true. The only good news: the world was built with average people, and as I said earlier, there’s a place at the table for everyone – it’s just that not everyone should be at the same table or in the same room.
On a Daily Basis — Writing Code is the Easiest Part
Writing code will soon be AI’s domain. At the University of Bucharest, I used to teach a Software Development Methodologies lab (no longer — too much overseas travel). I’d start each session with this question: What do software engineers actually do in their daily jobs? The outcome was consistently similar each time:
- I’d collect answers and sort them into two lists: 1) Coding tasks and 2) Non-coding activities (I revealed the list titles afterward).
- The coding list rarely had no more than five items, while the non-coding list was massive — students mentioned everything from thinking, discussing, and arguing ideas to communicating, estimating, attending meetings, and even drinking coffee :).
These insights came from second-year students with minimal experience, and it turns out that the real complexity lies in the non-coding tasks.
As a Student: Does It Still Make Sense to Study Computer Science?
Yes, more than ever! It’s about getting back to basics—where the fundamentals matter most. And math, oh, math—it’s back as the superstar, along with data structures, algorithms, and databases. Computer science students should stop focusing solely on learning frameworks just because they provide a quick job opportunity. Those days are over, and they won’t be coming back anytime soon.