? 开源社区的技术债:写代码的“码农”VS 删代码的“清道夫”,谁更该被嘉奖?_CQITer_重庆IT人之家 亚博APP入口,亚博vip体育官网,yabo88亚博app ?

开源社区的技术债:写代码的“码农”VS 删代码的“清道夫”,谁更该被嘉奖?

开源社区的技术债:写代码的“码农”VS 删代码的“清道夫”,谁更该被嘉奖?

大数据文摘出品

编译:楚阳、橡树、钱天培

对于开源项目来讲,写新代码的贡献者不一定是好程序员,但不会删代码程序员一定不是合格的程序员——因为“删代码”才是使开源软件项目的代码简洁高效的关键所在。

MongoDB的程序员Dj Walker-Morgan就在推特中这样说道:“依我看,删代码才是偿还技术债的绝杀技能。”

对于软件工程师来讲,只有其本人对整个项目了然于心才能知道哪行代码是需要冗余的,删除这些代码才能确保程序在保证功能完整性的情况下高效运作,真正达到去其糟粕的目的。

另一位资深程序员Char亚博APP入口yMajors曾发推文表示:“在曾与我共事过的资深程序员中,最优秀的那批人一直在想尽办法避免在项目中添写新代码。”

那么,对于这些删除代码或以最小的代码量完成更多功能的软件工程师,我们是否有合适的奖励方法呢?

明确“技术债”的概念

前文提到,删除代码是偿还“技术债”的必杀技,那么到底什么是“技术债”呢?

在软件开发过程中,如果程序员为赶在最后期限之前交差而采用了一种较为简单但未达到最佳标准的解决方案,那么项目就会背上技术债,潜在的风险会像利息一样使债越积越大。

Dormain Drew亚博APP入口z曾发表过一个非常有趣的观点:“所有写下的代码都是技术债。”此话怎讲呢?

开源社区的技术债:写代码的“码农”VS 删代码的“清道夫”,谁更该被嘉奖?

由于“马后炮效应”的存在,人们的后见之明使得分辨一段代码是正确的决策还是垃圾的产出变得十分容易,但在实际的开发过程中,程序员可能没办法找到一个更好的解决方案,甚至可以说,目前的代码在当时来看可能就是最佳选择。

但我们要明确,这些时下的“最佳选择”并不意味着要被长久保留。不管你喜欢与否,“技术债”都会越积越重。

来自ThoughtWorks的MatrinFowler便对处理技术债提出了以下建议:

通常解决金融债务的最佳途径就是一点点地偿还本金,‘技术债’亦是如此。在搭建第一个功能时,我就会开始花额外的时间删掉一些冗余代码。这就好比减少了技术债未来可能产生的利息,虽然会花费一些额外的时间,但这让最终的技术债变得可承担。像这样逐步改进代码,那些经常被我们经常修改的代码块便会随着时间的推移变得越来越精炼,而这些代码块也恰好是代码库中最需要定期清理的部分。 ?

程序员SarahMei将技术债称为“混乱体”,一个杂乱的房间。正因如此,尝试用微服务架构(MSA)来解决技术债的想法是不切实际的。

她认为,这样做会使得项目最终只剩一个饱和微小的空间和一堆杂乱无序的存储单元。同样的,你无法在这样一个狭小、拥挤又混乱的房间中找到你想要的东西。

因此,降低技术债的理想方案是从那些拥有最多所谓贡献量的代码入手。于是,眼下要解决的问题变为——如何通过合适的方法标定那些被删除的代码?

计算贡献量的另一种方法

开源社区的技术债:写代码的“码农”VS 删代码的“清道夫”,谁更该被嘉奖?

如果你去看Kubernetes或其他项目的贡献排行榜,你很容易找到那些提交开源代码的程序员,但排名指标的下拉菜单中并没有出现与“删除代码行数”相关的计量。依照前文Majors对优秀的资深软件工程师的定义,尽管记录那些提交新代码的人是有意义的,但这些新代码能为开源项目带来多大价值就不太好说了。

相较于统计代码量,对代码效率的计量是一件并不那么客观的事情,尽管这一指标十分重要,但实际上很难对其下一个准确统一的操作性定义。而正因为如此,我们反倒可以重新体会到“删代码”的艺术魅力。

曾任职MongoDB的HenrikIngo告诉作者:“在MongoDB工作的3年里,我删掉的代码比我写的要多。”他还自嘲道:“但遗憾的是,这注定是以场失败的战役——这只会激发更多的同事编写更多新的代码进去。”

在这样的评判标准下,优秀的程序员可能不会在排行榜中名列前茅,因为他们的贡献在于巧妙地删除冗余代码,就像Henrik,他们删除的代码可能比写的新代码还要多。

相关推荐
新闻聚焦
猜你喜欢
热门推荐
  • 微软AI面试题有多难?这里有一份样卷

      究竟什么样的AI人才能被微软这样的巨头聘用呢?今天,文摘君就淘来了几道微软AI 面试题,同时给出了最基本的解答......

    06-25????来源:澎湃新闻网

    分享
  • 腾讯吐个槽“讲产品故事拿大奖”活动:

      每一个产品故事都值得被聆听, 每一位奋斗者的历程都值得被肯定! 今天,「吐个槽」X「腾讯课堂产品学院」发起讲产品故......

    09-02????来源:未知

    分享
  • 全球最聪明的大脑怎么看AI?他们预测了

      2017年AI领域取得了诸多成果。2018年AI又将何去何从?以下是来自世界顶级研究人员和行业领军人物对2018年AI领域发展作......

    02-20????来源:虎嗅网

    分享
  • 2017JavaScript框架战报 - React分战场

      我们来看看与React有关的软件包的生态系统。当Facebook构建React时,就有许多来自开源社区的第三方软件包。为提供完......

    02-27????来源:湖北新闻网

    分享
  • 小白学数据:教你用Python实现简单监督学

      监督学习作为运用最广泛的机器学习方法,一直以来都是从数据挖掘信息的重要手段。即便是在无监督学习兴起的近......

    03-05????来源:今日头条

    分享
  • 现代编程语言Swift、Kotlin等十大有趣功能

      最近学习了一些现代编程语言,比如Reason,Swift,Kotlin和Dart。这些编程语言提供了许多新功能,本文主要分享了我认......

    04-29????来源:祁东新闻网

    分享
  • 领域场景分析的6W模型

      组成场景的要素常常被称之为6W模型,即描写场景的过程必须包含Who,What,Why,Where,When与hoW这六个要素。......

    04-30????来源:砍柴网

    分享
  • 开源应用服务器WildFly 12发新季度交付模式

      WildFly 12 Final版本现在已经可以下载了,WildFly是一款灵活的开源应用服务器,支持开发人员构建轻量级应用程序。支持......

    05-10????来源:青岛新闻网

    分享
  • 基于Spring Cloud的微服务落地

      微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务。但如果要将微服务架构运用到生产项目上,......

    06-04????来源:广西新闻网

    分享
  • 为什么阿里工程师纷纷在内网晒代码?

      前阵子,在阿里一个小黑屋里,5名对代码有着极致追求的工程师参与阿里代码领域最高荣誉“多隆奖”的最终角逐。......

    06-08????来源:四川新闻网

    分享
返回列表
Ctrl+D?将本页面保存为书签,全面了解最新资讯,方便快捷。