0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

10倍效率程序員是否真的存在

工程師人生 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:工程師吳畏 ? 2018-10-30 11:50 ? 次閱讀

編程神話中,一個(gè) 10 倍效率的程序員可以完成一個(gè)普通程序員 10 倍的工作量。「普通程序員」就是指,善于完成工作但沒有 10 倍效率程序員那神奇能力的人。實(shí)際上,為了更好地描述普通程序員,我們可以這樣認(rèn)為,就是在專業(yè)程序員之中,代表那些可以輸出平均編程成果的程序員。

是否存在 10 倍效率的程序員,在這件事上編程社區(qū)內(nèi)是嚴(yán)重的兩極分化:有人說(shuō)根本沒有這樣的人,也有人說(shuō)事實(shí)上不僅存在這種人,如果你知道到哪里去尋找,甚至還存在 100 倍效率的程序員。

如果你認(rèn)為編程是一個(gè)“線性”的學(xué)科,那存在 10 倍效率的程序員這件事看起來(lái)幾乎是不可能的。一個(gè)跑步的人怎么可能跑得比另一跑步的人快10倍?在相同的時(shí)間內(nèi),一個(gè)建筑工人怎么可能建造東西的速度比另一個(gè)建筑工人快 10 倍?然而編程是一門設(shè)計(jì)學(xué)科,并以一種非常特殊的方式。即使程序員不參與實(shí)際的程序的架構(gòu)設(shè)計(jì),實(shí)施它的行為仍然需要一個(gè)實(shí)施策略上的子設(shè)計(jì)。

因此,如果一個(gè)程序的設(shè)計(jì)和實(shí)現(xiàn)不是線性能力,像經(jīng)驗(yàn)、編碼能力、知識(shí)和識(shí)別等無(wú)用之物,在我看來(lái),不僅僅是線性的優(yōu)勢(shì),當(dāng)這些事物作用在一起時(shí),它們的效果就遠(yuǎn)不是一加一這么簡(jiǎn)單了。當(dāng)然,當(dāng)程序員可以同時(shí)處理程序的設(shè)計(jì)和實(shí)現(xiàn)時(shí),這種現(xiàn)象發(fā)生得更多。如果越以“目標(biāo)導(dǎo)向”為任務(wù),那么擁有10倍效率潛力的程序員為了輕松地達(dá)到目標(biāo)就越可以開拓她/他的能力。

當(dāng)手頭有非常剛性的任務(wù)時(shí),這個(gè)任務(wù)有具體的指南:必須使用哪些工具和如何實(shí)現(xiàn)事物。那么 10 倍效率的程序員在更短的時(shí)間內(nèi)執(zhí)行大量工作的能力就被削弱了:他仍然可以開拓“局部”上設(shè)計(jì)的潛能,但卻不能以更意義深遠(yuǎn)的方式去實(shí)現(xiàn)目標(biāo),這也許包括,可能、甚至完全從項(xiàng)目中刪除部分規(guī)范,即便需要達(dá)到的目標(biāo)幾乎看起來(lái)相同但需要付出的努力程度由于一個(gè)大因素被減少了。

在作為程序員工作的二十年中,我觀察著與我一起工作的其他由我指導(dǎo)的程序員同事,我下發(fā)指定的目標(biāo),他們則給 Redis 和其他項(xiàng)目提供補(bǔ)丁。期間,很多人告訴我,他們相信我是一個(gè)非常高效的程序員??紤]到我根本不是一個(gè)工作狂,我也把自己當(dāng)作快速編碼的一類人。

以下這些品質(zhì),我認(rèn)為將引發(fā)程序員生產(chǎn)力高低截然不同:

純粹的編程能力:完成子任務(wù)

程序員最顯著的限制或優(yōu)勢(shì)之一就是處理實(shí)際執(zhí)行程序部分的一個(gè)子任務(wù):一個(gè)函數(shù),一個(gè)算法等。令人驚訝的是,根據(jù)我的經(jīng)驗(yàn),非常有效地使用基本的命令式編程結(jié)構(gòu)來(lái)實(shí)現(xiàn)某些功能的能力,并不像人們想象的那么普遍。在一個(gè)團(tuán)隊(duì)中,有時(shí)我觀察到非常無(wú)能的程序員,甚至不知道一個(gè)簡(jiǎn)單的排序算法,和在理論上非常有能力、但實(shí)施解決方案的實(shí)踐非常不足的剛畢業(yè)程序員相比,他們的工作往往事倍功半。

