1. 恕我直言:程序員大部分時(shí)間不是在寫代碼,而是。。。

        共 1586字,需瀏覽 4分鐘

         ·

        2022-06-28 20:56

        面對(duì)冷冰冰的機(jī)器、代碼、工具,程序員的首要工作是知其然并知其所以然,方能入手去敲打出美妙的代碼。

        近日,一篇《Developers spend most of their time figuring the system out》的文章在HacekerNews上引起了不少開發(fā)者的共鳴,作者表示,程序員大部分時(shí)間都在摸索系統(tǒng)之上,而非構(gòu)建系統(tǒng)。

        對(duì)于這一話題,最早可追溯到1979年Zelkowitz、Shaw和Gannon出版的《軟件工程和設(shè)計(jì)原理》一書,書中描述到,程序員把大部分的時(shí)間(67%)都花在了開發(fā)維護(hù)上。

        圖1:截圖自《軟件工程和設(shè)計(jì)原理》一書

        誠然,這本書并沒有告知這一數(shù)字的背后,那么在40年后的今天,又是怎樣的情形呢?

        在CSDN舉辦的2022開發(fā)者生態(tài)匯上,知名程序員,MegaEase CEO 左耳朵耗子(陳皓)在演講中提到,在國內(nèi)沒有一家軟件公司有升級(jí)部門,經(jīng)常是老到20年的系統(tǒng)依然在使用??上攵?,對(duì)于這樣的系統(tǒng),程序員入職的第一件事或許就是弄清楚這些老“玩意”后進(jìn)行著修修補(bǔ)補(bǔ)的工作。

        對(duì)此,原文作者提到,論文《Measuring Program Comprehension: A Large-Scale Field Study with Professionals》中指出了程序員在一個(gè)項(xiàng)目上的時(shí)間分配,其中約58%的時(shí)間來理解系統(tǒng),并闡述這一數(shù)字是如何得來的。

        圖2

        即使在40年后的今天,花在摸索系統(tǒng)上的時(shí)間并沒有變少。盡管這是一個(gè)非常大的項(xiàng)目成本,但人們?cè)谌粘8嗟氖怯懻撊绾螛?gòu)建系統(tǒng),而不是如何弄清楚一個(gè)系統(tǒng)。

        開發(fā)者是如何搞清楚系統(tǒng)的呢?開發(fā)者更多是通過閱讀代碼來摸清系統(tǒng)的架構(gòu)與分支,這一結(jié)論也在論文《Measuring Program Comprehension》得到了驗(yàn)證。

        那有沒有什么其它更高效的方式呢?程序員為什么要閱讀源碼呢?其實(shí)對(duì)于程序員來說,如果只知其然而不知所以然,是很難進(jìn)行下一步的代碼搭建,因此摸清系統(tǒng),最主要的是為了做出更好的編程決策。

        圖3 決策時(shí)間

        閱讀只是從數(shù)據(jù)中收集信息的一種手段,也恰好可能是最手動(dòng)的方式,這就為優(yōu)化提供了重要的機(jī)會(huì)。

        在做一件重要的事情之前,人們往往會(huì)進(jìn)行命名,否則就會(huì)像伏地魔一樣。在多年以前,把弄清楚系統(tǒng)然后再做下一步稱之為評(píng)估,并且還提出應(yīng)該圍繞評(píng)估來優(yōu)化開發(fā)。

        圖4 評(píng)估是對(duì)系統(tǒng)進(jìn)行全面了解的過程,從而支撐做出決策

        通過閱讀來提取數(shù)據(jù)是最機(jī)械的一種方式,無法規(guī)?;?,還會(huì)帶來信息不完整和不確定性。在還未摸清系統(tǒng)全貌之前,決策不應(yīng)該建立在信念的基礎(chǔ)之上。數(shù)據(jù)科學(xué)告訴我們,應(yīng)該以問題為導(dǎo)向去匹配相應(yīng)的工具進(jìn)行推理。

        圖5 工具應(yīng)與背景相匹配

        軟件不是一座孤島,而是由無數(shù)關(guān)聯(lián)項(xiàng)組成,因此人們無法預(yù)測具體的問題,但可以預(yù)測出問題類別。樹立可塑開發(fā)思想,在摸清問題之后,構(gòu)建自定義工具流程,從而快速處理上下文中的重要內(nèi)容。在未來十年,人們無需通過閱讀源碼來衡量是否“弄清了系統(tǒng)”,取代它的應(yīng)該是解決實(shí)際的問題。

        針對(duì)這個(gè)話題,HackerNews不少人都提到了結(jié)對(duì)編程,一位gleenn網(wǎng)友則提出了結(jié)對(duì)編程模式:人們往往會(huì)避免或者糾結(jié)結(jié)對(duì)編程,認(rèn)為結(jié)對(duì)編程所花費(fèi)的時(shí)間和成本是非結(jié)對(duì)的2倍,這完全是錯(cuò)誤的理解。

        當(dāng)他在一個(gè)每天輪流做結(jié)對(duì)編程的地方工作時(shí),在一個(gè)熟悉系統(tǒng)并能即時(shí)回答你提出的問題人面前寫代碼,一個(gè)新開發(fā)者的效率可以一飛沖天,比一個(gè)人做要快速好幾百萬倍。

        ID為kayodelycaon的用戶表示,在一個(gè)100%進(jìn)行結(jié)對(duì)編程的地方工作,意味著無法結(jié)對(duì)的人就會(huì)被過濾,而能否進(jìn)行結(jié)對(duì)編程,與當(dāng)事人的方方面面都有著關(guān)系,比如自己有多動(dòng)癥、短期記憶方面的問題等。但自己卻能編寫出非常好的代碼,會(huì)考慮代碼的可讀性、算法復(fù)雜性、副作用、可測試性等多個(gè)小細(xì)節(jié)。

        瀏覽 24
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 狠狠色噜噜狠狠狠7777奇米 | 天天日视屏| 意大利性猛交xxxxxhd3 | 国产精品美女久久久久AV爽 | www.xxxx日本 |