
學(xué)校里面的每門編程語言課都是上一點(diǎn)上不完的,實(shí)驗(yàn)課寫的代碼最長一兩百行,而在真實(shí)的工作環(huán)境中,程序員寫代碼是怎么樣的,每天是不是要啪啪啪手敲成千上萬行代碼,和在學(xué)校寫代碼,有什么異同呢?
本文來自知乎問答摘錄,原題鏈接:
https://www.zhihu.com/question/36022013
1
一本正經(jīng)回答
在駕校開車和在馬路上開車的區(qū)別
學(xué)校里完成功能就行了,工作中是處理各種意外
原來還有產(chǎn)品經(jīng)理這貨,還是專門派來跟我吵架的?
學(xué)校里的習(xí)慣不要帶到工作中
因?yàn)楣ぷ髦幸磺绣e誤與正確都是錢
沒啥大區(qū)別,就是和學(xué)校學(xué)的完全不一樣而已
這1w行我先干為敬
2
認(rèn)真臉回答
學(xué)校里,代碼越多,水平越高。
工作中,水平越高,代碼越少。
學(xué)校里,程序哪怕錯了一百次,
只要跑對一次,也算是及格了,也就是過了。
工作中,你跑對一百次是應(yīng)該的,
只要錯一次,就是錯了,就過不去。
3苦口婆心回答
1、規(guī)范性
在學(xué)校寫的代碼,除了你自己可能沒有第二個人看,可以不寫注釋,命名隨意起,int i、int a;在公司,代碼需要遵循一套嚴(yán)格的規(guī)范,這樣做利人利己。每行代碼需要經(jīng)過至少一次其他人的Code Review,我在學(xué)校自認(rèn)為代碼比較規(guī)范,結(jié)果到公司經(jīng)常被師傅提很多Tala(修改建議)。
2、測試
在學(xué)校,代碼寫完運(yùn)行起來跑一下、隨便點(diǎn)一下就行了;在公司,相比較開發(fā)的時間,寫單元測試和接口測試的時間只多不少,一行代碼需要好幾行代碼、好幾個用例來測試。我認(rèn)為沒有經(jīng)過測試的代碼等于沒寫。
3、性能(并發(fā))
在學(xué)校,寫的代碼充其量只是個小玩具,用戶量一只手?jǐn)?shù)得清,甚至再變成玩具之前就已經(jīng)夭折了;在公司,每一行代碼要面對的用戶上千萬、甚至上億,性能以及隨之帶來的并發(fā)問題不得不考慮。這就好比在公園蓋一個廁所,裝修華麗,環(huán)境很好,但是坑位只有五個,結(jié)果節(jié)假日幾百號人同時上廁所,那場面自行腦補(bǔ)。
4、嚴(yán)謹(jǐn)
在學(xué)校寫的代碼,出錯了最多被老師批一頓,改一下就完事了;在公司,尤其是大公司,一行代碼出錯可能會帶來幾十萬、幾百萬甚至更嚴(yán)重的資金損失,這種坑把你賣了都填不上。借用一位前輩的話:對你的每一行代碼保持一顆敬畏之心。
4
故事版回答
剛進(jìn)公司時,在你正式動手寫代碼前,很可能要理解code base。這一過程至少持續(xù)1個月,取決于你所在項(xiàng)目的規(guī)模。你會發(fā)現(xiàn)你不得不使用你渾身所學(xué)之能事,理解上古程序員是如何解決一個個實(shí)際的問題的。有的時候你沾沾自喜,“哈哈,這個技巧勞資經(jīng)常用,你們也算有點(diǎn)見識”。但大部分時候你很糊涂。
在此階段,你每天的工作就是看文檔,看設(shè)計(jì)圖,讀代碼,放斷點(diǎn)debug,hack,fix,問同事。
你很累。你很無聊。
此外,剛進(jìn)公司的你,會發(fā)現(xiàn)你的項(xiàng)目組正在使用一些奇葩工具、冷門技術(shù),他們非常不好用,尤其跟你大學(xué)時候用的成熟IDE相比。你可能會想砸鍵盤,“誰特么想出來的用這個工具!誰特么寫的這么sb的工具!”
你很失望。
漸漸的,你開始了解了你們的業(yè)務(wù)領(lǐng)域,所謂的掌握了一定的領(lǐng)域知識,你開始有能力判斷哪些是權(quán)衡,哪些是權(quán)宜,哪些是極精妙的設(shè)計(jì),哪些是遺留代碼。
你的領(lǐng)導(dǎo)也發(fā)現(xiàn)了這一點(diǎn),于是開始給你安排簡單的任務(wù)。他們可能是改一些顯而易見的bug,可能是實(shí)現(xiàn)一個最簡單的新特性。此時你會有一種駕馭的錯覺,你很快的寫好了功能,提交,開始幻想自己精妙的代碼收到表揚(yáng)。當(dāng)然,不出意料的是,你提交的100行代碼里被找出了10個bug,其中2個是很嚴(yán)重的邏輯錯誤,4個是未實(shí)現(xiàn)的需求,2個是ui錯誤,2個是邊界條件未檢查。
你心里十分不爽,“媽的勞資這么屌炸天的代碼你們都不懂得欣賞!”
此時你的領(lǐng)導(dǎo)過來輕描淡寫地來了一句,“我們提交之前要進(jìn)行code review”。
于是你找了你身邊比較和善經(jīng)常解答你問題的小哥來代碼檢視,10分鐘之后,你漂亮的代碼被改得面目全非,你欲哭無淚,又不想得罪前輩,于是默默地提交了這不知道是誰寫的代碼。
就這樣掙扎著過了幾個月,你開始摸清了門道,于是你開始運(yùn)用你大學(xué)時期課內(nèi)或者課外學(xué)到的引以為傲的技巧和知識了。領(lǐng)導(dǎo)自然也發(fā)現(xiàn)了這一點(diǎn),于是他開始安排你組織技術(shù)交流會,你精心準(zhǔn)備好了ppt,自己在家排練,并且試圖加入一些或者高冷或者沒品的幽默段子。
會議很成功,你感覺到同事開始對你刮目相看,你開始飄飄然,重新拾回“駕馭”的感覺,心想“就你們這幫碼農(nóng),勞資以后可是架構(gòu)師!”
漸漸的,你開始進(jìn)入了狀態(tài),你提交的代碼越來越多。剛進(jìn)公司時你從來沒打開過的代碼規(guī)范文檔開始回來找你麻煩,不過這不是大問題。領(lǐng)導(dǎo)開始對你強(qiáng)調(diào)質(zhì)量,而你則在心里抱怨舊代碼的設(shè)計(jì)。你想要重構(gòu),你想要創(chuàng)新,你想要搞一個大新聞。
與此同時,組里新來了一位同事老李,是從其他部門調(diào)過來的老員工,領(lǐng)導(dǎo)組織組里盛情歡迎了他,你心里不服,但是他是個好人,你們談笑風(fēng)生。
機(jī)會來了。
公司要緊急實(shí)現(xiàn)一個演示功能,百萬級的合同能不能拿下來就看這次了,你的領(lǐng)導(dǎo)已經(jīng)親自飛往客戶那里坐鎮(zhèn),他走時跟你說,“組里就靠你和老李了!”
你十分激動,買好了泡面和零食,準(zhǔn)備通宵作戰(zhàn),給領(lǐng)導(dǎo)提供最犀利的火力支援。
第一個功能點(diǎn)談下來了。領(lǐng)導(dǎo)發(fā)給你了要求。
你發(fā)現(xiàn)你半懂不懂。
里面提到的一些其他模塊,你在每月組織的技術(shù)交流大會里聽說過,但你寫過的那點(diǎn)代碼里從沒調(diào)用過他們的API,你更沒讀過他們的代碼。你有點(diǎn)不知所錯,開始心虛。
不管了,先開始干。
你找到了一些相似的功能,翻出了一些發(fā)霉的陳年舊代碼,注釋里寫著2004/06/18。你沒有時間完全讀懂,你開始復(fù)制粘貼,直接debug。當(dāng)然,代碼報(bào)錯了,你開始挨個解決,就這樣,一個通宵。
第二天早上,你總算把你熟悉的后臺部分調(diào)通了,你發(fā)現(xiàn)了新的麻煩。
是前臺。你對前臺并不熟悉。你知道javascript的原名叫ECMAScript,你知道JQuery對象和dom對象的區(qū)別,但是你發(fā)現(xiàn)你還是看不懂你們的前臺代碼。
怎么辦?
好吧,你決定拉下臉,問老李。老李看你的樣子,說,“你去睡一會吧,我來幫你看”。你心里有些不甘,有些不好意思,也有些感激。你很想自己把它們做出來,但你不會,而且時間也來不及了。你想學(xué)學(xué)他是怎么做的,但是你的大腦已經(jīng)停止工作了。于是你疲憊地笑了笑,“好,交給你了。你看一下這里這里還有這里...我就去睡半個小時,一會就回來找你?!?/p>
你這一覺睡到了下午。
你醒來一看表,震驚的彈起來,趕緊回辦公室找老李。老李已經(jīng)從你的座位回到自己的座位上了,正在慢悠悠地喝茶。你有些驚喜地問他,“怎么樣?”他回頭看見你回來了,說,“放心吧,已經(jīng)給一線調(diào)試了,你去吃點(diǎn)飯吧?!?/p>
你哪里有心思吃飯。你驚訝地對老李說了聲“好的!太好了!”然后回到你的座位上迫不及待得打開代碼開始運(yùn)行。正如老李所說的,功能已經(jīng)實(shí)現(xiàn)了。你輕舒一口氣,拿出一碗泡面泡上,開始啃代碼,心里想的是“這次一定要準(zhǔn)備好,防止下次再出亂子?!?/p>
啃著啃著,你有些不耐煩了,因?yàn)槟惆l(fā)現(xiàn)代碼越看越多,已經(jīng)超出了你的大腦容量。你想了一下,決定先放在一邊,查收一下郵件放松一下。
郵箱里又是塞滿了新員工培訓(xùn)的資料,各個部門的聯(lián)誼活動通知,當(dāng)然最多的是服務(wù)器發(fā)來的build report和test report。沒什么有趣的事。
你想了一下接下來要干嘛。算了,還是接著寫新特性吧,測試們還等著你呢。但是你其實(shí)很忐忑,你的心早已飄去了前線,但是你知道你不能發(fā)郵件問狀況,因?yàn)槟泐I(lǐng)導(dǎo)可能幾天沒睡了,何況你也并沒有什么特別緊急的事。你破天荒的把郵件客戶端開著,留意每一個新收到的郵件。
就在這樣的忐忑中,一天過去了。反正也沒什么事,你回家好好洗了個澡,定了個早早的鬧鈴,安心的睡覺了。
第二天一大早你就跑去公司,果然郵箱里有了領(lǐng)導(dǎo)的郵件,上面寫道“演示很成功,客戶很滿意,接下來是談判階段。家里的開發(fā)兄弟你們太棒了!”
當(dāng)然,你很高興。但是又有一點(diǎn)失落。你不太明白為什么,于是你想了一下。隨后你似乎明白了,雖然這是一個好消息,但是好像跟你又沒什么關(guān)系,跟任何人似乎都沒什么關(guān)系,好像是一件自然而然的事情一樣,并沒有“holy shit”超神的聲音。
過一會,你的大領(lǐng)導(dǎo),項(xiàng)目總經(jīng)理回復(fù)了你領(lǐng)導(dǎo)的郵件,說“干得好!同時也對家里的兄弟提出表揚(yáng)!回來開慶功會!”你心里略有一些期待,“不錯”,你想到,雖然主角不是你,但是你畢竟也是功臣。
你為慶功會暗自準(zhǔn)備了很久,你在網(wǎng)上瀏覽跟領(lǐng)導(dǎo)吃飯?jiān)撜f些什么,你想好了很多概括性的有內(nèi)涵的問題來證明你對項(xiàng)目的理解,你也想多了解一些項(xiàng)目的大方向。
幾天之后,你領(lǐng)導(dǎo)回來了,大家開了慶功會。飯局上,大家聊聊家常,聊聊你領(lǐng)導(dǎo)在國外的見聞,大領(lǐng)導(dǎo)知道了你的名字,大家似乎很隨意的打了一會牌,就這樣平平淡淡的結(jié)束了。你略有一些失落。
生活回歸正常。
未完待續(xù)。。。。
其實(shí)每個行業(yè)
都是如此
所以
不如編程
聊天不如編程
談戀愛不如編程
讓我們一起
學(xué)編程