@Lenciel

技术债的心理模型

目录

最近在一个边重构边上云的项目里,受到些来自于非研发部门的压力(为什么要花这钱/时间,为什么要放着业务需求不做干这个…),搞得技术团队的小伙伴有点儿委屈:

软件系统需要不停还技术债,这个认知都没有吗?项目难度这么大,不是非干不可我们还不想干呢…

我安慰大家,「这个认知都没有」其实很常见,因为人家没有欠这个债。

我使用「技术债」这个类比从来都很小心,特别是在管理团队推进这样的项目时。因为没有技术背景的人多半有下面的心理模型:

  1. 这个债叫是技术团队欠下的,所以叫技术债,说明他们干得有问题,需要去填自己挖下的坑;
  2. 他们要花成本还债,但花这么多时间和钱,即使一切顺利,系统也只是大致做了跟之前一样的事情;

所以要怎么推进这样的项目比较好?

什么是技术债

「技术债」这个术语由敏捷大佬 Ward Cunningham 在 1992 年提出,在 1999 年被 Martin Fowler 用四象限分类后在技术圈迅速变成通识,现在已经有人可以对它做全生命周期的建模

就我个人而言,所有这些类比都有过度抽象的嫌疑。在具体工作中,我们把包括但不限于代码质量(可理解性、效率、可维护性等)到架构质量(领域模型、核心抽象、应用边界、接口质量等)到基础设施质量(稳定性、弹性、可用性、可靠性等,以及是否采用或者停用某些技术、框架、设施)的所有非产品功能的开发需求,都归入「技术债」,好像是表达有天我们应该「偿还」它。

如果要在公司里推进这类项目,需要在研发内外建立不一样的心理模型。

内部心理模型

和号称的不同,大部分人不喜欢改变。

很多优秀的工程师尤其不喜欢对还在工作的旧轮子进行重构:大家宁愿造点儿新的轮子。

要让研发内部形成一个心理模型:我们研发的软件系统,本质上是整个组织基于对未来的预测,下的赌注的放大器

如何让这个放大器稳定、高效、灵活,是我们在完成功能开发的同时,需要持续不断投入的本职工作。而不是已经做完了所有需求,给公司完成的「额外部分」。

这步如果有意识地去推,应该不太难:毕竟是内部,还有很多管理上牵引的办法和工具。

外部心理模型

更重要的是,在公司里要建立一个统一的心理模型:技术债是整个公司欠的,并且不可避免

为什么是整个公司欠的?

因为我们的系统,既覆盖基础设施、需求开发、产品上线,也覆盖管理、设计、运营、销售、市场、组织战略。

可以说,公司的每个部门都代表了对外部用户或内部用户的某种承诺。这些承诺只要还有没有完美交付的地方,只要这些地方涉及软件上的改进,那么就是「技术债」:它不是技术部门的债务,它是需要用技术投入解决的债务。

为什么不可避免?

因为技术债本质上来自于复杂度,而复杂度不可避免。

大部分人厌恶复杂度,因为教育阶段训练我们用简单的线性思维来思考问题。

但公司管理团队大部分经过人生历练和有效学习之后,对复杂度会有理解和预期。

在这步感到很困难的同学很多,因为大量都不是技术上的工作而是「人」上的工作。很多技术管理者往往意识不到,让自己的团队「被认为」在正确和高效的工作,和他们「实际上」在正确和高效的工作,是同样重要的。

甚至在某些阶段,前者更加重要,不然连让大家「实际上」在正确和高效工作的空间和时间可能都拿不到。

天凉好个秋

又到 1024

必须承认,我对程序员的世界越来越陌生了。

不是因为生疏而感到陌生工作层面,我经营着技术公司,也作为基金合伙人看着一堆待投项目和被投企业;个人层面,我跑着本地的 sherpa-onnx, RAG 了自己的 Apple Notes,每天都在调各种程序,看各种进展,读各种论文。

是因为熟悉而感到陌生。

甚至我怀疑,所有真正的程序员,都多多少少感到有什么东西变了,以至于有些身份危机

当然,世界一直在变。

如今它的发展越来越像 John W. Campbell 的反乌托邦科幻:各种疫情和气候变化带来的天灾人祸,纳粹势力在全球各地涌动,局部冲突持续不断战争无休无止,世界警察被一个疯子专政,一些亿万富翁为了逃避这一切想要殖民火星这么看又有点不太 John W. Campbell,很 Ben Bova 了…

身处其中的程序员,还拥有其他人没有的复杂感受:人类社会好像即将被自己写出来的 AI 搞得洪水滔天,但我们既跟人类不是一伙的,又跟 AI 不是一伙的,并且,还有可能被 AI 第一个踢下诺亚方舟。

其实我一直懒得写和 AI 有关的内容一方面,各种信息渠道里已经塞满了打着 AI 标签的低质量内容。一方面,平时的交流中,无论对它是恐惧、焦虑、厌恶的人群,还是看好、激动、兴奋的人群,真正理解的人并不那么多。 。但大过节的,请允许我分享一点点对 AI 的态度,给同行们当面镜子。

并且我承诺,它主要是关于「人」而不是 「AI」 的。

