2009-11-14 33 views
4

有沒有這方面的統計資料?我意識到它必須因人而異,但似乎應該有一個共同的平均值。程序員可以熟悉多少代碼?

的原因,我問的是,該公司爲我的合同已經多個軟件產品,共計〜75000行代碼 - 他們看起來很失望和震驚,當他們問我有關,我不立刻知道特定部分的問題答案(我是他們唯一的程序員,並且沒有編寫大部分系統)他們認爲我應該從內存中知道這一切。所以我想要一個統計數據來向他們展示一個普通的程序員不可能在他的腦海中同時擁有所有的東西。還是應該?

+0

只問他們是否可以記住75,000行代碼 – Malfist 2009-11-14 19:50:36

+0

這個*可能*是可以回答的,但是在現存的答案中我沒有看到任何數據標記,所以我在本地定義下將它看作不是真正的問題這要求有答案。 – dmckee 2009-11-15 22:59:48

回答

2

確實有趣的問題,但我懷疑是否有足夠的答案。這裏是唯一明顯的因素,我認爲,從一開始:

  • 整體設計質量。即使您在設計良好的代碼中是新手,您也可以快速確定應該在哪裏尋找答案。
  • 項目文檔質量。對於記錄不佳的項目,甚至從一開始就處於項目中的開發人員也無法對某些部分進行任何說明。
  • 執行質量。好。你有很好的通用架構,很好的接口文檔,但即使是一個非常糟糕的程序員也可能會破壞所有這些。這是因爲很多公司對代碼評論都非常嚴格,我認爲這是防止這種情況的唯一技術。
  • 程序員經驗。隨着您前進,您可以看到新的軟件中的「已知」代碼「磚塊」的數量和體驗對此非常有幫助,因此承包商通常是熟悉各種方法的非常有經驗的專家,這使平均承包商的移動速度要快得多全職程序員,這是輝煌的,但只在一個項目的情況下工作了10年。
  • 一般人的智能。我認爲這與其他因素中的大多數並不重要,但它非常重要。

...但共同的問題往往是公司僱用的承包商對於一些現有的軟件改進,他們簡單地認爲這只是即將掛在牆上的圖片。你應該進行一些談判來強迫他們理解部分工作是理解爲了滿足他們的要求真正應該做什麼。而這種「學習」需要資源,是工作本身的一部分。但是我認爲這對於StackOverflow來說有點偏離主題(儘管我投了票;))。對於初創公司的討論更多嗎?

4

你應該記住在哪裏找到所需的東西,但不記得它本身。

你也應該熟悉的代碼結構和架構,足以使一個受過教育的猜測,其中一個問題威力起源和在那裏你可以可能找到你知道存在的東西,但不知道確切位置。

你的大腦像緩存一樣工作。你最近使用的東西保存在那裏,更舊的條目被刪除。但是,永遠不會有足夠的內存來一次記住代碼。因爲那樣你會想記住所有的API函數,然後是所有的規格,然後是其他的東西。這一切都不可行。

並與你感到驚訝,你不記得所有的代碼可能的程序員是如何做的那些perversed概念之一多個實例。別理他們。

1

即使你已經寫了所有的代碼,你可能會忘記它的一部分。但是一旦您查看它,您就可以回想起它。

我認爲它自然的程序員很長一段時間後,他/她的代碼的一些部分忘記。

3

它不僅取決於你的記憶能力,而且還取決於代碼。顯然,乾淨,習慣用法的代碼比寫得不一致的混亂更容易記憶。 可能因爲乾淨的代碼可以分解成更大的「抽象標記」。

0

向他們請教,希望你能花你的時間:測量大量的代碼,你不寫,也許撰寫的內部文件,或任何目前讓你佔領這不是一個滑稽的問題。如果他們想要更快地迴應新問題,他們需要投資於研究。

我不認爲有一個在LOC測量的有意義的答案。作爲經理,我想知道的是,你情況中的某個人可以在合理的時間內回答一個問題 - 除非我知道你處於某種事情的中間,否則我不會期望「合理數量的時間「是」即時「的。

0

你應該能夠了解系統內的所有組件,以及它們如何相互作用,使得當有一個問題,您可以隔離一個或兩個可能的組件和深入。

我發現它有助於繪製一些圖表,並妥善保管,以便我可以把他們跟我的老闆\客戶進行溝通,以及喚起我的記憶中。