Shan Wijenayaka
Contact
← Writing

Being a Lead Engineer in 2026

Last quarter, I shipped a lot of code I did not write. I specified it, an agent generated it, I read it, argued with it, and put my name on the pull request. By any honest accounting I was more responsible for that code than for anything I hand-wrote in my first five years as an engineer. That is the strange shape of the job now. It is worth tracing how we got here, because the trajectory tells you what to hold on to.

The machine in your head

Ken Thompson built Unix on a cast-off PDP-7 with a line editor and a teletype. No syntax highlighting, no autocomplete, no Stack Overflow, no package manager, nothing to import. The tooling was almost insultingly simple. The work was not. To write an operating system that way you had to hold the entire machine in your head at once: the memory map, the file system, the scheduler, the path a single character took from a key to a wire to the screen. Complexity lived in one place, between your ears, and there was nowhere to put it down.

Thompson later gave a talk called "Reflections on Trusting Trust," about how you can never fully verify software you did not write yourself, because even the compiler that builds it could be lying to you. In 1984 that was a thought experiment. In 2026 it is my Tuesday. I trust code I did not write all day long. The difference is that Thompson's generation earned the right to trust by understanding every layer beneath them. Mine has to earn it some other way.

The dorm room and the tower of frameworks

Skip forward thirty years. A nineteen-year-old writes some PHP in a dorm room and a good chunk of the planet ends up using it. The genius of the early web era was not technical depth, it was velocity and product instinct. "Move fast and break things" was really a sentence about leverage: the machine had been abstracted far enough that one person with a laptop could outrun a corporation. The hard part had moved up the stack, from the silicon to the idea.

By the time I graduated, around 2018, that abstraction had grown into a tower. I came up on Java and Spring on the backend and React on the front, and the work was mostly composition. You did not implement a hash map, you imported one. You did not design a rendering strategy, you chose a framework that already had opinions about it. Install the package, read the docs, wire the pieces, ship. We got good at assembling parts other people had built, and the parts kept getting bigger. Complexity had not vanished. It had moved into the dependency tree, where you rented it instead of owning it.

The agent on the other side of the desk

Now the parts write themselves. I hand an agent a ticket and a description of the system, and it hands back a diff. On a good day it is faster and more careful than I would have been. On a bad day it is confidently wrong in a way that takes real attention to catch. Either way the center of gravity has shifted again, from writing code to specifying it, reviewing it, and deciding whether it is actually correct.

The skill that matters has quietly changed underneath us. Reading a diff for syntax is easy and increasingly pointless. Reading it for intent is the whole game: does this match what I asked for, does it match what I should have asked for, what does it do at the edges the agent did not think to mention. In the systems I tend to work on, where a wrong answer can move money or mishandle a regulated document, "the agent wrote it" is not a defense I can offer to anyone, and I would not accept it from someone on my team.

Here is the part that surprised me. A single engineer with a few agents now outpaces a team still organized as though it were 2018. I have watched myself, working alone, take a feature from idea to production in the time a well-run sprint would spend grooming the backlog. That is not a brag about me. It is the same observation about leverage that was true for Thompson and for the kid in the dorm room, arriving on schedule. Each era hands one person the output of the last era's team.

Process was built for a slower team

Which is why a lot of our process suddenly looks like a costume from another decade. The two-week sprint, the story points, the elaborate workflow with seven columns and a ritual for each transition, all of it was designed to coordinate a group of humans who could each hold only a slice of the system and who moved at human speed. When the unit of work shrinks from a sprint to an afternoon, the cost of describing the work starts to exceed the cost of doing it.

I am not romantic about chaos, and this is not an argument against planning. It is an argument against ceremony that no longer matches the speed of delivery. It is why Linear feels native to this moment and Jira feels like a relic. One is built on the assumption that the team is small, fast, and opinionated. The other is built to model every variation of every process for a cast of thousands. The honest reason you can shed the ceremony is not that planning stopped mattering. It is that when one accountable person owns the outcome, you no longer need a process to manufacture the coordination that an org chart used to require. Lightweight process is a privilege you earn with clear ownership, not a default you can assume.

The thing that never moved

That is the thread running through all of it. In every era the tools abstracted away the previous era's hard problem, and in every era the lead engineer still owned the outcome. Thompson owned his operating system even though he chose to trust his compiler. My generation owned its products even though it did not write its libraries. I own what the agent produces even though I did not type it. The medium of the work keeps changing. The accountability does not move an inch.

That is what the word "lead" has always meant, and it is the one part of the job no abstraction has ever taken away. You can delegate the typing. You cannot delegate the answer to the question of why we shipped this and who decided it was right. When something breaks at three in the morning, nobody accepts "the agent did it" as an answer, and they are right not to.

Building for a year you cannot see

So when people ask how to future-proof a career against all this, I think they are usually asking the wrong question. You cannot bet on a framework. The one I built my early career on is already legacy. You cannot even bet on a model, because the one I am using this month will look quaint by next year. What survives every shift is not a tool, it is a set of habits: the ability to verify work you did not produce, to build systems that tolerate being rewritten underneath you, to keep interfaces clean so the implementation can change without taking everything else with it, and to stay clear enough on why a thing exists that you can tell when it has gone wrong.

What does next year look like, with agents more autonomous than today's? More of the typing disappears. The lead moves closer to an editor and an orchestrator, aiming capacity at problems and judging what comes back. Code gets cheaper, which makes correctness, taste, and judgment more expensive, because they become the scarce thing. I do not think that shrinks the job. I think it concentrates it down to what the job always actually was: deciding what is worth building, and standing behind it once it is built.

I am more accountable for code I did not write than I ever was for code I did. That is not a contradiction. It is the entire point. The tools were never the job. Owning the outcome was.