I think I can finally see the light at the end of the tunnel, and for the first time in almost two years I'm fairly sure it isn't an oncoming train.
I've been in software for more than 25 years, and for the last 10 of those I've been architecting systems and leading teams of engineers rather than just writing code myself. Languages came and went, frameworks were born and quietly buried, and every time we shrugged, learned the new thing and carried on, because that's what software engineers do. The last two years have felt different though. Every morning brings another CVE, another breach, and another AI model doing something we were told was impossible six months ago. Work that used to take a team of developers a few weeks now gets generated before your coffee goes cold.
And the internet has been SO helpful about it. AI is coming for your job, coding is dead, software engineers are first in line, learn a trade, become a plumber. Wonderful! Truth be told, for a while I believed some of it. Not that the profession would vanish tomorrow, but that something fundamental had shifted under the thing I'd spent my whole adult life getting good at. I did not like that one bit.
Let's unpack this.
If AI writes the code, what am I?
I've always been someone who needs to understand how things work. Give me a system that keeps falling over, or a bug nobody else can find, and I'll happily lose an afternoon (and a bit of sanity) figuring out why. You imagine something that doesn't exist yet, design it, build it, watch it break spectacularly under load, swear a little, work out why, fix it, and then do the whole dance again. I've loved that loop for 25 years, first on my own code and later through the engineers I lead.
But here's the thing that only clicked for me recently... coding was never the reason I became a software engineer. I know how that sounds coming from someone who spent the first 15 years of his career living in C#. The code was the part that ate most of our time, sure, but the exciting part was always making something work that didn't exist before. The code was just how we got there.
So why does it scare us so much when that part suddenly gets faster? Somewhere along the way, a lot of us started defining ourselves by our ability to write code, and if a machine can write code, then what exactly are we? That question bugged me more than I'd like to admit, right up until I started thinking about aeroplanes.
Yes, I could totally land a 737
I love flying. Not the airport queues, the actual flying: the physics, the systems, the procedures, and the small miracle of hurling hundreds of tons of metal down a runway and having it go UP.
Now, I have never flown a real aeroplane. However, after an unreasonable number of Air Crash Investigation episodes and many hours in Microsoft Flight Simulator, I'm reasonably convinced that, given the right circumstances, I could land a Boeing 737. Every real pilot reading this has just rolled their eyes so hard they've seen their own brain. Fair enough. Stick with me anyway, because this is about what happened to pilots when technology changed what it meant to fly.
Go back a few decades and commercial aircraft were magnificent mechanical beasts. Pilots needed to understand aerodynamics, navigation and weather, but they also needed an intimate feel for the physical machine, with its cables, pulleys, hydraulics, control surfaces and a wall of dials. Every aircraft had its quirks, like a slight pull to one side or controls that felt a bit heavy, and flying one was a deeply physical skill. On many large airliners there were three people up front: a captain, a first officer and a flight engineer, whose whole job was to watch and manage the systems keeping the thing in the air. They were the experts, and people trusted them with their lives.
Enter fly-by-wire (exit the flight engineer)
Then aviation changed. With fly-by-wire, the pilot's controls stopped being mechanically connected to the control surfaces. A computer sat in between, reading what the pilot asked for and translating it into commands. The Airbus A320 brought digital fly-by-wire into mainstream commercial aviation in 1988, and suddenly the aircraft could stop you banking too steeply, protect against certain dangerous flight conditions and make thousands of tiny corrections to keep itself inside its designed limits.
Alongside that, autopilots and flight management systems kept getting smarter. Fly-by-wire and autopilot aren't the same thing, but together with the rest of the cockpit automation they changed the job. The machine was doing more of the work, and not every pilot was thrilled about it. For some, it chipped away at the very thing they'd spent their careers mastering: the feel of the aircraft and that direct connection between hands and machine. There were serious, legitimate arguments about whether a computer should ever be allowed to limit what a pilot could command. Sound familiar?
And yes, a job did go. Not overnight, and not because of fly-by-wire alone, but better systems and automation meant the flight engineer's work could be handled by the computers and the two remaining pilots. The three-person cockpit became a two-person cockpit, and an entire role in commercial aviation largely disappeared. I think it's important to say that out loud, because pretending AI won't do the same in software would be naive.
The pilots didn't disappear though. Their jobs changed. A modern airline pilot spends much of a flight managing sophisticated systems rather than hand-flying every second, so they configure the automation, monitor it, question it and recognise when it's wrong. That takes MORE understanding of both the aircraft and the systems, not less, because automation is fantastic... until it isn't.
Would you get on a plane with no pilots?
Here's the question I keep coming back to. If someone offered you a ticket tomorrow on a fully autonomous airliner with an empty cockpit, would you get on?
I wouldn't, and that has nothing to do with distrusting technology. I'm a software engineer; trusting technology is practically in the job description. The problem is that I know exactly what technology does when things go wrong, and I know that no matter how clever a system gets, there will be situations its designers never imagined.
I want the automation, the envelope protection and the systems that spot what tired humans miss and react faster than any of us could. But I also want someone up front who knows where we're going and why, who notices when the automation is confidently wrong, and who takes responsibility for the outcome. I don't want a pilot fighting the automation, and I don't want automation replacing the pilot. I want the two of them working together, because that's where the magic happens.
We're the pilots, buddy
That's when it clicked for me. AI is our fly-by-wire moment, and we're the pilots.
For most of our careers we've been hand-flying almost every part of software development: writing the code, chasing the exceptions, building the interfaces, writing the tests, tuning the queries, and losing whole afternoons to something that worked perfectly yesterday. We've been intimately connected to the mechanics of software. Now something can do a growing chunk of that mechanical work, and naturally it feels threatening, because if writing code is what makes you an engineer, your identity is suddenly under attack.
But what if writing code was never the equivalent of being the pilot? What if it was just moving the control surfaces, and our real job all along was flying the plane? Knowing the destination, planning the route, knowing the aircraft, reading the weather and making the call when things don't go to plan. That's software engineering, buddy. It's understanding a problem well enough to design the solution, and knowing how systems interact, where they'll break and what happens when they do. AI can produce an impressive pile of code, but producing code and taking responsibility for a working system are two very different things. Anyone who has watched a flawless demo fall over under real-world load knows exactly what I mean.
Truth be told, I've been doing a version of this job for the last decade. Leading engineers meant I stopped writing every line myself. My job became setting the direction, designing how the pieces fit together, reviewing what came back and catching it when a very confident developer was heading the wrong way. Working with AI feels surprisingly familiar, except AI doesn't take leave in December.
So let's be honest, we need to become better pilots.
- STOP RACING THE MACHINE: Treating AI as a competitor in a coding competition is a race we're increasingly unlikely to win. Get exceptionally good at working with it instead.
- KNOW YOUR AUTOMATION: Learn what it does well, where it makes mistakes and when it can be trusted, so you can tell when it's confidently flying you into a mountain.
- FLY HIGHER: Architecture, systems thinking, security, testing and a real understanding of the problem are where the job is heading. That's the stuff a code generator can't take responsibility for.
- STILL KNOW HOW IT FLIES: A pilot who doesn't understand how an aircraft stays in the air is not someone I want flying my plane, and an engineer who can't understand the code their AI wrote is not someone I want near a critical system. Writing every line by hand might matter less from here on, but understanding what every line does matters more than ever.
But what about the jobs?
Honestly? I don't know, and I'd be suspicious of anyone who says they do. Some jobs will disappear, some will change beyond recognition and some new ones will show up. The flight engineer is a good reminder that progress doesn't promise every role a seat.
Aviation shows the other side too. Along with plenty of other changes, better technology helped make flying safer, more efficient and more accessible, and the industry grew in ways earlier generations could hardly imagine, with more people flying, more routes and entirely new opportunities. What if software follows a similar path? If building software gets dramatically cheaper and faster, we can finally tackle problems that used to be too expensive to touch, and small businesses can afford systems that once needed an enormous budget. I can't tell you whether that means more engineering jobs or fewer, but I'm fairly sure it means a lot more software, and a lot more problems worth solving. That's a future I'm genuinely excited about.
Wrap it up
For almost two years it felt like the ground under my profession was moving, and maybe some of the skills I spent decades building really are worth a bit less now. But I didn't become a software engineer to spend my life typing C# into an editor. I became one to build things and solve problems, and AI hasn't taken that away from me. If anything, it's made that part of the job more reachable than it's ever been.
I'm not saying the uncertainty is over, that every engineer keeps their job, or that AI is perfect. I'm saying I can see what our profession could become if we stop fighting the technology and learn to fly with it. We still get to solve the problems, we still get to build the things, and we still get to be engineers. We just don't have to pull every cable ourselves anymore.
Maybe it'll even sort out the imposter syndrome I've somehow lugged around for 25 years. More likely it'll just hand me a shiny new set of things to feel like an imposter about. Either way, it's time to stop worrying about who moves the control surfaces and learn to fly the damn plane.
This is your captain speaking. Please keep your seatbelts fastened, and don't let the autopilot anywhere near production without a code review.
Emile