亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

技術中的知識債務問題

几周前,我在 Reddit 上看到一个帖子,一位开发者试图解决我们在技术社区中许多人也面临的问题:在大型复杂的代码库中管理代码所有权。

reddit帖子

拥有超过100名开发者的他们,面对庞大的代码库,正在寻找一种自动化创建CODEOWNERS文件的方法。他们的希望是能够根据谁曾对每个文件进行过修改,自动分配代码所有权。

并不是所有人都认同这个想法,有人指出这可能会导致灾难。你有理由保持谨慎,但我们不应该忽视背后的需求。原贴作者的问题指出了技术行业中一个真实的问题:随着代码库和团队的增长,我们如何管理和分配知识与责任?

你对Kubernetes的感觉如何

如果你想看到一个复杂的代码库,Kubernetes 是一个很好的例子,它有来自数千名开发者和数百个组织的贡献。他们是如何管理它的呢?他们使用了一套经过多年测试和完善的 OWNERS 文件系统。

Kubernetes的方法是创建一个专业知识地图,促进代码审查,并确保更改由_正确_的人进行审查。该系统认识到,在这样一个规模的项目中,没有人可以知道所有的事情。解决方案是创建一个共享责任和持续学习的文化。

这里有个问题:适用于Kubernetes的方法可能并不适用于每个团队。这没关系。关键是理解系统背后的原则,并将其适应到你的团队中。

当你实现类似自动化CODEOWNERS生成的功能时,需要注意以下几点:

  • 拥抱共享所有权:目标不是在代码中划分地盘,而是识别哪些人在不同的领域拥有最深的知识,以便他们可以引导和支持其他人。
  • 保持动态性:随着团队和代码库的增长,您的CODEOWNERS文件也应随之演变。
  • 将其作为指南而非规则使用:代码所有权不应成为贡献的障碍。它是为了促进知识共享,而不是设置门槛。

确保代码库的每个部分都有专人负责维护和审查,有助于有效管理因知识流失而产生的隐性债务。

知识流失的真正成本

让我们来看看知识债务给我们带来了什么成本:

  • 时间:新团队成员花费数周时间试图理解系统,而这些系统本可以在数小时内由合适的人解释清楚。
  • 效率:当你花时间弄清楚现有代码的作用,或者不明白原开发人员为什么做出某些更改时,你就没有时间去做出有意义的进展。
  • 士气:没有什么比感到迷茫更快地打击积极性了。
  • 低效和冗余:你可能会花几天时间解决一个已经被团队中其他人解决的问题。这就像重新发明轮子,但轮子被埋在你的Git历史中,你甚至都不知道它的存在。这不仅浪费时间,还错过了合作和知识共享的机会。
  • 维护挑战和知识孤岛:随着知识差距的扩大,维护系统较旧部分的成本和复杂性增加。这会导致知识孤岛,只有少数人理解关键系统,从而形成瓶颈并降低整个团队的能力。

每当开发人员编写一行没有明确所有权的代码,每当关键团队成员离开而没有转移他们的知识时,债务就会累积,文化也会逐渐削弱。随着时间的推移,这种债务不断累积,使得每个新功能的成本更高,每个 bug 更耗时才能修复,每个团队互动也变得不那么有效。知识流失的债务往往是看不见的,我们往往只有在危机中才会意识到它的存在。

当债主来催债时

最终,每一份债务都会到期。在技术领域,这通常会在关键时刻出现:

  • 由于对某个不熟悉的组件进行更改而导致的生产故障
  • 由于添加一个功能花费了数月而不是数周的时间,错失了市场机会
  • 最后一位了解核心系统的团队成员离职,导致项目实际上处于“水下”状态

这些时刻,公司往往意识到知识债务的真实成本。但到那时,通常已经太晚,无法轻易解决这个问题了。

输入 CODEOWNERS 文件:您的知识地图

这就是像CODEOWNERS文件这样的工具发挥作用的地方。可以将其视为代码库中的专业知识地图。但这不仅仅是一张地图——而是一份随着团队发展而不断演化的活生生的文档。

在 OpenSauced,我们通过我们的pizza-cli codeowners 命令将这一理念提升到了一个新的水平。这不仅仅是为了给目录分配任意的所有者。此工具会识别出谁对代码库的每一部分拥有最相关和最新的专业知识。

它与众不同之处在于其粒度和平衡。为每个文件或目录分配多达三个“所有者”。结合我们的pizza GitHub Action,你将拥有一个能够自动更新你的专业知识地图的系统。你可以通过Introducing the Pizza CLI了解更多如何开始使用的方法。
使用pizza generate codeowners命令生成CODEOWNERS文件,会自动创建或更新CODEOWNERS文件,将文件映射到相应的所有者。

不仅仅是管理债务,codeowners 命令有助于建立一种责任感和专业性的文化。它使代码所有权变得可见且可操作,鼓励开发人员为其负责的领域感到自豪,并寻求分享知识的机会。

最终思考

快速取胜和功能交付的名义下积累知识债务并不难。但就像任何形式的债务一样,忽视它只会让问题变得更糟,不仅影响你的代码库,还会影响你整个工程文化。

通过认识到知识债务所带来的严重威胁,并利用诸如pizza cli这样的工具来管理它,团队可以确保他们建立在一个坚实的基础上。他们不仅仅是在编写代码,更是在培养一种所有权、专长和协作学习的文化。

记住,你写的每一行代码都是对你自己和团队的一个承诺。通过管理你的知识债务并建立知识共享的文化,确保你能兑现这个承诺。codeowners命令不仅仅是一个工具,它更是迈向更可持续和高效开发过程以及更协作的工程文化的重要一步。

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消