标签 知识库 下的文章

警惕 AI 效率神话:你是“闪电战”的独立开发者,还是“持久战”的工程师?

本文永久链接 – https://tonybai.com/2025/08/06/blitzkrieg-vs-attrition-in-ai-age

大家好,我是Tony Bai。

最近,我们的社交媒体时间线上,充斥着各种令人惊叹的 AI 效率神话。一些出海独立开发者,凭借 AI 的强大能力,在极短时间内“闪电般”地产出数个产品,上演着“一人成军”的传奇。

这景象,在令人惊叹之余,也难免给我们这些在大型项目和复杂系统中深耕的工程师,带来一丝焦虑:世界变化这么快,我们传统的开发模式和节奏,是否已经落伍了?

今天,我想和你深入探讨这背后的本质。我们需要清醒地认识到,这其实是两种目标、路径、评价体系都截然不同的开发模式。我称之为:“闪电战”与“持久战”

“闪电战”模式:速度优先的“代码喷射器”

首先,我们必须理解那些“效率神话”主角们的战场。这是一种典型的“闪电战”模式。

  • 核心目标: 快速验证想法,通过大量的产品“赛马”,在广阔的市场中捕捉稍纵即逝的流量和商机。
  • 产品生命周期: 极短,甚至可以说是“阅后即焚”。一个产品可能只有一周的生命周期。若数据不佳,便会毫不犹豫地被下线,开发者则迅速转向下一个想法。
  • AI 的角色: 在这个模式下,AI 是一个速度优先的“代码喷射器”。它的核心任务是在最短时间内生成能运行的代码。至于代码质量、设计一致性、可维护性、乃至长期的技术债,通通不在首要考虑之列。因为代码本身,就是一种“快速消费品”。

我们工程师的“持久战”模式:严谨可靠的“副驾驶”

现在,让我们回到自己的战场。我们绝大多数人从事的,是截然不同的“持久战”。

  • 核心目标: 构建稳定、可靠、可长期演进的系统。我们写的代码,很可能需要在金融、医疗、基础设施等关键领域,7×24 小时不间断地运行数年。
  • 产品生命周期: 长期,以年为单位。每一次代码提交,都是在为一座摩天大楼添砖加瓦。
  • AI 的角色: 在这里,AI 必须是一个严谨可靠的“副驾驶”。它生成的每一行代码,都必须经受我们最严格的审视。因为我们,作为工程师,需要对 AI 产出的质量、安全性、性能、可维护性负全部责任。在这里,代码不再是消费品,而是需要长期持有和维护的核心资产——或者,沉重的技术负债。

看清这一点,我们就能明白:用“闪电战”的效率标准来衡量“持久战”的工作,是毫无意义的。 我们的战场不同,评价标准也完全不同。因此,我们完全没有必要为那种“一人一天N个产品”的神话而感到焦虑。

我们“持久战”工程师的 AI 打法与“护栏”

那么,在我们的“持久战”中,应该如何正确地使用 AI,既享受其带来的效率提升,又保证工程质量呢?关键在于建立清晰的“护栏”。

  1. 代码审查是最后防线: AI 生成的代码,必须经过比人类编写的代码更严格的审查。审查的重点,不应仅仅停留在功能实现,更要深入到安全漏洞、性能陷阱、设计模式是否恰当等深层问题。

  2. 建立团队级“Prompt 知识库”: 鼓励团队沉淀高质量、包含完整上下文和明确规范要求的 Prompt 模板。这能保证 AI 输出的“起点”质量更高,更符合团队的架构和规范,而不是每次都从零开始“随机”生成。

  3. AI 专攻其擅长领域: 我们可以放心地让 AI 生成单元测试、API 文档、数据结构模板,或是在明确的模式下进行代码重构。但在核心架构设计、复杂业务逻辑实现等“高风险”领域,AI 只应作为提供思路参考的“顾问”,绝不能成为决策者。

  4. 引入“AI 生成”标识: 在代码提交或 Code Review 流程中,可以引入规范,要求开发者明确标识出哪些部分是由 AI 主要生成的。这就像在施工图纸上标注出“预制件”,提醒审查者需要重点检查其接口和集成质量。

小结:认清你的战场,定义你的价值

