软件工程师的未来会怎样?
What's gonna happen to software engineers?

原始链接: https://yakko.dev/blog/whats-gonna-happen-to-software-developers

作为一名“以结果为导向”的软件开发者,作者反思了人工智能对该行业的本质影响。作者将开发者分为“热爱编程工艺的人”与“通过编程构建产品的人”,并重点关注后者,探讨了人工智能将在未来十年如何重塑他们的角色。 作者提出了三种可能的未来: 1. **照常营业:** 人工智能成为一种先进工具(类似于集成开发环境或 Git),在提高效率的同时,保持现有的工作结构不变。 2. **产品构建者:** 随着非技术用户也能进行编程,开发者将转向“产品工程”。尽管人人都能构建产品,但大多数用户仍倾向于使用专业且具有“独特见解”的软件,因此产品构建者的需求依然旺盛。 3. **产品经理的演进:** 人工智能可能将开发者从繁琐的编码工作中解放出来,使他们能够将重心转向用户研究、高层战略以及管理人工智能代理团队。 归根结底,作者持乐观态度。虽然开发者的定义不可避免地会发生改变,但对于人类品味、战略和产品直觉的根本需求表明,未来的核心将不再是编写代码,而是定义要构建什么。

这段 Hacker News 的讨论反映了人们对人工智能时代软件工程未来的分歧。 许多参与者认为,尽管人工智能擅长处理常规编码任务,但“工程”本身依然至关重要。他们强调,对产品、业务逻辑、设计和架构的深刻理解,将使优秀的工程师与那些只会“凭感觉写代码”的人区分开来。此外,有人发出强烈警告,过分依赖人工智能可能会导致从业者技能退化,沦为单纯的“按钮操纵员”,并引发未来的软件维护危机,因为人工智能生成的代码往往缺乏长期稳定性所需的精湛技艺。 相反,另一些人则认为人工智能是一种强大的工具,它在推动职业演进而非取代这一职业。他们认为行业将从大型团队转向个人主导,由那些能够驾驭人工智能产出以快速交付高质量产品的人员所取代。尽管一些工程师对失去手动编码的“乐趣”感到惋惜,但另一些人则乐于利用人工智能实现琐碎任务的自动化,从而专注于更高层面的产品目标。归根结底,共识在于工程师的定义正在发生改变:价值正在从语法生成转向系统设计和关键性监管。
相关文章

原文

Thoughts are mine and mine only. I don't ever use LLMs for writing.

In the back of my mind, I've been thinking a lot about what's going to happen to software developers. In a metaphoric way it feels like an existential question, given that, well, I'm a software developer.

The real answer is that nobody really knows. But we can guess and speculate, and sometimes that speculation is what helps build reality.

There's of course the doomsday scenario that we just all go away, but then what? Are we all unemployed and our skills intransferrable to anything else?

I tend to be optimistic and think that there won't be a sudden shift but rather that gradually we're going to adapt and morph into new job titles (both new as in existing job titles that are new to us but also totally new job titles) but there will probably be side effects coming in the form of mass layoffs and the like, justified or not.

It's of course silly to speak of "software developers" as a class because it's so broad, and I think it's clear we're not all going to the same place when it's all said and done. Probably because despite the shared title we weren't even in the same place to begin with. It's the same with "engineer" — there are mechanical engineers, civil engineers, electrical engineers, chemical engineers, and even we're sometimes called software engineers!

For simplicity's sake, I'll narrow down my scope.

I think there are broadly two classes of software developers: the "software as a means to an end" ones, and the "software as the end" ones. Now, before we're all up in arms and I haven't even truly started this post yet, of course reality is a lot murkier and all of us are a combination of the two in some sense, but I do think this is a valid separation for the purposes of this discussion.

The "means to an end" devs are those that write code because code lets them build things. Code is the means to building a company, or a home automation system, a blog, a website for your friend's wedding. That doesn't mean this class of devs doesn't enjoy code or appreciate the beauty of well-written code and well-designed systems, but it means that they would have built that website with a no-code tool if that no-code tool truly let them build it just how they wanted it. Boris Cherny, the creator of Claude Code, regularly talks about how he's in this category. This is also the category I'm myself in.

The other category, the "software as the end" devs, are the ones that are generally more math-inclined, took part in coding competitions, deeply enjoy optimizing algorithms, and so on. They might be really happy coding just to code, even if it doesn't necessarily produce a product in the end. Writing beautiful performant code is often enough of a kick. Again, this does not mean these people don't, can't, or aren't interested in building products. Just like being in the other category does not mean you don't actually enjoy the process of writing code.

Come to think of it now, after writing all this, I think these categories are a lot more about "what got you into this" rather than what you actually end up doing in this space. But what gets you into something is also relevant for determining how you're getting out of it.

So I wanted to talk about the "means to an end" folks, since that's where I fall. What's gonna be of us?

In some ways, this AI revolution (or whatever we want to call it) should be the best thing since sliced bread. You can prototype faster, try more ideas, build things in spaces where you don't have all the prior skills (like a new programming language), and overall just build more. The whole goal was to build stuff, right? You can build anything quickly now, let's go!

On the other hand it also means that people who want to build stuff just like you but didn't take the time to learn code can build things now too, so you're no longer special. Not only are you not special, but before this, a domain expert needed you to turn their ideas into reality, and you needed them for their domain expertise. Now, they don't need you but you still need them.

I think it's clear that AI has changed and will continue to change our jobs. This is indisputable. We can debate on how true the 10x, 100x, and 1000x claims are, and how steep or not steep the curve is, but things have changed and we need to change too.

