████████╗██╗ ██╗███████╗ ███████╗████████╗ █████╗ ██████╗██╗ ██╗
╚══██╔══╝██║ ██║██╔════╝ ██╔════╝╚══██╔══╝██╔══██╗██╔════╝██║ ██╔╝
██║ ███████║█████╗ ███████╗ ██║ ███████║██║ █████╔╝
██║ ██╔══██║██╔══╝ ╚════██║ ██║ ██╔══██║██║ ██╔═██╗
██║ ██║ ██║███████╗ ███████║ ██║ ██║ ██║╚██████╗██║ ██╗
╚═╝ ╚═╝ ╚═╝╚══════╝ ╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝
██╗███████╗ ██████╗ ██████╗ ██╗ ██╗ █████╗ ██████╗ ███████╗██╗███╗ ██╗ ██████╗ ██║██╔════╝ ██╔════╝██╔═══██╗██║ ██║ ██╔══██╗██╔══██╗██╔════╝██║████╗ ██║██╔════╝ ██║███████╗ ██║ ██║ ██║██║ ██║ ███████║██████╔╝███████╗██║██╔██╗ ██║██║ ███╗ ██║╚════██║ ██║ ██║ ██║██║ ██║ ██╔══██║██╔═══╝ ╚════██║██║██║╚██╗██║██║ ██║ ██║███████║ ╚██████╗╚██████╔╝███████╗███████╗██║ ██║██║ ███████║██║██║ ╚████║╚██████╔╝ ╚═╝╚══════╝ ╚═════╝ ╚═════╝ ╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝╚═╝╚═╝ ╚═══╝ ╚═════╝
██╗███████╗ ██████╗ ██████╗ ██╗ ██╗ █████╗ ██████╗ ███████╗██╗███╗ ██╗ ██████╗ ██║██╔════╝ ██╔════╝██╔═══██╗██║ ██║ ██╔══██╗██╔══██╗██╔════╝██║████╗ ██║██╔════╝ ██║███████╗ ██║ ██║ ██║██║ ██║ ███████║██████╔╝███████╗██║██╔██╗ ██║██║ ███╗ ██║╚════██║ ██║ ██║ ██║██║ ██║ ██╔══██║██╔═══╝ ╚════██║██║██║╚██╗██║██║ ██║ ██║███████║ ╚██████╗╚██████╔╝███████╗███████╗██║ ██║██║ ███████║██║██║ ╚████║╚██████╔╝ ╚═╝╚══════╝ ╚═════╝ ╚═════╝ ╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝╚═╝╚═╝ ╚═══╝ ╚═════╝
LLMs don’t just speed up execution—they multiply decisions. We need to think about who’s best positioned to make these decisions in software teams.
Software teams used to be organized around division of labor and handoffs. The teams of the future will be built around managing agents and decision-making.
LLM technology is advancing at a blistering pace, and two things are clear:
As a result, output is going up 10x, and more members of the team can play in more domains. This means we need to rethink how teams are structured and how they build.
If LLMs make building software faster, we suddenly have a lot more output to “process”. When we can create outputs an order of magnitude faster, we have an order of magnitude more decisions to make, and it can get exhausting.
In an afternoon, I can have an agent generate 3 variants of an onboarding flow, 5 copy variants, and two plans for implementation to choose from. I used to spend a lot of time creating options. Now, the work is evaluating them.
Particularly for those of us coming from an IC background, we’re not used to spending more and more of our days evaluating output and giving feedback - in essence, we’re turning into managers of agents.
This leads to an interesting phenomenon - many members of software development teams used to deferring to managers or other job functions to make decisions now have to make these decisions themselves, at least as an initial call before sharing the output with others.
While most teams hope that any developer or designer can make executive decisions and be relatively autonomous, the reality I’ve seen across the many teams I’ve worked with over the years is that these functions are often conditioned to optimize for presenting options, and executing on someone else’s (the PM, tech lead, executives, etc) decision.
Sometimes this “assembly line” approach is the way they prefer to operate, and sometimes it’s because decision makers consciously or subconsciously hoard decision-making power for themselves (aka micromanaging). But to keep up in this age of LLMs accelerating software development, we all need to start exercising our decision-making muscles as we increasingly become managers of agents. Ultimately, the bottleneck of software development becomes decision making.
Which brings us to the implications of LLMs giving folks pseudo-expert superpowers: the traditional developer/designer/PM triad no longer holds up. We no longer need to gatekeep certain tasks within these roles, because many generalists can now handle tasks across all three. The “stack” of software development disciplines will (and should) collapse.
How do we maintain quality of output when non-experts are using agents to make contributions beyond their traditional disciplines? If roles are blurring, where is the most/least overlap?
The answer will be different for each team, and we’re too early for conclusive best practices. But my general belief is that the product manager role is best suited for spilling over into other disciplines, and that the modern product manager should be a “Full-Stack PM”, working across designer, development, strategy, research, and prioritization tasks. Other roles should still utilize AI to speed up their work and operate beyond the traditional borders of their responsibilities, but PM role should change the most.
Why highlight the PM role? Because of the decision-making bottleneck I outlined above. Decision-making is now the bottleneck of software development in a more acute way than before, and PMs typically are used to making decisions on behalf of their team. Therefore, PMs should take on a disproportionate amount of agent management (and decision-making) in disciplines beyond their own, relative to developers and designers.
A few other reasons why the PM’s role should expand with the use of LLMs:
This is not to say that PMs should be building for and pushing to production unilaterally; developer and designer expertise are critical filters and for PMs. While there are some arguments for merging the designer and PM roles (and to be fair, I’ve played a hybrid designer/PM role for years now), I think most teams are best served with those disciplines preserving focus. If someone is going to spill over the edges of their role, it should first be the PM.
A fair contention to this argument: “Won’t this just create more decisions for developers and designers to make when reviewing PM output in these areas?” This is true risk, but I think all teams will be forced to contend with more decisions to make, as I outlined above. I’d rather confine the type of decisions that designers and developers make to be more within their discipline. For the average team I’ve worked with, this approach has seemed to work best.
As I’ve tried to practice this “Full-Stack PM” idea on teams I work with, here’s the approach that’s worked:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
I believe the most effective teams moving forward won’t be the ones with that simply stick AI on top of their “assembly line” of research → design → dev. What matters is how the team handles judgement: who makes the calls, how quickly, and with appropriate guardrails.
I’d welcome your perspectives on this essay - what rings true, what doesn’t for you? This is an inherently messy and fast-moving subject, and there aren’t clear answers. I’d love to hear what you think.