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

大数据文摘出品

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

几年前,Yelp的团队开发了Undebt——一个旨在自动化实现大量代码重构的项目,但至今没有见它有过后续的维护和更新,也没见它被成功使用。

那么,你所在的团队是如何发现和鼓励会删代码的程序员的呢?为开源项目删代码的程序员是否也可以通过同样的方式得到鼓励和回报呢?

至少目前来看,人们所关心的排行榜或许是基于不完美甚至是没有价值的指标——那些致力于在茫茫代码的海洋中消除一个个技术债的“清道夫型”程序员应该受到更大的重视和嘉奖。

相关报道:

https://www.techrepublic.com/article/in-praise-of-developers-who-delete-code/

Image placeholder
pjk61693107
未设置
  58人点赞

没有讨论,发表一下自己的看法吧

推荐文章
这波技术社区的程序员,技术视野有点堪忧!

前一段时间写了一篇文章《凌晨1点突发致命生产事故,人工多线程来破局!》,只是一篇生产事故的记实文章,没想到在圈内流传甚广,其中有程序员对其中的细节有点疑惑,刚好国庆可以和大家再进一步探讨一下。现在技术

《双子杀手》票房扑街又怎样?李安开创的“AI易容术”,甩那些磨皮换脸大片几条街

大数据文摘出品作者:刘俊寰上映快小半个月了,李安导演的《双子杀手》大家都看了吗?这是李安继《少年派的奇幻漂流》(2012)和《比利林恩的中场战事》(2016)之后,再次推出的好莱坞电影工业的革新之作。

最受欢迎的编程语言排行:Python与Java谁更受欢迎?

Python在全球开发人员中的受欢迎程度急剧上升,专注于研究开发人员的SlashData最近公布了实际使用该语言的开发人员数量。根据SlashData的数据,目前世界上有820万使用Python编写代

技术总监到底要不要写代码?

这是一个非常敏感的话题,每次谈论到技术总监要不要写代码的时候,总会引起一片争论。有的程序员说技术总监如果不写代码怎么能领导好技术团队;有的说技术总监还需要写代码?如果技术总监都需要写代码的话,那技术团

看得见的“岛”与看不见的“智慧”

俗话说:“耳听为虚,眼见为实”。都说华为把福州海峡国际会展中心所在的小岛,打造成了“智慧岛”。您亲眼所见了吗?  我亲眼所见了!并且有图有真相!我来带您全方位的去逛一逛!  您看得见场馆大门的闸机,但

万兆的“强项”和千兆的“软肋”

“5G+Wi-Fi6”珠联璧合,重新定义了无线网络;“VR/AR+4K”持续发展,催生了更多的高带宽应用。技术革命的浪潮已经开启,翻倍的传输速率、海量的数据接入和复杂的网络管理,给园区网络带来了前所未

“听完你的评价,我们决定拒绝这位明天入职的技术经理”

每个工作日的中午,只要天气晴朗,我都会在午餐后去附近的公园溜达溜达,一来可以帮助肠胃消化,二来则有助于我静心思考工作总结,从而增强写作主题构思的能力。所以,我比较厌烦在这个时间段里聊工作。上周的某天,

大神讲解微服务治理的技术演进和架构实践

摘要:随着业务的发展,规模扩大,服务越来越多,需要协调线上运行的各个服务,保障服务的SLA;基于服务调用的性能KPI数据进行容量管理,合理分配各服务的资源占用;对故障业务做服务降级、流量控制、流量迁移

云徙助力良品铺子「双11」:成为5.6亿背后的技术力量

每逢双十一时节,品牌的种草之心被推到顶峰。在密集的信息交汇中,消费者希望获取有价值的消费决策,品牌则希望被广泛看见、被坚定选择,此时,格外凸显出中台+精准营销的重要意义。双11购物狂欢节”已走过11个

一个被 CEO 逼疯的技术负责人的检讨书

作者:fingerQin来源:https://www.phpjieshuo.com/archives/139/以下是一封来自被CEO逼疯的技术负责人的检讨书。想火!!!自任开发部负责人一职以来,开发部

程序员朋友们,请答应我?别再去东南亚写代码了好么?

来源公众号丨半佛仙人(ID:banfoSB)“真的救我一条‘狗命’,可以吗,谢谢您了,我真的撑不住了。”5月3日,在朋友圈看到这条信息,附着一张长图,定位:泰国亚兰,PrincessCrownCasi

从P4到P9, 在马云家写代码到双11前端PM

导读:今年的双11已经是阿里资深前端技术专家舒文来阿里的第11年,从应届生到双11前端PM,他一路升级打怪,实现了岗位上从P4到P9的晋升。这第11届双11顺利结束之际,他把在阿里这些年的成长经历做一

欧洲最大笔融资,骗过软银!印度AI公司被曝造假,自动开发背后是真人码农

大数据文摘编辑部出品AI融资有泡沫,这大家都知道。但是,这泡沫能有多大呢?一家名叫Engineer.ai的明星AI初创公司刚刚刷新了这一纪录。这家以ai作为域名的公司由两名印度创始人创建,号称可以通过

AWS vs K8s 是新时代的 Windows vs Linux?

作者:IanMiell是开源程序员、演讲师、作家和博客写手以前……如果你与我一样,年过四十,又在IT行业工作,恐怕还记得每个人使用Windows,一小群但越来越多的人在业余时间埋头编译Linux的年代

企业出了IT事故,谁该来背锅?

当企业内部出现IT事故时,舆论质疑、客户追责甚至诉讼等问题都会接踵而至,这些问题会令企业蒙受巨大的损失。那么,谁应该为这样的失误负责呢?有些企业由于未能及时更新系统补丁而导致IT事故,企业的声誉和估值

谁创建谁销毁,谁分配谁释放——JNI调用时的内存管理

在QQ音乐AndroidTV端的Cocos版本的开发过程中,我们希望尽量多的复用现有的业务逻辑,避免重复制造轮子。因此,我们使用了大量的JNI调用,来实现Java层和Native层(主要是C++)的代

谷歌两位创始人双双“退位”,皮猜升职Alphabet帝国CEO独揽大权

大数据文摘出品两位创始人双双“退位”,Alphabet刚刚赢来了新阶段。美国时间周二12月3日下午,谷歌联合创始人拉里·佩奇(LarryPage)和谢尔盖·布林(SergeyBrin)宣布辞职,从即日

不论“云唯一”还是“无云”,都很糟糕

单纯说技术的好坏是不明智的,新技术与产业的融合也是一步一步慢慢来,不能走极端。DavidS.Linthicum是德勤咨询公司的首席云战略官,也是国际公认的行业专家和思想领袖。在近日的一篇文章中指出云战

打造“数字化基石”,深信服在不断开疆沃土!

2019年深信服创新大会,已圆满结束,但也是一个全新的开始!深信服将以数字化转型为契机,打造更敏捷、更开放、更智能的新IT基础架构能力。为了具备这样的能力,深信服一直在研发和市场方面做大量投入。关于这

马云入选“全球十大思想者”,排名在贝索斯之前

大数据文摘出品消息来源:央视新闻、澎湃新闻、中国日报网1月21日,据央视新闻报道,美国《外交政策》杂志评选出了全球十大思想者榜单,阿里巴巴创始人马云成为唯一获选的中国企业家,排名第三,位列企业家之首。

NVIDIA再放“大招”,拓宽高性能计算边界

11月19日,在丹佛2019全球超级计算大会(SC19)上,NVIDIA创始人兼首席执行官黄仁勋进行了主题演讲,并宣布了NVIDIA在高性能计算领域的最新动态与成果。这些成果表明,NVIDIA正在将自

被美列入出口“黑名单”,华为海思凌晨发信:所有备胎芯片全转正,要科技自立

大数据文摘编辑部出品本周三,美国白宫和美国商务部双双采取行动。特朗普签署针对华为的行政令。美国商务部将华为列入管制“实体清单”,从事实上限制华为对美出售和从美采购。这些行动将禁止华为向美国市场出售技术

H3C S1000V“打了个响指”,瞬间消灭一半的网络难题

再厉害的反派都会碰到更牛逼的英雄,然后被“抹脖子”。再轻盈的“响指”,也都可以引起宇宙的轩然大波,或令其归于宁静。不仅是漫威世界,纵观企业网络,网络阻塞、高频率丢包、网络安全等问题层出不穷,那么对于中

面向回家编程!GitHub标星两万的”Python抢票教程”,我们先帮你跑了一遍

盼望着,盼望着,春节的脚步近了,然而,每年到这个时候,最难的,莫过于一张回家的火车票。据悉,今年春运期间,全国铁路发送旅客人次同比将增长8.0%。达到4.4亿人次,2020年铁路春运自1月10日开始,

分享 6 个 Go 处理字符串的技巧

如果你从Ruby或者Python转型到Go,将会有很多语言差异需要学习,其中很多问题都是围绕处理string类型。下面是一些字符串的技巧,这些技巧解决了我在使用Golang的最初几周中遇到的问题。