With that said, here are a few possibilities I can visualize. It's important to note that we're not talking about a distant future here, more like a 5-10 year timeline, and in world terms, not SF terms.

As a side note, the SF vs world thing is something I think we overlook often. The first fully autonomous Waymos started roaming around SF in 2022, and while they feel normal now, my hometown in Brazil is probably not going to see self-driving cars for at least half-a-decade more still. Hell, most cars driving around in Brazil are still using manual transmission.

The business-as-usual case

We all know that today software devs are much better at building software with AI than non-devs are. Vibe coding is all the rave and platforms like Lovable exist but knowing how to structure your data models, architect your system, and what tools to use is still massively relevant.

Non-devs can build things now with AI that they couldn't before, but they're far from being as good or as fast as a real developer with AI tooling.

If you believe we're going to hit a plateau soon or that at least the rate of improvement will slow down, it means that the tooling will change, but the job won't change that much, and it will mostly be business-as-usual. Software development has seen many step changes over the years and AI will just be one more. The ecosystem of tooling around models will get better and just like most of us moved from the terminal to the IDE back in the day we'll move from the IDE to... the terminal?

Anyway, job titles and org charts stay roughly the same, maybe some types of people leave the industry, some new types of people come in, but it's basically BAU. In a few years you look back and probably you are indeed 10x faster, just like people got faster with high-level languages, and Git, and the Web, Cloud, containers, and so on.

You need to adapt but not radically change.

The product builder case

One little prototype I vibe-coded this year with my dad in mind was a platform that let non-technical people build apps for themselves to help them in their everyday lives.

If models are still getting much better, that means it should soon be possible for everybody to really code and build apps. As we've seen, there's a clear interest from at least some number of non-coders to build apps, but there's one thing I've been reflecting on while building this platform and talking to friends about these ideas: does everyone really want to build stuff?

I think a lot of the talk is about how non-technical people don't build apps because they don't have the tools or the means, but I think we're ignoring the possibility that a bunch of them just don't want to actually build products and apps. Even if you're not writing the code, building a product means spending a lot of time thinking, designing, prototyping, and debugging (in some shape or form), and I think a lot of people just don't want to do that, even if it's done by using natural language exclusively.

Sometimes we pay for software very much because it's embedded with someone else's opinions and ideas about how something should work, and we trust that that's better than what we can come up with ourselves. These are the apps we call opinionated and we like them because they remove the paralysis that comes with choice and force us to work a certain way that is often super helpful to us but that we couldn't self-enforce.

We also pay for software because we trust that it will have fewer bugs and be more secure than something we'd build. We pay for it because there's customer service to help us when we have problems. We pay for it because we just don't want to think about any of it.

So many things have made it easier for us to cook these days, and day-to-day cooking doesn't really require some special skillset that you need to get a degree for. We have machines to chop for us, do the dishes for us, we have machines that turn on and off automatically, we have online recipes, and even machines that cook whole entire meals by themselves. Some people just don't want to cook.

What that means is that there is a world where, yes, more people can suddenly build things, but we still need people to actually build things. Because not everyone will build for themselves.

The job changes a bit, and it becomes more like "product builder" than "software developer" but we were already kind of moving in that direction anyway with all the talk about "product engineers". While we transition, some code is still written manually, but soon it probably goes away and product builders just use natural language. But they have taste, they study design, they study psychology, they learn to balance AI and human input, and they keep building products.

Maybe there's a world in which we have fewer of them, maybe we have more. But these people exist and they're very much relevant.

The PM case

Some time ago, the Claude Code team started doing office hours. User interviews are nothing new, and while they've traditionally been more of a Product Manager thing, this newer wave of "product engineers" also engages in interviewing.

What struck me was that I don't think I've heard of many instances of developers from a highly successful product opening up their calendar like this to talk to users. Particularly because I imagine the demand was insanely high.

It got me thinking that, at least for me as a "means to an end guy", if AI frees me up to spend more time with users and on higher-level product thinking, that's not that bad of an outcome at all. I've always cared about high-level product direction, I've always cared to talk to users. But a lot of my time simply had to go towards writing code. Building a feature request from a user could take days, so I can't afford to go in and talk to users as often as I'd like and get five requests, spec them out and build them.

But if coding is truly "solved" as they say, or if it comes to be at some point, maybe that frees up more time for higher-level thinking, strategy decisions, and understanding requests more deeply before building. Maybe we'll spend a lot more time talking to users. And if that happens, are we then becoming kind of like PMs?

Maybe developers become PMs and their team is composed only of agents, or at least in its majority of agents. Direction and coordination are maybe even more important if we're talking about a combination of humans and agents.

The question then becomes: can the world even sustain this massive influx of PMs? I don't know. Maybe.

It could be that there's more software to be built, as has been the case over the last few decades. We got more efficient at building software, we built more software, we got more devs and PMs to build that software. It could be that indeed we move towards companies with much smaller headcounts but we have more of them.

In any case, the devs that really just cared about product in the first place go on to manage teams of agents and build them. There have always been many different types of PMs anyway, so there's space for different brains and personalities here.


The scenarios I've laid out above are all about developers staying within the software realm, and there's of course the scenario where the disruption is far greater than I'm imagining and most of us need to move towards non-software things, but it's hard for me to visualize it.

Nevertheless, my point here was to show a few of the ideas and directions I've been considering, and I'm keen to hear from others what you're thinking about too. I'm not super online, so I'm not sure what the current chatter is about where devs are going, and these are just ideas I've come up with through my reflection.

I actively try to see both sides, and I'm a bit worried about where some of the AI stuff is going, but I'm choosing to be optimistic.

And if we cease to exist, well, it was a good run at least.

联系我们 contact @ memedata.com