<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 2055字,需瀏覽 5分鐘

           ·

          2022-06-09 02:31

          點(diǎn)擊關(guān)注公眾號(hào),Java干貨及時(shí)送達(dá)

          作者 | feenk ? ?整理 | 夢(mèng)依丹 
          出品 | CSDN(ID:CSDNnews)

          面對(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ì)原理》一書

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

          在CSDN舉辦的2022開發(fā)者生態(tài)匯上,知名程序員,MegaEase CEO 左耳朵耗子(陳皓)在演講中提到,在國(guó)內(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ì)。最新面試題整理好了,大家可以在Java面試庫(kù)小程序在線刷題。

          在做一件重要的事情之前,人們往往會(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ù)測(cè)具體的問題,但可以預(yù)測(cè)出問題類別。樹立可塑開發(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è)人做要快速好幾百萬(wàn)倍。

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

          原文鏈接:https://lepiter.io/feenk/developers-spend-most-of-their-time-figuri-9q25taswlbzjc5rsufndeu0py/








          Spring Boot 定時(shí)任務(wù)開啟后,怎么自動(dòng)停止?
          工作 3 年的同事不知道如何回滾代碼
          23 種設(shè)計(jì)模式實(shí)戰(zhàn)(很全)
          Spring Boot 保護(hù)敏感配置的 4 種方法!
          再見單身狗!Java 創(chuàng)建對(duì)象的 6 種方式
          阿里為什么推薦使用 LongAdder?
          新來一個(gè)技術(shù)總監(jiān):禁止戴耳機(jī)寫代碼。。
          重磅!Spring Boot 2.7 正式發(fā)布
          Java 18 正式發(fā)布,finalize 被棄用。
          Spring Boot Admin 橫空出世!
          Spring Boot 學(xué)習(xí)筆記,這個(gè)太全了!



          關(guān)注Java技術(shù)棧看更多干貨



          獲取 Spring Boot 實(shí)戰(zhàn)筆記!
          瀏覽 56
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  五月丁香中文字幕 | 精品色| 欧美亚洲黄色电影免费收看 | 4438久久 | 久草2024 |