Two Types of Engineers in the AI Era
After a decade in Software Engineering I see the rapid change of pace and uncertainty that AI is bringing to the table as both incredible and terrifying. Some people are adapting well and excelling in this new space while others are having such a hard time they’re contemplating quitting it entirely. My goal in this article is to expose some differences I’m seeing in how AI is being used to generate code because let’s be honest…
It’s rough out there for a lot of developers right now.
We’ve got tech CEOs and industry leaders routinely telling us that we’re 6 to 12 months away, or one year away, from AI replacing ‘most programmers’. We’ve been hearing it for years. As far back as 2023 we’ve been hearing that in “5 years” software engineering will be obsolete. So depending on your perspective and temperament you might have had this worry building up for quite a while.
Every year since the pandemic settled down you’ve seen huge chunks of the big-tech workforce getting laid off. Heck, you might have been a part of those layoffs! Now you’ve sent out hundreds of job applications into the cut-throat job market we’ve had in recent years to no avail. With automated candidate screening systems preferring AI generated resumes, and automated “mass job application” services filling up every job posting before you even see them, you’re hitting hopeless frustrations left and right.
You’re seeing tools like Cursor, Claude Code, or Codex generate half-way decent code without much effort. Leading you to wonder what all those years of perfecting your craft really amounts to now. After ‘Vibe Coding’ gained massive traction in the public vocabulary last year you started seeing non-developers ship lucrative SaaS products with virtually no engineering knowledge. They live stream their process into earning six figures with dozens of Claude Code sessions spinning, reaching the kind of success you always wished you had.
Add it all up and you’d be forgiven in thinking that it’s only a matter of time before software engineering is an extinct niche hobby, rather than a high valued cutting edge discipline.
Still, I feel as hopeful as I ever did about the future of software engineering jobs. Behind every hype-cycle keynote address and podcast doomsday prediction is a practical reality that discredits or disproves it. Mass tech layoffs have more to do with over-staffing during the pandemic and interest rate changes than the adoption of AI tooling. Job searching has always been a nightmare if you only rely on submitting applications - getting hired as a dev requires a tailored approach to outreach and networking. While those vibe coded products have provided a great way for entrepreneurs to get their ideas off the ground, we all know that without professional intervention they’re loaded with ticking timebombs for security, scalability, and reliability - just waiting to blow.
All those worries are tangential to the real core anxiety - generative AI producing code. It’s true that the process of writing code has changed quite a bit in the last 2-3 years. We all have access to frontier LLMs wired up to agents and harnesses that can read, remember, and make changes to our code for us. Fantastic capability with the promise of incredible potential… but they don’t come with instructions out of the box. It’s up to us to figure out the best ways to use them. Each new agent session is a blank slate text field - type anything in, and get anything in response. There I see an interesting divergence between two types of Software Engineer and their use of agentic tools that I’d like to talk about.
The Passenger
Although LLMs are just super advanced word calculators and agentic tools are just programmatic routines that shape how the words get calculated: they communicate and operate in an eerily similar way to humans. They’re impressive, confident, and convincing. The more time you spend using them, the more you’re tempted to allow them to take charge of tasks and do all the work for you. Why not? Isn’t that what they’re supposed to do?
You’re a Passenger in the process. Thinking less and prompting more. The agentic coding tool is leading the charge.
At first it’s a really gratifying and exciting experience. They whiz through mundane tasks in minutes that used to take you hours. Start tossing a backlog of bugs and feature enhancements at the agent and it’ll start slicing through it like butter. You’re getting things done in half the time, 3x faster, 10x faster. It’s amazing, what could go wrong?
Eventually the magic starts to fade and you start having to invest more time into guiding your agent sessions. They get hung up on small tasks and burn through tokens relentlessly trying for any win it can get. They plan and execute large tasks with limited knowledge of the domain, future goals, preferred patterns, and maintainability. Open up the code to review the output of some tasks and you’ll start seeing the cracks in the facade: enough dead code, code smells, and bad patterns to give any clean-code purist an aneurysm.
What compounds these negatives is if you were already ‘checked-out’ about your role as a Software Engineer. Discouraged about the future of the industry, quiet quitting, and phoning it in. Agentic coding tools can keep you there if you let them. These feelings will constantly tempt you to use AI to avoid difficult work more and more. Slowly getting lazier. Churning out subpar code (slop). Progressively wedging yourself out of a job. Getting less satisfaction in the process.
I can relate - that’s how I started feeling between 2023 and 2024. It wasn’t a good feeling.
Passengers are trading long-term problems for a lot of quick short-term wins. Not just for the codebases and projects they work on, but for themselves. In the long-term their habits and skills will start to atrophy and degrade. They’re effectively fulfilling those doomsday predictions - the AI is progressively replacing them.
So what’s a better way?
The Pilot
The main difference between a Passenger and a Pilot is where their effort is placed.
A Passenger assumes that the problems and issues AI agents have with coding tasks are just a part of how they work. They accept this as their default behavior and exert all their effort into cleaning up the mess later.
A Pilot proactively takes control of agentic coding interactions upfront. They assert what needs to be done and how. They use structured guidelines, workflows, and context management strategies. They look at every LLM output and action with a critical eye, continuing to assert upfront control over how the work is done.
The truth is, all the core practices of Software Engineering as a disciplined approach to thinking and planning have never been more critical. On real-world production projects agents require a lot of steering and coaching to effectively complete tasks. They make assumptions without verifying, apply changes without a critical eye for future maintainability, and make implementation decisions that can leave you scratching your head in confusion later. These are all solved problems because we’ve been wrestling with them for decades. We’ve just got to find ways to enforce those solutions upfront with your agentic coding sessions.
What’s really going on when an agent makes a mistake, struggles, spirals, and gets confused with the tasks you give it? It’s just making guesses. If you don’t load it up with a refined set of specific useful information in its context, all it can do is fall back to its training data. That training data is literally the statistical average of all available public information, squeezed through a web of digital brain cells. As if you’re taking every single Google search result related to the code task you’re working on and mashing it into a shape that could reasonably work in your codebase.
So by adding deliberate, specific context - codebase patterns, domain constraints, project goals - you’re narrowing those guesses into something useful. You’re turning a statistical slot machine into a more focused, reliable collaboration tool. That’s the whole game.
Upfront Investments, Compounding Benefits
If you start taking charge of the process, actively exercise your Software Engineering braincells, and approach AI coding tasks with a more formalized workflow - you’ll likely start feeling forward progress in your career again. I know I did. Taking this path does require some upfront time investment. Learning the new paradigm, setting up the workflow and adjusting it as problems arise isn’t simple and it’s always changing. But that time investment compounds pretty rapidly.
Spending time to work out an effective task planning process for agentic coding tasks helps ensure everything stays on track and there’s far less confusion. That effort compounds to saving countless hours every week going back and forth with the agent, typing detailed messages, and steering the agent as it encounters problems.
Spending the time to figure out a prompting strategy that provides the agent with the right upfront context about your project and the task means starting a new chat session is painless. That effort compounds by saving you from manually typing the same repeated information over and over with each new task. It presents the opportunity to follow more involved workflows to handle larger tasks. One session to iron out requirements, another to create a concrete plan, and multiple new sessions for each individual step of that plan. This further reduces the risk of agent mistakes because they’re only concerned with a focused segment of work.
Spending the time to learn about git worktrees and nail down a coordinated workflow standard can allow you to orchestrate multiple agents working on separate tasks simultaneously and shipping their changes automatically. Worktrees are a notoriously underused feature of Git. They let you check out multiple branches of the same repo into separate working directories at the same time. That means you can have multiple agent sessions working in isolated environments without stepping on each other’s branches or fighting over the same files. That effort compounds by giving you the ability to tackle a few different tasks at once, reducing the unproductive dead-time of waiting for an agent to perform its work, and helping grow your ‘management’ skills coordinating multiple efforts at once. ‘Keeping the plates spinning’ as they say.
Where I’m Headed
When AI coding tools hit the scene I spent far too much time struggling as a Passenger. Unsure of where my career was going. Unaware of better approaches to working in this new era. Now that I’ve started working more like a Pilot I’m seeing a lot of great possibilities on the horizon.
I could be wrong about all this. But I’d rather be wrong and trying than right and obsolete.
Here’s what I’m working on next - I’ll share what I learn as I go.
What ‘AI Engineering’ Actually Means And Why I’m Pivoting Toward It