Glean 拾遗
日刊 /2026-09-01 / 资深工程师的沟通失效:你在防复杂度,业务在追速度

资深工程师的沟通失效:你在防复杂度,业务在追速度

原文 www.nair.sh 收录 2026-09-01 06:00 阅读 13 min
AI 解读

文章以两条业务环路解释资深工程师的核心工作:市场/业务端靠快速试错来降低不确定性,服务端则靠稳定、可理解、可调试的代码来控制复杂度。两者在公司里并行运转,导致工程师反复追问'为什么又要加功能',而业务方困惑'为什么就是不做'。作者认为高级工程师真正擅长的是拒绝不必要的构建、复用已有能力,并把这种能力包装成一个问句——'Can we try something quicker?'——来同时回应业务对速度的渴求与自己对复杂度的警惕。他还进一步提出为速度与稳定各建一套系统(Speed 版与 Scale 版)的解耦思路,并指出 AI 在加速市场反馈环路的同时,正在破坏系统的可理解性且不承担任何责任。适合关注组织沟通、系统演进与 AI 时代工程职责的工程师阅读。

原文 13 分钟
原文 www.nair.sh ↗
§ 1

When I join a team there are two kinds of senior developers I meet.

The first kind says things like:

“I found this new tool and it’s pretty cool ...”

“This company <company totally unlike the one we’re in> does things this way, so …”

“Here, look at this HackerNews post that says this is best practice, we should probably …”

I don’t like this kind of senior developer. A little self-protective, lots of time spent in the industry, probably a good people person.

But not my wavelength.

每加入一个团队,我都会遇到两类资深开发者。

第一种会说:

“我发现这个新工具,挺酷的……”

“<一家跟我们完全不同的公司> 就是这么做的,所以……”

“你看这个 HackerNews 帖子里说这是最佳实践,我们是不是也该……”

我不太喜欢这类资深开发者。他们有点自我保护,在行业里待了很多年,大概也很会来事。

但跟我不是一路人。

§ 2

Then there’s also this kind of senior developer:

“Do we really need that?”

“What happens if we don’t do this?”

“Can we make do for now? Maybe come back to this later when it becomes more important?”

Ah, baby, this is my senior developer. The avoider, the reducer, the recycler. They want to avoid development as much as they can.

Why? Because they hunt a singular monster in professional software development: complexity.

Special cases, if conditions, new database tables, new components. All yuck yucks. The senior developer wants as little of this as possible, spending lots of time making sure they absolutely need to add more code.

Because adding to a system is risking more complexity.

Yes, yes, of course this is simplistic. There are senior developers who excel at taking on unsolved problems and finding new creative designs.

But eventually, if you’re taking responsibility for a working system, you’re scared of complexity.

Now, why is that? What’s the downside of complexity? And why doesn’t anybody else get it?

而另一种资深开发者是这样的:

“我们真的需要这个吗?”

“如果不做,会发生什么?”

“能不能先这样凑合?等它变得更重要了再回过头来弄?”

啊,宝贝,这才是我说的资深开发者。回避者、简化者、回收利用者。他们想尽一切可能少写代码。

为什么?因为他们在专业软件开发中只追杀一只怪兽:复杂度。

特殊分支、if 条件、新的数据库表、新的组件,全都是让人倒胃口的东西。资深开发者希望这些东西越少越好,会花很多时间确认自己是不是真的非加代码不可。

因为给系统加东西,就是在增加复杂度的风险。

当然,这么说确实是简化了。也有资深开发者非常擅长啃下没人解决过的问题,拿出有创意的设计。

但归根结底,如果你要对一个正在运行的系统负责,你就会对复杂度感到恐惧。

这又是为什么?复杂度的坏处到底是什么?为什么其他人都看不到?

§ 3

The rest of the business is scared of uncertainty

We’re going to be simplifying what a business is using two loops.

This is the first loop; marketers, salespeople, product managers, the CEO, they all live here:

Hand-drawn diagram of the business's first loop: marketers, salespeople, product managers and the CEO take ideas to market and feed what they learn back into the next attempt.

The main goal of this loop is to try and learn. The business wants to take things to market and then get feedback on whether they’ve got something valuable or not.

The monster, for people in this loop, is uncertainty.

And uncertainty is cruel because no strategy is guaranteed to work. When combined with time (compensation for marketing/sales, or payroll for founders, or data for product managers) it can feel like taking things to market as fast as possible is the only way to reduce uncertainty before a deadline. The more you can take to the market, the more you can get feedback from it, the more you can (potentially) reduce uncertainty.

This loop, and all companies start with this loop, is about pure, raw, speed.

But what happens when a business gets customers?

公司里的其他人怕的是不确定性

我们用两条回路来简化一家公司的运转。

这是第一条回路:市场、销售、产品经理、CEO,全都活在这里:

手绘示意图:公司的第一条回路——市场、销售、产品经理和 CEO 把想法推向市场,再把学到的反馈带回下一次尝试。

这条回路的主要目标是尝试和学习。公司想把东西推向市场,然后获得反馈,判断自己做的到底有没有价值。

这条回路里的人,面对的怪兽是不确定性。

不确定性很残酷,因为没有任何策略能保证奏效。一旦再叠上时间压力(营销/销售的工资、创始人的薪水、产品经理要的数据),你就会觉得:在截止时间之前尽可能快地把东西推向市场,几乎是降低不确定性的唯一途径。推向市场的东西越多,能获得的反馈就越多,也就越有可能降低不确定性。

这条回路——所有公司都从这条回路起步——讲的就是纯粹、赤裸的速度。

可公司一旦有了客户,会发生什么?

§ 4

Ah, now, here’s our second loop. People paying for a service.

Hand-drawn diagram of the business's second loop: paying customers using the existing service while the team works to keep that service running.

This loop is where a lot of senior developers find themselves in. The main goal in this loop is the continuation and guarantee of service.

Keep things working, keep things understandable, keep things debuggable, keep things fixable, keep things teachable, keep things stable.

Senior developers worry about stability because they take responsibility for the business to continue serving customers.

And what risks all of that?

Complexity.

It makes a system less understandable, less debuggable, less fixable, less teachable, and ultimately, less stable.

Rising complexity = lowering stability = senior developer failing responsibility = bad bad not nice, payments interrupted, everybody sad.

So, if the first loop’s goal was uncertainty reduction, the second loop’s goal is complexity management.

啊,现在看第二条回路:为服务付费的客户。

手绘示意图:公司的第二条回路——付费客户正在使用现有服务,团队同时努力让服务持续运行。

很多资深开发者就处在这条回路里。这条回路的主要目标,是服务的延续和保障。

让东西一直能跑、让系统一直能看懂、能调试、能修复、能教给别人、能保持稳定。

资深开发者在乎稳定,因为他们对“公司继续服务客户”这件事负有责任。

什么会威胁到这一切?

复杂度。

它让系统变得更难理解、更难调试、更难修复、更难传授,最终也更不稳定。

复杂度上升 = 稳定性下降 = 资深开发者失职 = 糟糕糟糕太糟糕,支付中断,所有人都不开心。

所以,如果第一条回路的目标是降低不确定性,第二条回路的目标就是管理复杂度。

§ 5

But why does this lead to communication failure?

Because once you have customers, both loops are running simultaneously. A business needs to both explore possibilities and serve customers at the same time.

Hand-drawn diagram showing the business's two loops running side by side: one chasing market feedback, the other keeping paying customers served.

Ok, now you might be able to spot my answer to the question in the title of this post.

Depending on which loop you spend your time on, your problem is framed differently (which is why I think developers get split in their opinions on AI; some work more on one loop than the other)

Hand-drawn diagram showing the same development work framed differently by the people in each loop — uncertainty versus complexity.

This was the story of the people in the first loop:

Hand-drawn diagram of the first loop's story: requests pour in, the team races to ship them so the business can learn from the market faster.

But this was the story of the senior developer in the second loop:

Hand-drawn diagram of the second loop's story: every new request adds complexity, threatening the stability of the system the senior developer is responsible for.

但这为什么会造成沟通失败?

因为一旦有了客户,两条回路就会同时运转。公司必须一边探索可能性,一边服务现有客户。

手绘示意图:公司的两条回路并行运转——一条追逐市场反馈,另一条维持付费客户的服务。

好了,现在你大概能看出这篇文章标题的答案了。

你站在哪条回路上,你看到的问题就会被框定成什么样子(这也是为什么我觉得开发者对 AI 的看法会分裂;有些人更多在一条回路上工作,有些人更多在另一条)。

手绘示意图:同一个开发工作,在两条回路上的人眼中被框定得完全不同——一边是不确定性,另一边是复杂度。

这是第一条回路里的人看到的故事:

手绘示意图:第一回路的故事——需求不断涌来,团队竞速交付,好让公司更快地从市场学到东西。

但资深开发者在第二条回路里看到的故事是这样的:

手绘示意图:第二回路的故事——每个新需求都在增加复杂度,威胁着资深开发者所负责系统的稳定性。

§ 6

The stories don’t match.

The more requests to build and add to the system the senior developer gets, the more the senior developer wants to respond with “uhhh, no complexity … maintenance costs … understandability … speed of continuing development … productivity over time …”.

But that does nothing to address the rest of the business’s need for reducing uncertainty.

The copywriter’s diagnosis: You can’t explain away someone else’s problem using your own problems.

And the copywriter’s prescription: You need to describe your solution as a solution to their problem as well.

Senior developer’s fail to communicate because they express their problems in terms of complexity management when they should be expressing their solutions in terms of uncertainty reduction.

By acknowledging that what the rest of the company is seeking for is uncertainty reduction, the senior developer can use their expertise to help.

And what’s the most useful skill a senior developer has? The reluctance to build what’s not necessary; the ability to spot an opportunity to re-use something already built.

Need to collect survey data? Google forms, baby.

Need to build a whole new feature to test it? Have you tried putting a button in the existing UI and seeing if people click it?

Need new analytics service? What’s the most important decision we need analytics for? Can we start with one decision, one chart, one metric?

You want to bake me a whole birthday cake? Just put a candle on my sandwich.

This is what senior developers learn to do: they learn how to give people what they want by being resourceful with existing software.

这两个故事对不上。

资深开发者接到的“建东西、加功能”请求越多,就越想回答:“呃,不要加复杂度……维护成本……可理解性……后续开发速度……长期生产力……”

但这些话一点也没有回应公司其他人降低不确定性的需求。

用文案的话来说,诊断是:你不能拿自己的问题,去解释别人的问题。

处方是:你得把自己的方案,也说成是他们问题的解法。

资深开发者之所以沟通失败,是因为他们用复杂度管理的语言描述自己的问题;可他们应该用降低不确定性的语言描述自己的方案。

一旦承认公司其他人真正追求的是降低不确定性,资深开发者就能用自己的专长帮上忙。

而资深开发者最值钱的技能是什么?是拒绝建设不必要的东西,是发现“已经有的东西可以再复用”的机会。

需要收集问卷数据?Google Forms 就行,宝贝。

需要做个全新功能来验证想法?你有没有试过在现有界面上放一个按钮,看有没有人点?

需要新的数据分析服务?我们做分析到底是为哪个最重要的决策服务?能不能先从一个决策、一张图、一个指标开始?

你想给我烤个生日蛋糕?往我的三明治上插根蜡烛就行了。

这就是资深开发者学会的本事:用现有软件里的资源,满足别人真正想要的东西。

§ 7

But how do you communicate this without sending people whole essays?

Copywriters love boiling down multiple signals into singular phrases. And so, here’s the magical phrase every senior developer must learn: ‘Can we try something quicker?’

The use of ‘quicker’ acknowledges what they’re really looking for; ‘something’ implies another way of achieving it; ‘try’ implies imperfection, but also the possibility of it being good enough.

It perfectly cuts down to the requirement of the rest of the company, speed to reduce uncertainty, while allowing the senior developer to exercise their expertise: reduce, re-use, and if life is truly a blessing, avoid.

That’s it. That’s my answer to the title of the post: senior developers talk in terms of complexity when everyone else is worried about uncertainty.

But! Big but!

AI now seems to make all of this pointless, doesn’t it? Why reduce? Why re-use? Why avoid? The AI can build so much in so little time.

Ah, well, it can’t yet do the one thing senior developers still do.

Take responsibility.

但怎么把这件事说出来,而不给人发小作文?

文案工作者喜欢把一堆信号浓缩成一句话。所以,每个资深开发者都必须学会的神奇句式来了:Can we try something quicker?(能不能先试试更快的办法?)

“quicker”承认了他们真正想要的是快;“something”暗示还有别的路径可以实现;“try”则承认不完美,但也保留了“可能已经够好了”的空间。

这句话精准地切中了公司其他人的诉求——用速度降低不确定性,同时让资深开发者发挥自己的专长:减少、复用,如果运气真的很好,那就干脆避免。

就是这样。这就是我对这篇文章标题的回答:资深开发者在用复杂度说话,而其他所有人担心的是不确定性。

但是!注意,但是!

AI 现在似乎让这一切都失去了意义,不是吗?为什么要减少?为什么要复用?为什么要避免?AI 可以这么快、这么多地造东西。

啊,但它还做不到资深开发者仍然在做的那件事。

承担责任。

§ 8

Senior developers care a lot about understanding the system because understanding allows fixing it when things go wrong. It allows extending it intelligently when the system needs to grow. It allows, more than anything, the continued, reliable servicing of paying customers.

AI threatens this understandability. It is incredible at improving the speed of taking things to the market, but it also affects the other loop, the one the senior developers are responsible for.

If you have a bunch of AI agents, junior developers, non-developers, and your investors and their mothers adding code into the system, you get a system that overcompensates for speed by giving up stability.

This was the business in two loops:

Hand-drawn diagram showing the business's two loops running side by side: one chasing market feedback, the other keeping paying customers served.

And this is how AI affects the two loops:

Hand-drawn diagram showing AI accelerating the first loop while destabilising the second — extra speed at the cost of understandability and stability.

Forget maintaining stability, AI is a downright destabilizer. It worsens understandability, fixability, debuggability, teachability, guaranteability, all the bloody bilities.

AI does this and takes no responsibility.

Not nice. This is the senior developer’s main worry that’s being brushed away.

资深开发者非常在意对系统的理解,因为理解了才能修好它,才能在系统需要成长时明智地扩展它,最重要的是,才能持续、可靠地服务付费客户。

AI 威胁的正是这种可理解性。它极其擅长提升把东西推向市场的速度,但它也会影响另一条回路,也就是资深开发者负责的那条。

如果有一堆 AI agent、初级开发者、非开发者,再加上你的投资人、投资人的妈妈,都在往系统里加代码,你得到的系统会用牺牲稳定性来过度补偿速度。

这就是那个两条回路并行运转的公司:

手绘示意图:公司的两条回路并行运转——一条追逐市场反馈,另一条维持付费客户的服务。

这则是 AI 对两条回路的影响:

手绘示意图:AI 加速第一条回路,同时动摇第二条回路——用可理解性和稳定性的代价换来额外的速度。

别提什么维持稳定了,AI 简直就是个失稳器。它让可理解性、可修复性、可调试性、可传授性、可保障性,所有这些该死的能力统统变差。

AI 做到这一切,却不承担任何责任。

这不妙。而这正是资深开发者最大的担忧,却被别人随手拂开。

§ 9

Luckily, senior developers have a few tricks up their sleeve.

Namely: decoupling.

For the longest time, software developers were the only ones who could build software. They were responsible for both loops.

