是的,我们所有人都在撒谎。而且你大概也不例外。让我来证明一下。

最近我在读一篇英文文章,标题很扎心:「Every Developer Is Lying About Something — And AI Won't Fix It」。作者是 Dev.to 上的一位波兰开发者 Sylwia,讲的是技术圈里那些大家心照不宣的"谎言"。

读完之后我想了很久。这篇文章不是讲技术的,是讲人的。而恰恰是这种话题,比任何框架对比都更值得写一写。

因为技术你可以学,但人的问题,十年之后可能还在那里。


那些我们不敢问的问题

我认识一个真正的顶尖工程师。

他是那种让猎头抢着打电话的人——优化 LLM 推理驱动,技术一路晋升,辞职时手里握着好几个 offer。放在现在的行情,这已经算稀有品种了。

但他跟我说了一件事,每次想起来都觉得很有意思:

每次加入一个新项目,他都会觉得自己像个傻子。

别人看起来都在忙:写代码、交付任务、在 Slack 上敲得噼里啪啦。而他坐在那里盯着代码仓库,心里想的是:

  • 这代码到底在干什么?
  • 我们在做的是正确的事吗?
  • 为什么这里要这么设计?
  • 为什么不那样做更好?

然后他开始问问题。

结果往往是——没人真正知道

这让我想起一个老笑话:

砍木头的工人们埋头苦干,领队爬上最高的树看了一眼,喊到:
"兄弟们!我们砍错森林了!"
底下的人回:"管他呢,进度很好啊!"

这不是代码问题,这是人的问题。而任何 LLM 都救不了你——如果你从来不问正确的问题


谎言一:"我能搞定"——这句承诺有多真

刚入行的时候,我经常遇到这种情况。

TL 丢过来一个任务,看了一眼,心里想的是"这玩意儿我没做过啊"。但嘴上说的是:"没问题,我来看看。"

实际上呢?我在赌。赌我能百度出来,赌我能 stackoverflow 出来,赌我看两篇博客就能假装懂这个框架。

有时候赌赢了。

更多时候——浪费了大量时间,最后还是不得不问同事。但那时候已经太晚了,要不就是代码写得面目全非,要不就是耽误了工期。

为什么不早点问?

因为怕。怕显得自己不行。怕 TL 觉得"这人怎么连这个都不会"。怕在团队里丢脸。

这是最常见的谎言,而且它会把一个本来可以快速解决的小问题,变成一场漫长的灾难。

我自己就犯过这个错。

当年第一次接触消息队列,TL 丢给我一个"简单"的需求:接一个 Kafka consumer。我嘴上说好,心里完全没底。然后我花了三周时间——不是夸张,真的三周——才把那个 consumer 调通。

那三周里我做了什么事呢?

  • 看了十几篇 Kafka 入门博客,越看越懵
  • 抄了三个不同版本的代码,都跑不起来
  • 在群里问了一个"很蠢"的问题,结果发现文档里写得清清楚楚
  • 最后一天半夜三点对着屏幕发呆,差点哭出来

如果我第一天就问:"这个 Kafka 我没用过,能不能给我半小时了解一下?"——可能两天就搞完了。

但我没有。我选择了撒谎。

现在回头看,那三周浪费的时间,够我学两遍 Kafka 了。


谎言二:"我有时间"——这句话是最贵的谎

这条开始涉及 senior 和 lead 的领地了。

有些人把"救火队员"当成自我价值的一部分——"这个系统离不开我"。有些人只是害怕承认自己已经超载了,害怕失去影响力。

所以他们继续接:

  • 最难的任务
  • 无尽的会议
  • 需求评审
  • 工时估算
  • 和业务方吵架
  • Code Review
  • 架构决策
  • 文档

说实话,总有什么会崩的。

我见过一个架构师,连续半年每天工作到凌晨两点。他不是在写代码,他在开会——晨会、需求会、设计评审、retro、一对一等。他的日程表排得密密麻麻,从早上九点到晚上十点,中间只有半小时吃饭。

结果呢?

  • 他开始忘记说过的话,同一个决策要讨论两遍
  • 他的 Code Review 越来越敷衍,只看个大概就 approve
  • 最重要的架构设计文档,他写了一半就丢在那里
  • 最后他请了半个月假,回来发现项目反而推进得更快了——因为其他人被迫学会自己做决策

人不是钢铁,没人能 100% 输出跑一辈子。

但很多人不愿意承认这一点,尤其在晋升压力下,"我还能扛"变成了一种勋章。

不只是 senior 有这个问题。我见过刚入职的应届生,不好意思拒绝额外的任务,觉得拒绝就是能力不行。结果第一个月就累到发烧,给自己埋下了burnout 的种子。

"我有时间"这句话最可怕的地方在于,说久了,你自己都信了。


谎言三:"这个需求三天能做完"——你认真的吗

