这不是你的代码库

这不是你的代码库

原始链接: https://www.seangoedecke.com/not-your-codebase

工程师常常对他们写的代码有很强的"主人翁意识"。这可以理解:代码部分是他们的心血,也是他们的工作环境,所以他们自然希望工作环境舒适。

这导致工程师会强烈反对那些为了赶进度而引入技术债务的"临时修复"。对他们来说,这感觉就像优雅的代码库被破坏了------仿佛有人踩着满脚泥巴闯进了他们的家。

然而,情感上能理解,并不代表事实就是这样。这不是你的代码库。 它是公司的财产。你只是受雇来开发它的专业人员,如果公司认为让你离开更符合其利益,你将不再参与该代码库的开发。

为什么工程师会抗拒?

我觉得大多数聪明的工程师并没有在潜意识里认为自己拥有代码库。但很多人的行为表现却仿佛这是他们的私人财产。例如,当公司想要赶进度时,很多工程师会为了保护代码质量而积极抵制。当然,这么做可能有一些合理的理由:

  1. 质量下降太严重,以至于会危及公司的明确目标。
  2. 你认为所谓的优先级不是"真正"的优先级(比如这只是某个经理的一时兴起,而不是实际的战略)。
  3. 你故意把个人在代码库中的开发体验凌驾于公司目标之上(也就是说,你在故意消极怠工,很多人也会这么做^1^)。

但我见过很多聪明、敬业的工程师,在上述条件都不成立的情况下依然强烈抗拒。我只能得出这样一个结论:他们认为保护代码库免受负面外部影响是自己的责任------换句话说,他们认为代码库是他们的 ,而公司的目标是外部干扰。但实际上,代码库仅仅是为了实现公司目标而存在的。作为工程师,我们才是那个外部干扰。

信任管理者来做决定

你的管理者没有足够的代码层面的背景知识,无法决定代码库里的具体代码怎么写。但与你不同的是,他们在权衡开发速度和代码质量方面有更宏观的背景信息。例如,他们更清楚公司面临多大的财务压力,或者在年度大会上发布新功能有多么重要^2^。工程师们通常对这类事情嗤之以鼻------他们坚信长期质量才是最重要的,而不是在会议上能吹嘘什么------但这确实很重要。

对于工程师针对这一观点的经典反驳,我能想到最有力的论述是:

没错,理论上公司有权决定承担多少技术债务。但是,推高技术债务并尽快交付功能符合每个工程经理的个人利益,因为等恶果显现时他们早就不在公司了^3^。

工程师应该与之抗争,因为不毁掉自己的代码库符合工程师的利益,而且从长远来看,维护一个健康的代码库也符合公司的整体利益(即使个别经理不这么认为)。

这种情况确实时有发生。但这是一种极其愤世嫉俗的工作观。我确实和只看重短期利益的经理及产品经理共事过。但我也遇到过真正想把事情做好的管理者,他们只有在理由非常充分时才会追求短期利益。

根据我的经验,缺乏信任往往会变成一种自我实现的预言 。如果工程师总是强烈反对积累技术债务,他们的经理就会觉得遇到重要事情也无法沟通,从而不再信任他们,转而自己决定在哪里以及如何累积技术债务。工程师看到自己被边缘化,会想:"我就知道!这个经理根本不在乎质量。"但实际上,这只是一场沟通的破裂。

像对待别人的代码库一样对待它

把代码库当成"不是自己的",这意味着什么?这并不意味着毫无原则地随意添加技术债务。你仍然有义务向经理说明风险和后果,并在被要求做极其灾难性的事情时予以抵制。然而,这意味着你应该让你的经理对"哪些风险值得冒"做出最终决定。

同样,这也意味着让公司来做最终的技术决策。如果公司决定转向 React,你的工作就是把代码库迁移到 React。如果公司主推 Postgres,你的工作就是在可能的地方使用 Postgres。有时公司确实会做出糟糕的技术决策,你可以尝试说服他们不要那样做,但最终决定权在他们手里。

这也意味着要为其他工程师 考虑!如果你搭建了一个代码库,团队里的另一位工程师建议重构,这个重构方案需要比现状好多少才值得去做呢?事实上,哪怕重构会让代码库稍微变差一点,可能也值得允许,因为这能让那位工程师成为该部分代码的专家。随着时间的推移,让更多人熟悉代码库所带来的长期收益,远大于代码质量那一点轻微的下降。

最后的想法

对自己写的代码保持一定程度的主人翁意识是不可避免的,也很可能是件好事。你应该关心你所创造的东西!但这并不意味着你拥有任何实际的所有权。你在工作中花时间处理的代码库是属于公司的,他们可以随心所欲地处置它。你应该沟通各项决策带来的风险和后果,但归根结底,这事儿你说了不算。



如果你喜欢这篇文章,可以考虑订阅我的邮件更新,或者[在 Hacker News 上分享](news.ycombinator.com/submitlink?... not your codebase)。以下是一篇拥有相同标签的相关文章预览。

给处于动荡时期工程师的实用建议

自 2023 年以来,利率的上升导致软件公司对待工程师的方式发生了翻天覆地的变化。现在的软件工程师比过去十年里的任何时候都难当。科技界的好日子结束了(至少目前是这样)。这不仅仅是就业市场 艰难,对于已经在职的软件工程师来说,大环境同样艰难。我们能做些什么呢?
继续阅读...


Footnotes

  1. 这就好比一个清洁工找了个安静的角落打盹而不是去打扫卫生------完全可以理解,但这确实说明他们不是一个合格的清洁工

  2. 公司不会无缘无故在会议上花几千万美元。他们这样做是因为能获得比成本更大的财务回报。(退一步讲,即使他们错了,这也是他们要做的决定 。)

  3. 关于这一点的经典著作是罗伯特·杰考尔(Robert Jackall)的《道德迷宫》(Moral Mazes),这本书深刻影响了我对组织的看法。总有一天我会为它写一篇正式的读书报告。

相关推荐
jonjia2 小时前
裁员时代的战术性工作指南
程序员
jonjia2 小时前
科技行业的好日子结束了
程序员
jonjia2 小时前
大型科技公司的项目是如何失败的?
程序员
jonjia2 小时前
狂刷 JIRA 工单只是个小把戏,并非提升影响力的正道
程序员
jonjia2 小时前
内部人失忆症
程序员
jonjia2 小时前
参与办公室政治是你的责任
程序员
jonjia2 小时前
搞砸了怎么办
程序员
jonjia2 小时前
必须懂得如何“开车”
程序员
jonjia2 小时前
如何向领导层提出反对意见
程序员