<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>

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

          共 2037字,需瀏覽 5分鐘

           ·

          2022-06-09 01:25

          Hollis的新書限時折扣中,一本深入講解Java基礎(chǔ)的干貨筆記!?

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

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

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

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


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

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

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

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

          圖2

          即使在40年后的今天,花在摸索系統(tǒng)上的時間并沒有變少。盡管這是一個非常大的項目成本,但人們在日常更多的是討論如何構(gòu)建系統(tǒng),而不是如何弄清楚一個系統(tǒng)。

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

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

          圖3 決策時間

          閱讀只是從數(shù)據(jù)中收集信息的一種手段,也恰好可能是最手動的方式,這就為優(yōu)化提供了重要的機會。最新面試題整理好了,大家可以在Java面試庫小程序在線刷題。

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

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

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

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

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

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

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

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

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

          ?



          我的新書《深入理解Java核心技術(shù)》已經(jīng)上市了,上市后一直蟬聯(lián)京東暢銷榜中,目前正在6折優(yōu)惠中,想要入手的朋友千萬不要錯過哦~長按二維碼即可購買~


          長按掃碼享受6折優(yōu)惠



          往期推薦


          朋友圈發(fā)“羨慕人家按時發(fā)工資”竟被開除?官方回應(yīng)!


          SpringBoot 實現(xiàn)人臉識別功能 !so easy


          “因一條 Linux sudo 命令,我的 Twitter 賬號被封了!”




          如果你喜歡本文,
          請長按二維碼,關(guān)注?Hollis.
          轉(zhuǎn)發(fā)至朋友圈,是對我最大的支持。

          點個?在看?
          喜歡是一種感覺
          在看是一種支持
          ↘↘↘
          瀏覽 47
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  大雞巴弄得我好舒服黃片动漫版 | 欧美色五月 | 日韩三级小说 | 国内免费黄色视频 | www.黄色视频 |