我在不止一个团队见过这种场景。

规划会上,某位同学举手:"这个功能,我估计三天够了。"

TL 问:"你确定?"
"确定。"

然后你发现——他估的是理想情况:不被中断、不开会、代码一次跑通、没有边界 case、没有甲方临时改需求、没有联调问题。

然后冲刺结束的时候,所有人都很惊讶:为什么没做完?

但这还不是估算最有趣的地方。

我遇到过更离谱的。

有个 senior 开发,估任务的时候像在守护什么神圣不可侵犯的东西。他会激烈地为自己的数字辩护:"这个任务确实很复杂!"团队其他人心里都清楚没那么夸张,但为了早点结束评审会,选择举手投降。

然后呢?至少三次,他自己把那个"超复杂"的任务捡起来——一小时就写完了

也就是说,那场估算讨论花的时间比实际开发还长。

这种人你身边有吗?我猜肯定有。

估算本身不是问题,问题是——为什么一个人会系统性地高估或低估?

有些是能力问题,他真的不知道这个任务需要做什么。有些是心理问题,他需要显得"工作量饱和"。还有些是文化问题,团队不允许说"我不知道"。

不管是哪种,最后伤害的都是项目。


谎言四:"这个技术栈是最好的,其他都是垃圾"

这种人是危险的。

他们说话的方式是这样的:

"用这个技术,而且只能用这个技术,因为其他都是垃圾。"

你可以填入任何技术圣战:

  • React vs Vue vs Angular
  • Java vs Go vs Rust
  • 微服务 vs 单体
  • Postgres vs MySQL vs MongoDB

我写过「我喜欢 Tailwind,对不起」这样的文章,但即使是那篇,我也专门讲了它的缺点和使用场景。如果有一天我开始宣称某技术对所有情况都是最优解,请一定在评论区告诉我:

"去楼下草地走走清醒一下。"

我一直在想这种绝对自信是哪来的。并不是所有人都是付费 KOL,有些人是真情实感地卷入了技术圣战。有些人可能只是对自己会的技术有感情——因为他们只懂这个。

这种确定感会杀人。

项目里大家停止质疑决策,其他人不敢发声,业务方默认"那个说话很自信的人肯定是对的"。

我见过一个团队,因为 tech lead 坚持要用某种"最先进"的框架,结果项目延期了三个月。那个框架确实在某些场景下很强,但不适合他们的业务类型。后来新来的 CTO 在 retro 上说了一句话很到位:

"不是框架的问题,是决策过程的问题。没有人敢说'我们可能选错了'。"

最好的情况:你身边多了一个懂框架但不懂业务的人。

最坏的情况:你最终用了一套烂架构,全靠 egos 在那里撑着。


谎言五:"我已经测过了"——这个谎的代价

这条可能是我见过最普遍的。

Code Review 里,你看到 PR 状态是 "Changes requested",然后你去问作者,他说:"啊,我改了,但还没 push。"

或者:"我本地测过了,没问题。"

然后你一跑,crash 了。

或者更常见的——"这段代码我没动过,之前就有问题"。

你自己信吗?你以为别人看不出来吗?

我见过一个项目,交付前一周发现一个严重的 bug,追溯到两个月前的一段代码。那段代码的提交记录写着 "fix: quick patch"。两个 senior developer 都在那段代码上 review 过,没有人提出问题。

为什么?

因为没有人真的去理解那段代码。他们 trust 了提交者的人品,trust 了同事的技术水平,trust 了过去的历史记录。

但代码不会因为你信任它就变得正确。

还有一种更隐蔽的撒谎:我看到过有人把测试覆盖率当作 KPI,然后疯狂写那种"assert true"的测试来刷数字。那也叫"测过了",但跟没测有什么区别?


AI 为什么也救不了你

这是文章最核心的观点,也是我想重点说的。

现在所有人都在说 AI、聊 AI,好像它是来解决一切问题的银弹。但现实是——

有多少 AI 工具救过那个不敢问问题的 junior?

很少。

Coding Agent 确实能帮你写代码,但它救不了一个不敢承认自己不懂的人。他会把错误的 prompt 喂给 Agent,然后得到一堆看起来像模像样的垃圾代码,最后提交到仓库里——因为他甚至不知道代码是对的还是错的。

我用过 Claude Code,用过 Cursor,用过各种 AI 辅助工具。我发现一件事:AI 工具的效率取决于使用者的水平。

同一个 AI 工具,在不同的人手里,产出差距可以是十倍。

经验丰富的工程师知道问什么 prompt,知道怎么验证 AI 的输出,知道什么时候 AI 在胡说八道。而新手呢?AI 说啥他信啥,然后花三小时 debug 一个根本不存在的"bug"。

这不是 AI 的问题,这是人的问题。

有多少 AI 工具救过那个超载的 senior?

更少。