經(jīng)驗(yàn):模式匹配

通過(guò)使用經(jīng)驗(yàn):我的意思是一系列已經(jīng)探索完成的用于大量重復(fù)的任務(wù)解決方案。有經(jīng)驗(yàn)的程序員最終知道如何處理各種子任務(wù)。這既避免了很多的設(shè)計(jì)工作,也是針對(duì)設(shè)計(jì)錯(cuò)誤的非常強(qiáng)大的武器,但反過(guò)來(lái)卻又是簡(jiǎn)潔的最大敵人之一。

專注:實(shí)際時(shí)間 VS 虛假時(shí)間

如果不考慮時(shí)間質(zhì)量,那么評(píng)價(jià)花費(fèi)多少時(shí)間來(lái)編寫代碼是不恰當(dāng)?shù)?。?nèi)部和外部因素都可能導(dǎo)致專注度下降。內(nèi)部因素是拖延,對(duì)手邊的項(xiàng)目缺乏興趣(你不能做好你不喜歡的事情),缺乏運(yùn)動(dòng)/福祉,不好的睡眠質(zhì)量或者睡眠不足。外部因素是頻繁的會(huì)議,沒有實(shí)際辦公室的工作環(huán)境,同事經(jīng)常打擾等等。很自然的是,嘗試改善專注度和減少中斷對(duì)編程生產(chǎn)率將產(chǎn)生非邊際影響。有時(shí)為了變得專注,需要采取極端措施。例如,我只會(huì)偶爾閱讀電子郵件,并且不回復(fù)他們中的大多數(shù)。

設(shè)計(jì)上的犧牲:刪減 5%,獲得 90%

當(dāng)不愿意認(rèn)識(shí)到一個(gè)項(xiàng)目的非基本目標(biāo)占據(jù)了很大的設(shè)計(jì)復(fù)雜性,或者正在使另一個(gè)更重要的目標(biāo)難以實(shí)現(xiàn)時(shí),往往會(huì)產(chǎn)生復(fù)雜性,因?yàn)樵诨咎卣骱头腔咎卣髦g有設(shè)計(jì)張力。設(shè)計(jì)師認(rèn)識(shí)到設(shè)計(jì)中所有不容易實(shí)現(xiàn)的部分是非常重要的,即在努力和優(yōu)勢(shì)之間沒有絕對(duì)的比例。為了最大限度地實(shí)現(xiàn)產(chǎn)出而執(zhí)行的一個(gè)項(xiàng)目,將完全地集中在可以在合理的時(shí)間內(nèi)實(shí)現(xiàn)的方面。例如,當(dāng)設(shè)計(jì)Disque(一個(gè)消息的代理工具)時(shí),在某些時(shí)候,我意識(shí)到通過(guò)為消息提供性能最好的順序,項(xiàng)目的所有其他方面都可以大大提升:可用性、查詢語(yǔ)言和客戶端交互、簡(jiǎn)潔性和性能 。

簡(jiǎn)潔性

設(shè)計(jì)時(shí)保持簡(jiǎn)潔性,這個(gè)明顯的觀點(diǎn)意味著一切。為了理解什么是簡(jiǎn)潔性,核查復(fù)雜性大多數(shù)時(shí)候是如何產(chǎn)生的是值得做的。我認(rèn)為復(fù)雜性的兩個(gè)主要驅(qū)動(dòng)因素:不愿意進(jìn)行設(shè)計(jì)上的犧牲以及在設(shè)計(jì)活動(dòng)中累積的錯(cuò)誤。

如果在設(shè)計(jì)過(guò)程中,每次都追求錯(cuò)誤的路徑,我們將離最優(yōu)解決方案越來(lái)越遠(yuǎn)。一個(gè)初始設(shè)計(jì)錯(cuò)誤,在不好的方面,不會(huì)導(dǎo)致該系統(tǒng)重新設(shè)計(jì)。為了應(yīng)對(duì)初始設(shè)計(jì)錯(cuò)誤,卻會(huì)導(dǎo)致另一個(gè)復(fù)雜的解決方案被設(shè)計(jì)。因此,項(xiàng)目在每個(gè)錯(cuò)誤的步驟之后將變得更加復(fù)雜和效率低下。