不道听不途说

这世上确实有些人把 AI 当成宗教在干。

只要读读 Compact 关于 Nick Land 让人毛骨悚然的文章,或者看看 Anthropic 和 Rick Rubin 合作的那个 The Way of Code 项目老子的《道德经》被这么玩也真是非常 vibe 了… 就会知道,这些信仰普遍比较极端。

我对这些人只有一句祝福:别搞变态了。

大部分人,装着各种目的在赶海,怕自己错过了这一波。

我更喜欢 Andrej Karpathy 这挂的,功底深厚,思路清晰,最重要的是,哪怕对不同意他或者他不同意的观点,仍然能够给出详细的,技术上的思考和响应

我始终认为,LLM 很快会到顶因为我们的心智绝不仅仅是「学习」或者「训练」的产物:小鹿生下来很快就会奔跑,靓仔到了十几岁看到某个特点的姑娘就会心动,这些过程都不需要大量的采样、打标、训练,而只是「发育」和「成熟」。 。但哪怕你不同意 AI 只是个工具,也应该从从概率论开始,从明斯基的论文开始,从 The Bitter Lesson 这类资料开始,深入学习,少听噪声(道听),也少制造一点噪声(途说)。

或者,如果你不知道能够创造出什么价值,就别参与。

不要被炒作搞得好像不参与就错过了什么一样。

《纸牌屋》里有句话是真的:

You can’t lose if you don’t play.

要团结要友爱

但别误会,我没那么反感炒作。

新技术的成熟总是伴随着炒作和投机。

所以如果只是炒作 AI 是现在唯一值得加入的游戏,真没什么。

不一样的是,AI 好像是个鱿鱼游戏

程序员想要用它替代设计。

设计想要用它替代程序员。

产品经理想要把设计和程序员都替代了。

人类历史上大概从来没有一个技术,能让我看的 BP 上有这么多关于「替代 xxx」的描述。

这些创业公司,想要替代研发、替代人事、替代法务、替代财务、替代司机、替代保姆、替代搬运工…

先不说这些目的能不能达到,有这样的念头在我看来也是有些诡异的。

我们应该为了干好自己的活去掌握和应用 AI 这个工具,而不是为了干掉别人。

无需相关技能,就能解决问题,只需要一个念头,一点 vibe,一堆 token。

这种没有「摩擦力」的世界,真的美好吗?

拥抱专注拥抱摩擦

互联网一开始也说要消除「摩擦力」,以提高「效率」的名义。

Cory Doctorow 把这个消除摩擦的过程称之为 enshittification 是很有道理的It is a three stage process: First, platforms are good to their users; then they abuse their users to make things better for their business customers; finally, they abuse those business customers to claw back all the value for themselves. Then, they die.

是的,今天下单今天到,打开不合适一键退回去,很有效率。

随时都可以接入会议,不用懂外语 AI 实时翻译,开完会之后马上生成纪要,也很有效率。

但省下来的时间我们是要干嘛?或者多赚的钱是要买什么?

奢侈品吗?

奢侈品从来无关性能、效率、投入产出比。

恰恰相反,它表明拥有者可以负担得起在别人看来是浪费的投入。

可笑吧。我们拼了老命提效,只为了获得效率对面的东西。

所以不如换种想法。

今天,不花钱也不用 AI 就可以过得很奢侈。

比如,花时间看完一本小说或者参加一场音乐会,因为专注和摩擦已经比铂金包还稀缺。

更重要的是,过得更加专注,拥抱更多摩擦,不仅仅是一种生活旨趣。

而是我们值得拥有的东西,都只有这样才能获得。

专注使得产出变得有意义,摩擦使得交互变得有意义。

拿艺术来说。

AI 的问题不在于它的作品很拙劣,实际上 AIGC 在很多层面已经足够好了。

但让艺术成为艺术的,是一个人选择用自己仅此一次的生命中的一段时间,以某种并不完美的方式和其他人尝试沟通。

比如我明明可以去踢个球吃个饭打会儿游戏,但是我选择坐下来写个小说。通过将注意力浪费在这里而不是别的地方,我向自己和他人传递了一个信息:我真的有很想表达的东西。

这「东西」,有的人看到会觉得不错,有的人看到会觉得垃圾,有的人会努力翻找但是不知道是啥东西。

这些交互充满了「摩擦」,才带来意义。

AI 产出的东西里没有另一个人精心放置的需要我去理解的「东西」,所以我体验不到意义。

音乐、文学、绘画、诗歌、舞蹈…所有的艺术都是低效的,都是经过大量「摩擦」才能掌握和感受的。

任何人花几秒钟就能生成的作品,得好好想想何必还费劲去生成它。

艺术之外,好的感情,好的社区,也都是非常「低效」,充满良性的「摩擦」的。

人类历史上,往往独裁者才会承诺减少摩擦。

伴随这个承诺的,常常都会有一个针对「正确人群」的筛选。

不正确的人,不但会感受到摩擦,还会被清洗。

作为程序员,我们永远都可以选择,花些时间和其他跟自己一样不那么正确的人类,一起专注,或者相互摩擦。