Hand-drawn diagram showing a single software system that historically supported both loops, with developers responsible for speed and stability at once.

That’s one system supporting two goals.

幸运的是,资深开发者的袖子里还有几招。

也就是:解耦。

很长一段时间里,软件开发者是唯一能写软件的人。他们同时负责两条回路。

手绘示意图:历史上是一个软件系统同时支撑两条回路,开发者既要速度,也要稳定。

这就是一个系统支撑两个目标。

§ 10

What if we had two systems, one for each goal?

An analogy: a fiction writer rushes to complete a first draft (often called a vomit draft) and later extracts what’s working and gets rid of what’s not. There’s an editing process after the first initial rapid write. The editor’s job is to take the bits that are working well and shape it all into a cohesive whole.

What if we had one system just for speed? Everyone focused on bringing things to life could work here. AI agents, our own generated and unreviewed code, junior devs, marketing etc.

We could call this the ‘Speed’ version of the system. It’s not meant to be understandable, the goal is getting things good enough to take it to the market for feedback.

And then what if we had a second system focused on stability?

We could call this the ‘Scale’ version of the system. It’s designed by senior developers to be stable, understandable, and scalable.

The ‘Speed’ version allows the rest of the business to continue learning from the market, as the senior developers build a trailing version of the system that’s well-reviewed and understandable.

Plus, the design of the 'Scale' version is influenced by what worked and what doesn’t work in the 'Speed' version of the system.

Hand-drawn diagram showing the proposed split: a Speed version of the system for rapid market learning, and a Scale version stabilised by senior developers behind it.

如果我们有两套系统,每套各自服务一个目标呢?

打个比方:小说作者会匆匆完成初稿(常被叫作“呕吐稿”),之后再从里面挑出有用的部分、扔掉没用的。在快速的初稿之后,还有一道编辑工序。编辑的职责是拿走那些写得不错的部分,把它们塑造成一个连贯的整体。

如果我们有一套只为速度而生的系统呢?所有专注于把东西做出来的人都可以在这里干活:AI agent、我们自己生成但还没审阅的代码、初级开发者、市场团队等等。

我们可以把它叫做系统的 “Speed” 版本。它并不追求可理解,目标是把东西做到足够好,能拿去向市场要反馈。

那么,如果再来一套以稳定为目标的系统呢?

我们可以把它叫做系统的 “Scale” 版本。它由资深开发者设计,追求稳定、可理解、可扩展。

“Speed” 版本让公司其他部门可以继续从市场学习,而资深开发者在它后面构建一个经过充分审阅、清晰易懂的落地版本。

另外,“Scale” 版本的设计,也会参考 “Speed” 版本里哪些做法有效、哪些无效。

手绘示意图:提议的拆分方案——Speed 版本的系统用于快速市场学习,Scale 版本由资深开发者在后方稳定下来。

§ 11

Features get built on ‘Speed’ but then stabilized on ‘Scale’.

What this looks like in practice might be unclear, but the idea is to have a well-communicated de-coupling that explains that there’s a difference between going for speed and going for stability.

Imagine you get asked to build something ambitious, and you say:

“Sure, I’ll have the Speed version ready in 3 days. Then the Scale version in about 6 weeks.”

They get what they want, speed and momentum. You get what you want, observation and design.

Maybe?

Your thoughts, senior software developer?

Or should I say, senior software editor?

功能先在 “Speed” 版本上建起来,然后在 “Scale” 版本上稳定下来。

这套做法在实际中会长什么样,可能还不太清楚;但核心想法是,要把这种拆分清楚地讲明白,让人们知道“追求速度”和“追求稳定”是两回事。

想象有人让你做一个很有野心的东西,你说:

“没问题,3 天内我把 Speed 版本做好。Scale 版本大约 6 周后给你。”

他们得到了想要的:速度和势头。你得到了想要的:观察和设计。

也许吧?

你怎么看,资深软件开发者?

还是说,我该叫你资深软件编辑?

打开原文 ↗