實(shí)現(xiàn)簡(jiǎn)潔性的方式是以“概念證明”來(lái)推敲,從看起來(lái)最可行和直接的解決方案開始工作,以便大量簡(jiǎn)單的設(shè)計(jì)能在程序員腦中被探索。之后,經(jīng)驗(yàn)和個(gè)人設(shè)計(jì)能力將有助于改進(jìn)設(shè)計(jì),并為需要解決的子設(shè)計(jì)找到合理的解決方案。

然而,每次需要實(shí)現(xiàn)一個(gè)復(fù)雜的解決方案時(shí),重要的是要長(zhǎng)時(shí)間地推敲如何避免復(fù)雜性,只有在沒有更好的可能性的、即使考慮到完全不同的替代方案情況下,才繼續(xù)這個(gè)方向。

完美主義,或者如何扼殺你的生產(chǎn)力和影響你的設(shè)計(jì)

完美主義有兩種變體:在程序中達(dá)到最佳可衡量的性能的工程文化,以及作為一種人格特征。 在這兩種情況下,我認(rèn)為這是程序員快速交付事情的最大障礙之一。 完美主義和外部帶有偏見的觀點(diǎn)的恐懼帶入了一種設(shè)計(jì)偏差,導(dǎo)致僅根據(jù)心理或簡(jiǎn)單可衡量的參數(shù)來(lái)改進(jìn)設(shè)計(jì)時(shí)可選擇項(xiàng)較少,其中諸如健壯性、簡(jiǎn)潔性、及時(shí)交付的能力往往不被考慮。

知識(shí):一些理論將會(huì)有所幫助

在處理復(fù)雜任務(wù)時(shí),有關(guān)數(shù)據(jù)結(jié)構(gòu)的知識(shí)、計(jì)算的基本限制和非常適合于模擬某些任務(wù)的非平凡算法將對(duì)找到合適設(shè)計(jì)的能力產(chǎn)生影響。 成為一切事物的超級(jí)專家不是必需的,但是至少,知道一個(gè)問(wèn)題的潛在解決方案是必需的。例如,應(yīng)用設(shè)計(jì)犧牲(接受一些誤差百分比)和清楚概率集合基數(shù)估計(jì)器可以組合在一起,以避免復(fù)雜、緩慢和記憶效率低下的用于統(tǒng)計(jì)整個(gè)流程中唯一的項(xiàng)目的解決方案。

底層:了解核心

即使使用高級(jí)語(yǔ)言,程序中的一些問(wèn)題也是由于對(duì)計(jì)算機(jī)如何執(zhí)行給定任務(wù)的誤解而產(chǎn)生的。 這甚至可能導(dǎo)致需要從頭開始重新設(shè)計(jì)和重新實(shí)現(xiàn)項(xiàng)目,因?yàn)樵谑褂玫墓ぞ呋蛩惴ㄖ写嬖谥締?wèn)題。良好的 C 語(yǔ)言能力,了解 CPU工作原理以及關(guān)于內(nèi)核如何運(yùn)行以及系統(tǒng)調(diào)用如何實(shí)現(xiàn),這些可以避免糟糕的后期意外。

調(diào)試技巧

有時(shí)候?yàn)榱税l(fā)現(xiàn)那些 bug 會(huì)花費(fèi)大量的工作時(shí)間。善于獲取一個(gè)bug的狀態(tài)、一系列合理的解決問(wèn)題的步驟、以及編寫不太可能包含太多錯(cuò)誤的簡(jiǎn)單代碼的態(tài)度,這三點(diǎn)對(duì)程序員的工作效率有很大的影響。