首先,我们需要明确一点:“闪电战”与“持久战”之间,没有高下对错之分,只有战场类型和战略目标的不同。 如果你是一位寻求市场机会的出海独立开发者,那么“闪电战”无疑是极佳的策略。它能让你以最低成本快速试错,抓住机会,并在数据不佳时果断放弃,及时止损。这是一种聪明且务实的生存之道。

而对于我们绝大多数在企业中构建关键系统的工程师来说,认清我们身处“持久战”的现实,并重新定义我们在 AI 时代的价值,则至关重要。我们的核心竞争力,正在加速地从“编写代码”,转向“定义问题、设计系统、制定标准、审查质量、保障稳定”

AI 越是能高效地“写”,我们就越需要成为那个能提出正确问题、设计出健壮蓝图、并能精准鉴别优劣的“架构师”“质检员”。我们的工作变得更“上游”,我们的思考变得更具决定性,我们的价值也因此而更高。

所以,朋友们,请放下焦虑。清晰地认识到自己的战场,然后拥抱 AI 这个强大的“副驾驶”,在我们的“持久战”中,更高质量、更有效率地去构建那些真正能够改变世界、并经受住时间考验的系统。这,才是属于我们的战场,和我们的荣耀。


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

只为那一抹释然

一切没有目标的努力,都是瞎忙活儿。
                                                    - Tony Bai

刚实施回来,就又投入到新工作中,到今天才有那么一点点时间写写这件事儿。

* 缘起

我们的遗留系统性能一直不高,导致这一局面的因素有很多,比如最初设计和实现的“考虑不足”、后续维护人员的“随波逐流”甚至缺少勇气对影响性能的关 键代码进行重构等等。技术债务就这样一直积累着。直到两年前,我们终见其导致的巨大的影响了。

由于客户方成本压缩,单节点性能低意味着需要更多的硬件投入,并连带着报价升高,导致我们的产品市场竞争力下降。而竞争对手产品的性能是我们的 3-5倍,这终于引起了领导的重视,并下达了开发高性能版本的任务命令。

* 抉择

遗留系统的问题有很多,性能差仅仅是表象之一。可维护性差更让人印象深刻。遗留系统就像一件打满补丁的旧衣裳,虽然依旧能穿着遮体御寒,但却让我 们时刻战战兢兢,生怕一个动作会导致它解体,变得支离破碎。

对于我们这样一个mission-critical的系统来说,开发周期显然是不会短的。在性能达标的同时,更为重要的是保证产品的质量,确保上 线后运行稳定。因此摆在我们面前有两条路:
    1、在遗留系统上做“大修” – 大规模重构
    2、重写,把构成系统的骨架重新设计和实现,使它能够足够坚固,满足在“高速公路”上驰骋的要求。

我们最终选择了重写,也就是风险较大的那条路。在我们的理解中,重写软件就好比汽车升级平台,就像大众将传统的PQ25、PQ35等统统升级为 MQB平台那样。平台的升级,不光影响技术,还会影响方方面面,比如团队的能力、思维方式、合作模式以及团队过程改善等等。做 得好的话,会使整个团队迈上一个新台阶,这是原地修补所不能够带来的。

对于我个人来说,这也是我期望中的实验田,我将把之前研究的诸多实践落地,帮助团队提升能力。

自私地说,重写系统也是我的一个小理想,能遇到这样一个从无到有构建一个系统的机会是不多的,因此很是希望能看到一个系统一点一点的在自己的呵护 下“成长”起来。虽然我也清楚完成这样一个系统需要很长时间,而这期间我可能需要时刻紧绷着神经,直到系统正式上线后,才能感受到那一抹释然。

* 建立“骨架(skeleton)”

我们将项目分成两个阶段:建立系统“骨架”和为系统“添肉”,即添加业务逻辑。

系统的性能目标是原遗留系统的10倍,这样我们建立的骨架的性能至少要高于原遗留系统的10倍。在“添肉”之前我们要充分证明骨架的设计是合理、 有效、稳定和高性能的。

