寫了100萬行代碼的程序員是什么樣的程序員
今天在社群上閑逛,突然發現一個十分有趣的帖子,《寫了100W行的代碼是啥感覺?》
看完之后就頭皮一陣發麻,讓我寫一萬行的代碼?!are you kidding me?(黑人問號臉)我估計寫到20萬的時候就會突然有個疑問—-“咦?我的頭發呢?”
A同學:我寫兩千行代碼功能都得琢磨個兩三天,一百萬行真的是好多啊,最多了五年寫了也就 20-30萬行代碼左右,還是有任務在身的情況被逼著寫的,讓我寫一百萬行代碼,恐怕這輩子得死在電腦前了…
B同學:我是覺得如果說你一個工作寫了一百萬行代碼,那你在公司的地位應該算資深員工了。如果你一個項目寫了一百萬行,那你肯定是參與了一個比較大的項目了。
如果你一個類寫了一百萬行,請問你用的是什么編輯器?如果你一個方法寫了一百萬行代碼的話,請問你有沒有被同事打死?
C同學:據說要從初學者成長為程序員,那個得需要10萬行代碼的積累才可以呢。不過話說回來這樣說也很對,畢竟入門階段嘛,確實需要多打代碼才能積累經驗。
不過修煉一段時間之后再注重代碼的量那就不對了這時候肯定是注重數學還有算法思維,按這樣算的話,假如20萬是修煉門檻真積累到了一百萬行代碼肯定代碼質量越來越高了,估計是某個領域的小專家也說不定。
至于真敲了一百萬行低質量代碼,聽哥一句話,還是轉行吧。程序員不適合你這種鍥而不舍的精神。
D同學:切,一群渣渣。給你們看看一張網圖就知道我連續熬夜寫幾千行代碼是什么狀態了。我感覺我快要窒息了,如果時間可以倒流,我希望我不做程序員!!!
E同學:這簡直就是一個送***啊,哪有什么人能打一百萬的代碼,從業五六年的程序員,如果按正常工作量的話一天也就一百多行,這五六年估計也就五六萬行吧。
如果是外包公司代碼量估計翻倍了,那就按五十萬行來算。但是誰會那么拼命去奮斗在一線一天一千行的去工作啊。寫五六十萬行肯定都轉行創業了,還繼續下去不猝死估計也脫一層皮了。
其實,代碼真的是重質不重量,質量高的代碼,是當前代碼界提倡的,當然寫出高質量的代碼肯定需要一個相當高的專業素養,這需要在日常的代碼書寫中逐漸去吸收掌握。誰不是每天都在學習呀,目的還不是為了一個,為實現某個功能寫出高質量的代碼。
那么,寫出100萬行代碼到底需要多少時間,我們來算一下:
假設***的情況,一天100行高質量代碼,一年36500,100/3.65=27年多。即便從20歲開始編碼,要到50歲左右方可完成。
但實際上關于平均代碼量的問題,即便把所有工作日都算上,大概也就是20-30行的樣子;如果僅討論集中的開發期,高峰也不會超過200行。
所以說,一百萬代碼就像找女朋友一樣不靠譜。
總結一下:
關于代碼的量,從初學者成長為程序員,需要代碼的積累,而以后數學功底和編程思維的深化更加重要。
一味的追求量并沒有任何實際意義,通常,越核心的部分代碼量越小,越容易寫大量代碼的,大概是沒什么技術含量的 UI、業務邏輯。而一些部分,用腳本或DSL實現可以更精簡。寫代碼和考試一樣,做題最多的不一定是成績***的。
此外,要想做高質量的代碼,建議先打好技術基礎,比如掌握好開發語言,熟悉開發平臺、掌握基礎的數據結構與算法、了解基礎的設計原則等。建議采用代碼標準,比如Google等大廠已經制定好了各種標準。想好了再寫,不建議邊做邊想。
我們常常很難一次把代碼寫得讓自己滿意、無可挑剔,所以重構對于代碼質量的重要性不言而喻,推薦閱讀《重構》這本業內經典書籍。
很多問題歸根結底都是技術債務,就代碼質量而言,如果你還對高質量代碼有追求,建議你在負責一個小模塊時,除了把它做好之外,也要順便將與之糾纏在一起的技術債務還掉,在一個團隊里任何一個人都不可能獨善其身
寫出高質量的代碼,代碼審查也必不可少。事實上,很多代碼上的問題,都可以通過一些工具來找到,比如Android開發中有Lint, Find bugs, PMD等優秀靜態檢查工具可用,通過改進這些工具找出的問題,就能對語法的細節,規范,編程的技巧有更多直觀了解。
建議***與持續集成(CI),代碼審查環境配套使用,每次提交的代碼都能自動驗證是否通過了工具的代碼檢查,通過才允許提交。
當你需要修改大量代碼時,單元測試的優點就顯現出來,你只盡管放心修改,只需要保證單元測試用例通過即可,無需瞻前顧后。在寫完代碼后,進行充分自測,需要至少跑一遍基本的場景,一些簡單的異常流,不要總想著讓測試幫你找問題。
***就是善用開源。雖然并非開源的東西,質量就高,但至少關注度較高,使用人數較多,口碑較好的開源項目,質量有一定保證,即便存在一些問題,也可以通過提交反饋,不斷改進。
最重要的是,你自己花時間造的輪子,需要很多精力維護,而充分利用開源項目,能幫助你節省很多時間,把精力專注在最需要你關心的問題上。