看到程序員的上述品質(zhì)如何能夠?qū)敵霎a(chǎn)生 10 倍的影響,我并不奇怪。 結(jié)合起來(lái)講,從可行的模式開始,它們?cè)试S良好的設(shè)計(jì)實(shí)現(xiàn),可以比替代方法簡(jiǎn)單幾倍。 有一種方法可以用來(lái)強(qiáng)調(diào)簡(jiǎn)潔性,我喜歡稱之為“機(jī)會(huì)主義編程”。 基本上在每個(gè)開發(fā)步驟中,選擇一系列要實(shí)施的功能,用最少的付出,以最大程度地影響程序的用戶基礎(chǔ)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3565

    瀏覽量

    93536
  • 程序員
    +關(guān)注

    關(guān)注

    4

    文章

    949

    瀏覽量

    29744
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AI編程工具會(huì)不會(huì)搶程序員飯碗

    AI編程工具可輔助編程,減少手動(dòng)編碼,提升效率,對(duì)程序員有積極影響也有挑戰(zhàn)。程序員需深化技能、拓寬知識(shí)應(yīng)對(duì)。長(zhǎng)遠(yuǎn)看,AI與人類程序員將共生共榮。
    的頭像 發(fā)表于 11-08 10:17 ?45次閱讀

    第五屆長(zhǎng)沙·中國(guó)1024程序員節(jié)開幕

    據(jù)官方媒體報(bào)道,10月24日;? 第五屆長(zhǎng)沙·中國(guó)1024程序員節(jié)在湖南湘江新區(qū)開幕;本次中國(guó)1024程序員節(jié)以“智能應(yīng)用新生態(tài)”為主題。設(shè)置有岳麓對(duì)話、技術(shù)英雄會(huì)、主題峰會(huì)及賽事、展覽等活動(dòng),一場(chǎng)
    的頭像 發(fā)表于 10-25 15:42 ?132次閱讀

    京東上萬(wàn)程序員都AI用它!

    對(duì)大模型生成代碼進(jìn)行智能修復(fù),為程序員開啟代碼漏洞修復(fù)的“自動(dòng)駕駛”模式,不但減少人工接入、提高工作效率,更為企業(yè)抵御內(nèi)外部各種攻擊構(gòu)建起一道堅(jiān)固的安全屏障,確保業(yè)務(wù)的連續(xù)性和穩(wěn)定性。 JoyCoder是京東云自主研發(fā)的一款輔助開發(fā)人員
    的頭像 發(fā)表于 07-17 16:29 ?213次閱讀
    京東上萬(wàn)<b class='flag-5'>程序員</b>都AI用它!

    程序員節(jié)視頻創(chuàng)意大賽,用串口屏贏取千元大獎(jiǎng)

    10月24日,程序員專屬的節(jié)日里,我們盛大開啟“程序員節(jié)視頻創(chuàng)意大賽”特別活動(dòng)!這不僅是一場(chǎng)視覺的盛宴,更是智慧與創(chuàng)意的璀璨碰撞。我們誠(chéng)摯邀請(qǐng)每一位程序員及編程愛好者,拿起你的鏡頭,記
    的頭像 發(fā)表于 07-08 10:38 ?72次閱讀
    <b class='flag-5'>程序員</b>節(jié)視頻創(chuàng)意大賽,用串口屏贏取千元大獎(jiǎng)

    程序員節(jié)視頻創(chuàng)意盛宴,邀您共襄盛舉!

    10月24日,程序員專屬的節(jié)日里,我們盛大開啟“程序員節(jié)視頻創(chuàng)意大賽”特別活動(dòng)!這不僅是一場(chǎng)視覺的盛宴,更是智慧與創(chuàng)意的璀璨碰撞。我們誠(chéng)摯邀請(qǐng)每一位程序員及編程愛好者,拿起你的鏡頭,記
    的頭像 發(fā)表于 07-04 09:00 ?67次閱讀
    <b class='flag-5'>程序員</b>節(jié)視頻創(chuàng)意盛宴,邀您共襄盛舉!

    大模型時(shí)代,程序員當(dāng)下如何應(yīng)對(duì) AI 的挑戰(zhàn)

    隨著 AI 技術(shù)的飛速發(fā)展,特別是大模型的出現(xiàn),傳統(tǒng)的程序員角色正在經(jīng)歷深刻的變革,我們不得不重新對(duì)自己進(jìn)行審視和思考。 通用領(lǐng)域大模型的“泛化能力” 在過(guò)去的二十年內(nèi),AI 領(lǐng)域的大部分研究
    的頭像 發(fā)表于 06-28 16:19 ?493次閱讀
    大模型時(shí)代,<b class='flag-5'>程序員</b>當(dāng)下如何應(yīng)對(duì) AI 的挑戰(zhàn)

    適者生存,程序員最終會(huì)流向哪……

    程序員沒有永遠(yuǎn)的護(hù)城河?。【湍壳暗幕ヂ?lián)網(wǎng)大環(huán)境來(lái)看,it行業(yè)已經(jīng)是……
    的頭像 發(fā)表于 03-11 17:11 ?370次閱讀
    適者生存,<b class='flag-5'>程序員</b>最終會(huì)流向哪……

    PSoC? kit59開發(fā)KIT_A2G_TC387_MOTORCTR中是否存在程序員支持對(duì)PSoC? 1系列MCU進(jìn)行編程?

    PSoC? kit59 開發(fā)KIT_A2G_TC387_MOTORCTR中是否存在程序員支持對(duì)PSoC? 1 系列 MCU(如 cy8c29466、cy8c27xxx、cy8c21xxx)進(jìn)行編程?
    發(fā)表于 03-05 06:47

    瑞薩Flash程序員V3 發(fā)布說(shuō)明

    電子發(fā)燒友網(wǎng)站提供《瑞薩Flash程序員V3 發(fā)布說(shuō)明.pdf》資料免費(fèi)下載
    發(fā)表于 02-19 09:37 ?1次下載
    瑞薩Flash<b class='flag-5'>程序員</b>V3 發(fā)布說(shuō)明

    2024程序員的未來(lái)方向如何走?還看今朝

    這幾年的IT行業(yè)想必大家已經(jīng)感受到了,Android、Java、前端等等程序員都經(jīng)歷了大廠……
    的頭像 發(fā)表于 02-02 09:45 ?757次閱讀
    2024<b class='flag-5'>程序員</b>的未來(lái)方向如何走?還看今朝

    1月18號(hào)“純鴻蒙”千帆啟航,程序員預(yù)備!

    。 如何正確看待鴻蒙? 我作為程序員來(lái)說(shuō),首先是看鴻蒙的發(fā)展、市場(chǎng)開發(fā)崗位、薪資以及前景。 這幾年對(duì)鴻蒙的發(fā)展情況來(lái)分析,從2019年開始鴻蒙的出來(lái)今天,華為鴻蒙取得了很大的成就。從“不兼容
    發(fā)表于 01-16 22:13

    誠(chéng)邀報(bào)名 | GPT驅(qū)動(dòng)的新程序員時(shí)代,開發(fā)者如何編程?

    2023開放原子開發(fā)者大會(huì) . OPENATOM DEVELOPERS CONFERENCE GPT驅(qū)動(dòng)的新程序員時(shí)代 我們?cè)撊绾尉幊?2023.12.17 生成式AI正以旋風(fēng)般的速度重塑我們的工作
    的頭像 發(fā)表于 12-11 22:20 ?501次閱讀

    程序員表白程序

    電子發(fā)燒友網(wǎng)站提供《程序員表白程序.rar》資料免費(fèi)下載
    發(fā)表于 11-21 10:41 ?16次下載
    <b class='flag-5'>程序員</b>表白<b class='flag-5'>程序</b>

    嵌入式程序員應(yīng)知道的幾個(gè)基本問(wèn)題

    電子發(fā)燒友網(wǎng)站提供《嵌入式程序員應(yīng)知道的幾個(gè)基本問(wèn)題.pdf》資料免費(fèi)下載
    發(fā)表于 11-20 11:21 ?0次下載
    嵌入式<b class='flag-5'>程序員</b>應(yīng)知道的幾個(gè)基本問(wèn)題

    智能低代碼洪流涌動(dòng)程序員節(jié),華為云 Astro 觸發(fā) 1024 的乘法效應(yīng)!

    ? 從人工智能至量子計(jì)算,再到最新的云原生技術(shù),越來(lái)越多的榮耀被程序員斬獲。今年 1024 程序員節(jié),華為云 Astro 向全民致敬:「低代碼高產(chǎn)出?拓荒數(shù)字化版圖——人人皆是程序員」,為全球工程師
    的頭像 發(fā)表于 11-13 09:39 ?433次閱讀
    智能低代碼洪流涌動(dòng)<b class='flag-5'>程序員</b>節(jié),華為云 Astro 觸發(fā) 1024 的乘法效應(yīng)!