遗留系统性能低,并非因为当初的设计者能力有什么问题,更多是局限于当初的设计目标。系统初期业务量不大,接入的外部网元不多,因此系统大量使用 了链表这种简单但低效的数据结构;为了easy coding,当初的设计者选择了全局大锁;在客户端-服务器处理模型上,选择了一个连接一个进程的“高耗能”模式。最初这样的设计应对当年的业务量也是 绰绰有余的,但应付今天的业务规模就显得颇为捉襟见肘了,以至于我们不得不通过罗列机器来满足业务增长的状况。服务器增多,却导致了我们维护 和监控难度的增加。

为了应付现有业务量规模以及未来若干年的业务量增长,我们的新系统的骨架在设计时显然要扬长避短:
    – 我们重新设计了通用的服务端框架和客户端框架,使得系统各个业务模块采用相同的通信处理机制;
    – 我们没有选择线程,而是依旧采用成熟的进程(资源隔离式) + IO多路复用(linux下epoll机制)的服务器-客户端模型,与以往不同的是,我们在每个进程中处理多个链接,设定进程数量在合理水平,避免大量上下文切换带来的性能损耗;
    – 将传统的全局big lock更换成了细粒度锁;
    – 采用高效的数据结构和算法,比如用hash和array替代掉list等;
    – 用简单队列替换掉原先复杂的队列调度结构,降低代码理解难度和后续维护门槛。
    – … …

我们要求对骨架代码进行严格的单元测试,通过lcut为骨架代码建立起单元测试集,并结合持续集成对骨架代码进行持续的单元测试验证。

骨架完成后,我们对其进行了全面的压力测试,确保其性能水平达到我们设计要求,这是我们进入下一阶段的前提条件。

* 添肉(business logic)

有了稳定、可靠、高效的骨架,我们在”添肉“阶段就更加有信心了。用C写纯业务逻辑是苦逼了一些,但还好我们没有全部将以前遗留代码扔掉,我们为了保证功 能Feature不丢失,我们会尽量复用之前的业务逻辑,当然是“规范地”搬到新系统中的,尽可能地去除原有代码中的Bad smell

与骨架相比,业务逻辑相对复杂,且耦合较多,因此对这些业务逻辑做单元测试真是一件让人头疼的事情。不过这也和我们最初的估计相符,最初制定的策略就是对骨架代码做高覆盖,对业务代码则宽松些,尽量覆盖即可。

* 附加实践

就像前面所说的那样,围绕着这次重写系统,我策划了很多实践有了落脚之地,包括:
    – 试点知识管理 :通过这次重写,建立起关于该系统的知识库;
    – 增加基于ReviewBoard在线代码评审环节;
    – 引入基于Jenkins持续集成
    – 重新思考和设计构建环节,通过buildc提高构建效率;
    – 重新设计通用安装包
    – 使用LCUT对骨架进行单元测试覆盖;
    – 规范commit log以及代码提交流程
    – 应用代码风格检查工具,使得所有代码风格一致。

事实证明上述实践在这次系统重写的过程中产生了很好的效果,尤其在代码质量保证方面,系统上线后的结果也恰恰印证了这一点。

* 上线

“丑媳妇总要见公婆”。我们的新系统也到了该上线服务的时候了。为了这次上线,我们做了较为充分的实施准备,无论是人员还是时间,都有倾向性的向这个系统 投入。我们也提前做好了应对各种突发问题的预案。可实际情况出乎预料,与遗留系统的版本升级相比,这次全新系统上线显得十分顺利,系统的核心相当稳定,出 现的一些问题也都比较边缘,对这次成功上线已经不构成什么影响了。

* 那一抹释然

在实施人员庆贺上线成功时,在领导口头表扬时,我的内心却显得十分平静。对于新系统来说,这是一个好的开始。对我个人来说,我感受到了那一抹期望已久的释 然。在这个领域里这个方向上已经摸爬滾打了多年,虽然还有好多地方需要改进,好多实践需要完善,但我的内心告诉我:“够了”、“已经没什么牵挂了”、“是 时候换换方向、换换领域了”、“让其他人去做吧”。我已经在产品和团队中融入了我的思想,我相信他们都能很好的演化和发展。而我则为接受新思想、新领域做 好了准备。

的确也到了为自己设立新目标的时候了!

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言进阶课 AI原生开发工作流实战 从 0 开始构建 Agent Harness Go语言精进之路1 Go语言精进之路2 Go语言第一课 Go语言编程指南
商务合作请联系bigwhite.cn AT aliyun.com
这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats