自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

開源社區(qū)的技術(shù)債:寫代碼的“碼農(nóng)”VS 刪代碼的“清道夫”,誰更該被嘉獎(jiǎng)?

企業(yè)動(dòng)態(tài)
對于開源項(xiàng)目來講,寫新代碼的貢獻(xiàn)者不一定是好程序員,但不會刪代碼的程序員一定不是合格的程序員——因?yàn)椤皠h代碼”才是使開源軟件項(xiàng)目的代碼簡潔高效的關(guān)鍵所在。

[[276171]]

大數(shù)據(jù)文摘出品

編譯:楚陽、橡樹、錢天培

對于開源項(xiàng)目來講,寫新代碼的貢獻(xiàn)者不一定是好程序員,但不會刪代碼的程序員一定不是合格的程序員——因?yàn)?ldquo;刪代碼”才是使開源軟件項(xiàng)目的代碼簡潔高效的關(guān)鍵所在。

MongoDB的程序員Dj Walker-Morgan就在推特中這樣說道:“依我看,刪代碼才是償還技術(shù)債的絕殺技能。”

對于軟件工程師來講,只有其本人對整個(gè)項(xiàng)目了然于心才能知道哪行代碼是需要冗余的,刪除這些代碼才能確保程序在保證功能完整性的情況下高效運(yùn)作,真正達(dá)到去其糟粕的目的。

另一位資深程序員CharityMajors曾發(fā)推文表示:“在曾與我共事過的資深程序員中,最優(yōu)秀的那批人一直在想盡辦法避免在項(xiàng)目中添寫新代碼。”

那么,對于這些刪除代碼或以最小的代碼量完成更多功能的軟件工程師,我們是否有合適的獎(jiǎng)勵(lì)方法呢?

明確“技術(shù)債”的概念

前文提到,刪除代碼是償還“技術(shù)債”的必殺技,那么到底什么是“技術(shù)債”呢?

在軟件開發(fā)過程中,如果程序員為趕在最后期限之前交差而采用了一種較為簡單但未達(dá)到最佳標(biāo)準(zhǔn)的解決方案,那么項(xiàng)目就會背上技術(shù)債,潛在的風(fēng)險(xiǎn)會像利息一樣使債越積越大。

Dormain Drewitz曾發(fā)表過一個(gè)非常有趣的觀點(diǎn):“所有寫下的代碼都是技術(shù)債。”此話怎講呢?

[[276172]]

由于“馬后炮效應(yīng)”的存在,人們的后見之明使得分辨一段代碼是正確的決策還是垃圾的產(chǎn)出變得十分容易,但在實(shí)際的開發(fā)過程中,程序員可能沒辦法找到一個(gè)更好的解決方案,甚至可以說,目前的代碼在當(dāng)時(shí)來看可能就是最佳選擇。

但我們要明確,這些時(shí)下的“最佳選擇”并不意味著要被長久保留。不管你喜歡與否,“技術(shù)債”都會越積越重。

來自ThoughtWorks的MatrinFowler便對處理技術(shù)債提出了以下建議:

通常解決金融債務(wù)的最佳途徑就是一點(diǎn)點(diǎn)地償還本金,‘技術(shù)債’亦是如此。在搭建第一個(gè)功能時(shí),我就會開始花額外的時(shí)間刪掉一些冗余代碼。這就好比減少了技術(shù)債未來可能產(chǎn)生的利息,雖然會花費(fèi)一些額外的時(shí)間,但這讓最終的技術(shù)債變得可承擔(dān)。像這樣逐步改進(jìn)代碼,那些經(jīng)常被我們經(jīng)常修改的代碼塊便會隨著時(shí)間的推移變得越來越精煉,而這些代碼塊也恰好是代碼庫中最需要定期清理的部分。

程序員SarahMei將技術(shù)債稱為“混亂體”,一個(gè)雜亂的房間。正因如此,嘗試用微服務(wù)架構(gòu)(MSA)來解決技術(shù)債的想法是不切實(shí)際的。

她認(rèn)為,這樣做會使得項(xiàng)目最終只剩一個(gè)飽和微小的空間和一堆雜亂無序的存儲單元。同樣的,你無法在這樣一個(gè)狹小、擁擠又混亂的房間中找到你想要的東西。

