Do we still need software engineers?
As we vibe-code our way through production codebases, a question keeps coming up: do we still need engineers? If AI can write the code, what is left for us to do?
Recently, that question brought me back to my experience working on software in industrial engineering. In an automated warehouse, totes and conveyors moved in sync while sorters directed items to their destinations. It was a symphony of machines. Watching it, you could ask the same question: if all of this is automated, why do we still need people?
The answer lies in the work required to keep that automation running. As we embrace AI and agents, I see two broad kinds of work becoming more important.
The first is the hands-on work that closes the gap between an automated system's output and a useful result. AI outputs are probabilistic, so using them reliably requires checks, judgment, and intervention. People still need to gather data, annotate examples, evaluate results, and handle exceptions. In physical systems, there is also the work of mechanics and maintenance technicians. These roles require practical skills and enough technical understanding to recognize when something has gone wrong and respond appropriately.
The second is the work of specialists who design, tune, and oversee the systems themselves. In industrial settings, industrial and instrumentation engineers manage operating parameters and keep automation working as intended. I suspect software engineering will move further in this direction: defining constraints, diagnosing failures, and taking responsibility for how a system behaves. That demands deep technical expertise and a clear understanding of the problem being solved.
What concerns me is the space between these two kinds of work. For years, building software for specific business needs created a broad market for engineers who did not need to be highly specialized. As AI takes on more of that implementation work, I expect this middle ground to shrink quickly. The question is how people working there will adapt, and what opportunities will remain available to them.
Where do we go from here?
Learning algorithms still matters, but it is only part of the preparation. We need to become better at framing problems, questioning assumptions, weighing trade-offs, and deciding what is worth building. Critical thinking and philosophical reasoning matter because they help us examine both our methods and our goals. As more of the implementation becomes automated, our ability to exercise judgment becomes central to the work.