AI 可以写代码,但它不能帮你开会、帮你做决策、帮你做 Code Review。你把任务丢给 AI,你还是得等它返回,然后 review,然后改 bug,然后集成——你还是在做所有的事情,只是多了一个环节。

研究甚至表明,在某些场景下,AI 工具反而拖慢了开发者。因为 prompting 和 review AI 输出本身也需要时间和精力。

我看到过一些团队,引入 AI 工具之后反而更忙了——因为要花时间 review AI 的输出,因为 AI 生成的代码有时候比手工写的还难维护,因为要不断调整 prompt 来让输出更接近需求。

这不是 AI 的错。AI 是工具,工具不会自动解决问题。解决问题的是人。

真正的问题从来不是代码本身。真正的问题是写代码的人。


怎么破?几点真实的建议

说了一堆问题,该说说解法了。

虽然我说没有"神奇解决方案",但有些事情确实是有用的。

第一,敢说"我不知道"

这是最难的一步,也是最重要的一步。

我现在的团队有一个规矩:新人不允许说"我试试看"。他必须先说他懂不懂、要学多久、卡在哪里。这个规矩一开始让我很不舒服——谁愿意承认自己是新手呢?

但效果是明显的。我们发现早期沟通成本大幅下降,很多原本要在 Code Review 时才暴露的问题,在设计评审阶段就被抓出来了。

我最近在学一门新的框架,前两周我几乎每天都在群里问"这个概念我没听懂,谁能解释一下"。一开始我觉得很丢脸,后来发现——大家其实都很忙,没人记得你问过什么问题。而那些问题,恰恰是帮助我快速上手的关键。

第二,把"不估理想情况"变成团队文化

我们现在的估算方法是:先估"最快情况",然后乘以 2,再加一天缓冲。这个数字听起来很夸张对吧?但它往往还是偏保守的。

为什么要乘 2?因为我们需要接受中断、接受调试时间、接受突如其来的联调问题。

这不是悲观,这是现实主义。

我们还有一个规矩:每个任务估完之后,必须说清楚"最大的不确定因素是什么"。这让估算从"掷骰子"变成了"风险管理"。

第三,给自己和同事留"不懂"的余地

我见过最好的 team 氛围,是大家可以公开说"这个东西我没用过"。

没有人在意你懂多少,每个人都在意你愿不愿意学。

一个团队里最危险的人,不是那个技术不行的人,而是那个技术还行但装成什么都懂的人。后者会浪费你更多时间。

我们团队最近在推行一个"不懂就问"的活动:每周五下午有一个小时的 open Q&A,任何人都可以问任何问题,不管多简单。我们发现很多长期困扰大家的问题,其实一句话就能解决,只是之前没人敢问。

第四,正视"时间不够"这个问题

如果你发现自己连续两周都在加班,第一件事不是继续扛,而是跟你的 manager 谈。

谈什么?不是"我需要更多时间",而是"这些任务里,哪些是可以不做的,哪些是可以延后的,哪些是可以别人帮忙的"。

很多时候,manager 并不是故意给你压任务,他只是不知道你已经超载了。你不说,他以为你还能扛。


诚实一点,其实没那么可怕

我不是什么完人。

这些谎我也撒过。而且不只是对别人——有时候是对自己。

我曾经在一段低谷期,每天假装一切正常,实际上早上起床要深呼吸三次才能打开电脑。我告诉自己:"大家都在努力,你凭什么不行?"

后来我看到一个研究说,程序员的精神健康问题被严重低估了。很大一部分原因是我们不愿意示弱——这个行业的文化就是这样,你不能说不。

但问题是:你越是假装,你越是做不到。然后你更焦虑。然后你更假装。

死循环。

软件工程里的大量问题其实根本不是技术问题。它们是人的问题:

  • ego
  • 不安全感
  • 害怕显得蠢
  • 害怕承认错误
  • 害怕说"我不知道"

敢于说"我不知道",敢于在规划时公开讨论不确定性,敢于说"不好意思,我还没理解,能再解释一遍吗"——这不会让别人看低你。

很多情况下,恰恰相反。

团队沟通变好了。其他同事也开始问问题了。对话变得更诚实了。问题被更早地发现。

试试看。就一次。你可能会惊讶。


写在最后

文章结尾作者问:"你在团队里见过哪些开发者的谎言?"

我想把这个问题抛给你。

你身边最常见的谎言是哪一种?是你自己撒过,还是见过别人撒的?后来怎么解决的?

以及——你现在有没有在撒某个谎?

如果有,想想这篇文章。想完了,点个赞,然后去跟你的 TL 或者同事说一句:

"其实这个东西我还不太懂,能教教我吗?"

相信我,没那么可怕。


本文灵感来源:Dev.to 作者 sylwia-lask 的文章「Every Developer Is Lying About Something — And AI Won't Fix It」