因此,降低技術(shù)債的理想方案是從那些擁有最多所謂貢獻(xiàn)量的代碼入手。于是,眼下要解決的問題變?yōu)?mdash;—如何通過合適的方法標(biāo)定那些被刪除的代碼?

計(jì)算貢獻(xiàn)量的另一種方法

如果你去看Kubernetes或其他項(xiàng)目的貢獻(xiàn)排行榜,你很容易找到那些提交開源代碼的程序員,但排名指標(biāo)的下拉菜單中并沒有出現(xiàn)與“刪除代碼行數(shù)”相關(guān)的計(jì)量。依照前文Majors對優(yōu)秀的資深軟件工程師的定義,盡管記錄那些提交新代碼的人是有意義的,但這些新代碼能為開源項(xiàng)目帶來多大價(jià)值就不太好說了。

相較于統(tǒng)計(jì)代碼量,對代碼效率的計(jì)量是一件并不那么客觀的事情,盡管這一指標(biāo)十分重要,但實(shí)際上很難對其下一個(gè)準(zhǔn)確統(tǒng)一的操作性定義。而正因?yàn)槿绱耍覀兎吹箍梢灾匦麦w會到“刪代碼”的藝術(shù)魅力。

曾任職MongoDB的HenrikIngo告訴作者:“在MongoDB工作的3年里,我刪掉的代碼比我寫的要多。”他還自嘲道:“但遺憾的是,這注定是以場失敗的戰(zhàn)役——這只會激發(fā)更多的同事編寫更多新的代碼進(jìn)去。”

在這樣的評判標(biāo)準(zhǔn)下,優(yōu)秀的程序員可能不會在排行榜中名列前茅,因?yàn)樗麄兊呢暙I(xiàn)在于巧妙地刪除冗余代碼,就像Henrik,他們刪除的代碼可能比寫的新代碼還要多。

幾年前,Yelp的團(tuán)隊(duì)開發(fā)了Undebt——一個(gè)旨在自動(dòng)化實(shí)現(xiàn)大量代碼重構(gòu)的項(xiàng)目,但至今沒有見它有過后續(xù)的維護(hù)和更新,也沒見它被成功使用。

那么,你所在的團(tuán)隊(duì)是如何發(fā)現(xiàn)和鼓勵(lì)會刪代碼的程序員的呢?為開源項(xiàng)目刪代碼的程序員是否也可以通過同樣的方式得到鼓勵(lì)和回報(bào)呢?

至少目前來看,人們所關(guān)心的排行榜或許是基于不完美甚至是沒有價(jià)值的指標(biāo)——那些致力于在茫茫代碼的海洋中消除一個(gè)個(gè)技術(shù)債的“清道夫型”程序員應(yīng)該受到更大的重視和嘉獎(jiǎng)。

相關(guān)報(bào)道:

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

【本文是51CTO專欄機(jī)構(gòu)大數(shù)據(jù)文摘的原創(chuàng)譯文,微信公眾號“大數(shù)據(jù)文摘( id: BigDataDigest)”】

     大數(shù)據(jù)文摘二維碼

 

戳這里,看該作者更多好文 

 

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2021-08-02 13:20:31

代碼Python文件

2020-10-23 09:07:17

開源代碼開發(fā)

2020-03-12 07:42:49

代碼程序員

2020-05-26 21:09:16

碼農(nóng)插件開源

2015-05-12 10:15:15

程序員

2014-05-21 16:11:53

2015-09-25 11:35:56

2013-09-16 10:03:06

代碼碼農(nóng)

2019-11-15 14:59:17

代碼碼農(nóng)程序員

2015-04-21 12:48:37

老碼農(nóng)技術(shù)理想

2017-10-26 09:34:23

谷歌AI機(jī)器學(xué)習(xí)

2009-12-17 14:09:03

VS2005代碼

2012-07-03 09:59:03

程序員

2010-08-23 16:28:24

開源社區(qū)DebianUbuntu

2017-06-07 14:47:39

糾刪碼存儲系統(tǒng)

2018-06-14 08:56:46

碼農(nóng)科技大數(shù)據(jù)

2020-10-09 10:20:39

碼農(nóng)代碼OpenAI

2015-01-12 10:06:02

在線客服

2018-04-08 10:41:31

2018-03-30 15:19:24

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號