在真實(shí)工作中的編程是怎么樣的,與學(xué)校里有什么不同?
學(xué)校里每門編程語言課程都是上一點(diǎn)上不完的,實(shí)驗(yàn)課寫的代碼最長一兩百行。 而在真實(shí)的工作環(huán)境中,程序員寫代碼是怎么樣的?每天要啪啪啪手敲成千上萬行代碼嘛?和在學(xué)校學(xué)習(xí)時(shí)寫代碼有什么異同呢?
/*說說我的經(jīng)驗(yàn)*/
剛進(jìn)公司時(shí),在你正式動(dòng)手寫代碼前,很可能要理解code base。這一過程至少持續(xù)1個(gè)月,取決于你所在項(xiàng)目的規(guī)模。你會(huì)發(fā)現(xiàn)你不得不使用你渾身所學(xué)之能事,理解上古程序員是如何解決一個(gè)個(gè)實(shí)際的問題的。有的時(shí)候你沾沾自喜,“哈哈,這個(gè)技巧勞資經(jīng)常用,你們也算有點(diǎn)見識(shí)”。但大部分時(shí)候你很糊涂。
在此階段,你每天的工作就是看文檔,看設(shè)計(jì)圖,讀代碼,放斷點(diǎn)debug,hack,fix,問同事。
你很累。你很無聊。
此外,剛進(jìn)公司的你,會(huì)發(fā)現(xiàn)你的項(xiàng)目組正在使用一些奇葩工具、冷門技術(shù),他們非常不好用,尤其跟你大學(xué)時(shí)候用的成熟IDE相比。你可能會(huì)想砸鍵盤,“誰特么想出來的用這個(gè)工具!誰特么寫的這么sb的工具!”
你很失望。
漸漸的,你開始了解了你們的業(yè)務(wù)領(lǐng)域,所謂的掌握了一定的領(lǐng)域知識(shí),你開始有能力判斷哪些是權(quán)衡,哪些是權(quán)宜,哪些是極精妙的設(shè)計(jì),哪些是遺留代碼。
你的領(lǐng)導(dǎo)也發(fā)現(xiàn)了這一點(diǎn),于是開始給你安排簡單的任務(wù)。他們可能是改一些顯而易見的bug,可能是實(shí)現(xiàn)一個(gè)最簡單的新特性。此時(shí)你會(huì)有一種駕馭的錯(cuò)覺,你很快的寫好了功能,提交,開始幻想自己精妙的代碼收到表揚(yáng)。當(dāng)然,不出意料的是,你提交的100行代碼里被找出了10個(gè)bug,其中2個(gè)是很嚴(yán)重的邏輯錯(cuò)誤,4個(gè)是未實(shí)現(xiàn)的需求,2個(gè)是ui錯(cuò)誤,2個(gè)是邊界條件未檢查。
你心里十分不爽,“媽的勞資這么屌炸天的代碼你們都不懂得欣賞!”
此時(shí)你的領(lǐng)導(dǎo)過來輕描淡寫地來了一句,“我們提交之前要進(jìn)行code review”。
于是你找了你身邊比較和善經(jīng)常解答你問題的小哥來代碼檢視,10分鐘之后,你漂亮的代碼被改得面目全非,你欲哭無淚,又不想得罪前輩,于是默默地提交了這不知道是誰寫的代碼。
就這樣掙扎著過了幾個(gè)月,你開始摸清了門道,于是你開始運(yùn)用你大學(xué)時(shí)期課內(nèi)或者課外學(xué)到的引以為傲的技巧和知識(shí)了。領(lǐng)導(dǎo)自然也發(fā)現(xiàn)了這一點(diǎn),于是他開始安排你組織技術(shù)交流會(huì),你精心準(zhǔn)備好了ppt,自己在家排練,并且試圖加入一些或者高冷或者沒品的幽默段子。
會(huì)議很成功,你感覺到同事開始對(duì)你刮目相看,你開始飄飄然,重新拾回“駕馭”的感覺,心想“就你們這幫碼農(nóng),勞資以后可是架構(gòu)師!”
漸漸的,你開始進(jìn)入了狀態(tài),你提交的代碼越來越多。剛進(jìn)公司時(shí)你從來沒打開過的代碼規(guī)范文檔開始回來找你麻煩,不過這不是大問題。領(lǐng)導(dǎo)開始對(duì)你強(qiáng)調(diào)質(zhì)量,而你則在心里抱怨舊代碼的設(shè)計(jì)。你想要重構(gòu),你想要?jiǎng)?chuàng)新,你想要搞一個(gè)大新聞。
與此同時(shí),組里新來了一位同事老李,是從其他部門調(diào)過來的老員工,領(lǐng)導(dǎo)組織組里盛情歡迎了他,你心里不服,但是他是個(gè)好人,你們談笑風(fēng)生。
機(jī)會(huì)來了。
公司要緊急實(shí)現(xiàn)一個(gè)演示功能,百萬級(jí)的合同能不能拿下來就看這次了,你的領(lǐng)導(dǎo)已經(jīng)親自飛往客戶那里坐鎮(zhèn),他走時(shí)跟你說,“組里就靠你和老李了!”
你十分激動(dòng),買好了泡面和零食,準(zhǔn)備通宵作戰(zhàn),給領(lǐng)導(dǎo)提供最犀利的火力支援。
第一個(gè)功能點(diǎn)談下來了。領(lǐng)導(dǎo)發(fā)給你了要求。
你發(fā)現(xiàn)你半懂不懂。
里面提到的一些其他模塊,你在每月組織的技術(shù)交流大會(huì)里聽說過,但你寫過的那點(diǎn)代碼里從沒調(diào)用過他們的API,你更沒讀過他們的代碼。你有點(diǎn)不知所錯(cuò),開始心虛。
不管了,先開始干。
你找到了一些相似的功能,翻出了一些發(fā)霉的陳年舊代碼,注釋里寫著2004/06/18。你沒有時(shí)間完全讀懂,你開始復(fù)制粘貼,直接debug。當(dāng)然,代碼報(bào)錯(cuò)了,你開始挨個(gè)解決,就這樣,一個(gè)通宵。
第二天早上,你總算把你熟悉的后臺(tái)部分調(diào)通了,你發(fā)現(xiàn)了新的麻煩。
是前臺(tái)。你對(duì)前臺(tái)并不熟悉。你知道javascript的原名叫ECMAScript,你知道JQuery對(duì)象和dom對(duì)象的區(qū)別,但是你發(fā)現(xiàn)你還是看不懂你們的前臺(tái)代碼。
怎么辦?
好吧,你決定拉下臉,問老李。老李看你的樣子,說,“你去睡一會(huì)吧,我來幫你看”。你心里有些不甘,有些不好意思,也有些感激。你很想自己把它們做出來,但你不會(huì),而且時(shí)間也來不及了。你想學(xué)學(xué)他是怎么做的,但是你的大腦已經(jīng)停止工作了。于是你疲憊地笑了笑,“好,交給你了。你看一下這里這里還有這里...我就去睡半個(gè)小時(shí),一會(huì)就回來找你。”
你這一覺睡到了下午。
你醒來一看表,震驚的彈起來,趕緊回辦公室找老李。老李已經(jīng)從你的座位回到自己的座位上了,正在慢悠悠地喝茶。你有些驚喜地問他,“怎么樣?”他回頭看見你回來了,說,“放心吧,已經(jīng)給一線調(diào)試了,你去吃點(diǎn)飯吧。”
你哪里有心思吃飯。你驚訝地對(duì)老李說了聲“好的!太好了!”然后回到你的座位上迫不及待得打開代碼開始運(yùn)行。正如老李所說的,功能已經(jīng)實(shí)現(xiàn)了。你輕舒一口氣,拿出一碗泡面泡上,開始啃代碼,心里想的是“這次一定要準(zhǔn)備好,防止下次再出亂子。”
啃著啃著,你有些不耐煩了,因?yàn)槟惆l(fā)現(xiàn)代碼越看越多,已經(jīng)超出了你的大腦容量。你想了一下,決定先放在一邊,查收一下郵件放松一下。
郵箱里又是塞滿了新員工培訓(xùn)的資料,各個(gè)部門的聯(lián)誼活動(dòng)通知,當(dāng)然最多的是服務(wù)器發(fā)來的build report和test report。沒什么有趣的事。
你想了一下接下來要干嘛。算了,還是接著寫新特性吧,測(cè)試們還等著你呢。但是你其實(shí)很忐忑,你的心早已飄去了前線,但是你知道你不能發(fā)郵件問狀況,因?yàn)槟泐I(lǐng)導(dǎo)可能幾天沒睡了,何況你也并沒有什么特別緊急的事。你破天荒的把郵件客戶端開著,留意每一個(gè)新收到的郵件。
就在這樣的忐忑中,一天過去了。反正也沒什么事,你回家好好洗了個(gè)澡,定了個(gè)早早的鬧鈴,安心的睡覺了。
第二天一大早你就跑去公司,果然郵箱里有了領(lǐng)導(dǎo)的郵件,上面寫道“演示很成功,客戶很滿意,接下來是談判階段。家里的開發(fā)兄弟你們太棒了!”
當(dāng)然,你很高興。但是又有一點(diǎn)失落。你不太明白為什么,于是你想了一下。隨后你似乎明白了,雖然這是一個(gè)好消息,但是好像跟你又沒什么關(guān)系,跟任何人似乎都沒什么關(guān)系,好像是一件自然而然的事情一樣,并沒有“holy shit”超神的聲音。
過一會(huì),你的大領(lǐng)導(dǎo),項(xiàng)目總經(jīng)理回復(fù)了你領(lǐng)導(dǎo)的郵件,說“干得好!同時(shí)也對(duì)家里的兄弟提出表揚(yáng)!回來開慶功會(huì)!”你心里略有一些期待,“不錯(cuò)”,你想到,雖然主角不是你,但是你畢竟也是功臣。
你為慶功會(huì)暗自準(zhǔn)備了很久,你在網(wǎng)上瀏覽跟領(lǐng)導(dǎo)吃飯?jiān)撜f些什么,你想好了很多概括性的有內(nèi)涵的問題來證明你對(duì)項(xiàng)目的理解,你也想多了解一些項(xiàng)目的大方向。
幾天之后,你領(lǐng)導(dǎo)回來了,大家開了慶功會(huì)。飯局上,大家聊聊家常,聊聊你領(lǐng)導(dǎo)在國外的見聞,大領(lǐng)導(dǎo)知道了你的名字,大家似乎很隨意的打了一會(huì)牌,就這樣平平淡淡的結(jié)束了。你略有一些失落。
生活回歸正常。
但似乎又跟以前不那么一樣。
你在開發(fā)工作以外,有了新的任務(wù),其中包括學(xué)習(xí)推廣新技術(shù)等等。你開始跟你領(lǐng)導(dǎo)徹夜長談。他與你分享他的經(jīng)驗(yàn),你與他分享你的見聞。你開始接觸他的工作,比如提高團(tuán)隊(duì)能力,完善自動(dòng)化測(cè)試,提高代碼質(zhì)量,提高代碼性能,增強(qiáng)功能可配置性等等。你開始淡定的接受新的工作,而不再幻想一朝成名的瞬間。畢竟,迎接挑戰(zhàn)才是你真正感興趣的事。
不過,這接下來的幾個(gè)月里,除了改自己先前遺留下來的bug,你幾乎沒有提交任何代碼。你每天的工作變成了看框架,讀代碼,看技術(shù)文檔,學(xué)習(xí)試驗(yàn)新工具,瀏覽技術(shù)論壇等等。你開始覺得有一些缺乏成就感,也有點(diǎn)懷念綠綠的單元測(cè)試結(jié)果和噼里啪啦彈鋼琴一般飛舞的手。
有一天晚上,只有你和你的領(lǐng)導(dǎo)在加班。你的問題困在心里很久了,于是你問道,“老大,為什么我的任務(wù)跟別人的不太一樣了?” 老大說,“那當(dāng)然了,你是當(dāng)作未來的技術(shù)主管來培養(yǎng)的。”
突然的幸福讓你不知所措,不過你克制地問道,“技術(shù)主管都是干什么的?” 老大并沒有回答你,而是說,“以后你就知道了”。
生活還在繼續(xù)。
跟你同一天入職的曉明是一個(gè)勤奮而又活潑開朗的人,但是你覺得他似乎入錯(cuò)了行。他總是掙扎著思考為什么他的代碼中有邏輯錯(cuò)誤。對(duì)你來說再簡單直接不過的一段代碼,他也很難讀懂。領(lǐng)導(dǎo)也發(fā)現(xiàn)了這一點(diǎn),所以安排他漸漸地向配置管理(CM)方向發(fā)展了。不過他似乎對(duì)這個(gè)很擅長,無論多么繁瑣的任務(wù),他總能按部就班的完成,各種紛雜的腳本他也一一了熟于胸,重要的是,他很有耐心,無論服務(wù)器出了什么奇葩問題,他都會(huì)跟它死磕到底。大家都很喜歡他,也很信賴他。
有一天,曉明像往常一樣抓住你向你請(qǐng)教問題。是個(gè)bug。你已經(jīng)習(xí)慣了從代碼檢視開始。你自信地叫他給你看代碼。然而你并沒有發(fā)現(xiàn)什么問題。于是你問什么現(xiàn)象。他說部署到服務(wù)器上就報(bào)錯(cuò)了。你看了一下日志。你沒想通。于是你再仔細(xì)重新檢查了一下是否各個(gè)環(huán)節(jié)都作對(duì)了。是的,沒有什么問題。
好吧,你知道你遇到棘手的問題了。不過誰知道下一秒會(huì)不會(huì)就解決了呢?進(jìn)公司這么久,各種奇葩問題對(duì)你來說早已是司空見慣。你打開搜索引擎,開始試圖尋找相似的問題。你不斷的做出假設(shè),然后通過證據(jù)否定它們,然后再作出新假設(shè)……直到你突破了你的理智,你覺得可能是編譯器出了問題。
真的假的?你從來沒有想過編譯器會(huì)出問題,就好像你從來沒有想過你的肝臟有一天會(huì)報(bào)錯(cuò)一樣。你覺得應(yīng)該是自己錯(cuò)了,于是你仔細(xì)排查了一下其他的可能性,不,沒有別的問題。于是你把服務(wù)器上編譯過的字節(jié)碼通過反編譯工具打開,你發(fā)現(xiàn)了一件微妙的事情。于是你跟隨著這個(gè)線索繼續(xù)上網(wǎng)查找原因。終于,你發(fā)現(xiàn)是兼容性的問題。你發(fā)現(xiàn)了新大陸。
問題雖然復(fù)雜,但是你只需要簡單調(diào)整一下代碼就可以繞過這一問題,于是你三下五除二把代碼改好了,測(cè)試,嗯,哈哈,果然沒有問題。曉明在旁邊看得發(fā)愣,問你,“咋回事???” 你心里有一絲淡淡的驕傲,你興奮地把他拉過來看你搜到的網(wǎng)頁,你把代碼反編譯之后跟源代碼對(duì)比,你給他講依賴加載的實(shí)現(xiàn)……你興奮得講了一大堆,他靜靜地聽完之后,眨了眨眼,說,“大神啊!”
艸,他根本沒聽懂。你一下子泄了氣。你也沒什么可說的了,但也不知道該如何接茬,就謙虛道“沒有沒有,我不是大神”。
雖然如此,他依然天天跟著你“大神”“大神”得叫你,雖然你知道他很菜,但是當(dāng)個(gè)偽“大神”也不錯(cuò)。你有點(diǎn)沾沾自喜,想說給你的同學(xué)聽,又覺得太 low。要不發(fā)個(gè)狀態(tài)“我不做大神好多年”?想想太蠢,只好作罷。
直到你發(fā)現(xiàn)還有好多人也被他稱為“大神”。
失落?
有一點(diǎn)。
你都習(xí)慣這種失落了。自從意氣風(fēng)發(fā)地畢業(yè)之后,你再也沒有那種強(qiáng)烈的勝利的感覺。你覺得生活似乎并不是你之前那樣的一元化。大家都有各自完全不同的特長、興趣、知識(shí)和經(jīng)驗(yàn),你也有你的,你并不是萬能的。即使在上學(xué)的時(shí)候你從來都是班級(jí)里的佼佼者,但是你漸漸的發(fā)現(xiàn)世界還很大,你不會(huì)的還很多,山外有山,人外有人,路漫漫其修遠(yuǎn)兮,吾將上下而求索……
想到這,你的思緒突然中斷了。你覺得自己實(shí)在是太優(yōu)秀了,還懂得反思。你又開始了沾沾自喜,心想,自己如此優(yōu)秀的人,總有一天會(huì)干出一番大事。于是你收拾收拾心情,繼續(xù)工作。
最近項(xiàng)目沒有那么緊張了,你漸漸的多出了不少時(shí)間。你領(lǐng)導(dǎo)也是。所以他又推薦給你了幾本書叫你看,都是一些設(shè)計(jì)的書,什么《領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)》、《企業(yè)應(yīng)用架構(gòu)模式》、《修改代碼的藝術(shù)》等等。你想起了剛來的時(shí)候他叫你讀的《重構(gòu)》,《設(shè)計(jì)模式》等書,你還記得剛翻開它們時(shí)的那種醍醐灌頂、豁然開朗的感覺。你微微一笑,說“好”。
這些書寫的真好,你感嘆道。
讀著它們,你總是不自禁地想起你們的代碼。你非常能理解書里描述的現(xiàn)象,你覺得你們的代碼有著同樣的問題。可是當(dāng)書里介紹解決方案時(shí),你卻發(fā)現(xiàn)理解它們很困難。書里面的問題域跟你們的不太一樣,你們有著不一樣的需求和架構(gòu)。書里說對(duì)于數(shù)據(jù)庫的操作要做這樣的一層封裝,可是你們除了數(shù)據(jù)庫還有web service;書里說對(duì)于UI和業(yè)務(wù)邏輯要做這樣的隔離,可是你們的UI并沒有直接調(diào)用后臺(tái),也是通過web service;書里面提到了好多技巧,你們并不需要……
你看得很無聊,漸漸的失去了耐心。簡單翻完了書的后半部分,你覺得你差不多明白書里面說的方法了。一種乾坤大挪移練到第七層的感覺油然而生,你非常急切地想找點(diǎn)東西試試功力。
你躊躇滿志地對(duì)你領(lǐng)導(dǎo)說,“我想對(duì)我們的代碼 進(jìn) 行 重 構(gòu) 。”
出乎你意料的是,你領(lǐng)導(dǎo)一點(diǎn)都沒有驚訝,而是笑瞇瞇的問你,“呦,好啊,你打算怎么搞啊?” 你沒有想過這個(gè)問題,愣了一下,說,“就按照領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的方法改啊,構(gòu)造一個(gè)充血領(lǐng)域模型。” 領(lǐng)導(dǎo)繼續(xù)笑瞇瞇,“好啊,那你打算怎么實(shí)施呢?”
怎么實(shí)施?什么叫怎么實(shí)施?改代碼就是改代碼咯,還怎么實(shí)施?你擺出了一個(gè)困惑的表情。
領(lǐng)導(dǎo)笑的更開心了,“你還記得《重構(gòu)》里說過的,重構(gòu)代碼要保證單元測(cè)試全通過嗎?但是現(xiàn)在你要重新設(shè)計(jì),單元測(cè)試肯定都沒用了,要重新改。你來看這個(gè)。” 他掏出一本書,指著某一章的標(biāo)題說,“如果要對(duì)代碼進(jìn)行大型重構(gòu),只好退而求其次,使用高覆蓋率的自動(dòng)化測(cè)試來確保大部分功能的正確性。但是只是這樣是遠(yuǎn)遠(yuǎn)不夠的,我們還得保證原有功能沒有被破壞,所以你還可以這樣這樣……”
你聽的如癡如醉,如沐甘霖。你想起在學(xué)校里,如果你對(duì)代碼不爽,你可以干脆刪掉重寫。你甚至都不需要一個(gè)版本控制工具。你從來沒有想過在真正的工程中有這么多復(fù)雜的問題以及這么多聰明的前輩們發(fā)明了各種系統(tǒng)化的方法。你再一次發(fā)現(xiàn)了新大陸。
討論之后的結(jié)論是,你負(fù)責(zé)監(jiān)督并提高自動(dòng)化測(cè)試的覆蓋率,同時(shí)你可以先構(gòu)造新的模型代碼,也可以提交,但是在發(fā)布時(shí)并不把它們包含進(jìn)去。當(dāng)新的代碼寫好之后先內(nèi)部測(cè)試,確保幾乎沒有問題了,再策略性的發(fā)布出去。
說干就干,你很興奮。“終于可以寫代碼了!”你開心的對(duì)領(lǐng)導(dǎo)說。領(lǐng)導(dǎo)又笑了,“寫代碼并不是重點(diǎn),重點(diǎn)是讓它們正確的執(zhí)行起來。” 你若有所思的點(diǎn)點(diǎn)頭,心卻早已飛到了你的新設(shè)計(jì)上。
你打開了看過改過無數(shù)遍的最核心的業(yè)務(wù)代碼,心里想象著它們被你改好之后的樣子,完美的領(lǐng)域模型、高內(nèi)聚低耦合的類、優(yōu)雅的代碼、完備的注釋、再加上同事們佩服的眼神……你覺得你快要像櫻木花道一樣笑出聲來了。
但是細(xì)節(jié)之處有乾坤。
你發(fā)現(xiàn)你第一行就不知道怎么改。
是日志。
你想了半天,沒有想到任何現(xiàn)成的解決方案。你問自己,日志算不算業(yè)務(wù)邏輯呢?算吧,它又對(duì)框架有很多依賴;不算吧,那把它放哪呢?你對(duì)著日志的代碼看了整整一個(gè)下午,仍然毫無頭緒。你覺得日志簡直是破壞你優(yōu)雅代碼的殺手,你真恨不得把它們給刪了……
算了,先不想了。你決定今天給自己放一天假,早早回家看個(gè)電影然后睡覺。
剛推開門,哇!外面下雪了。
漫天的雪花翩翩飛舞,一掃平日晚上蕭條的景象?;椟S的路燈照射下,雪花反射出暖暖的光。你想起了你在北國的家鄉(xiāng)。北方的小伙伴們都說江南的濕冷讓人難以忍受,“屋里跟屋外一樣冷”。你在此時(shí)此刻卻有了另外的感悟,你覺得說成”屋外跟屋里一樣暖和”也說得通。
也許生活就是這樣吧,你想到,并不總是得意,也并不總是失望。你的期待總是狡猾得偽裝成另外的樣子悄悄的進(jìn)入到你的生活中,而你的得意又總是在指縫中流走,想握也握不住。但是不管怎么樣,你覺得你很快樂,也很幸福。你很慶幸自己成為了程序員。你對(duì)現(xiàn)在的自己感覺到驕傲。
意識(shí)到你已經(jīng)在門口發(fā)呆了很久,你笑了,笑自己什么時(shí)候變的這么多愁善感。你走出門去,踩在雪上,發(fā)出咯吱咯吱的聲音……
<全文完>
<程序員的故事還沒有完>
/** 后記
真的沒有想到大家對(duì)這篇小文章(我都不知道能不能稱為文章)這么喜歡,我本意只是想通過一些真實(shí)的細(xì)節(jié)來描述工作和學(xué)校的不同的,誰知道寫著寫著就成故事了:-D
其實(shí)后面還有更多有意思的故事,不過已經(jīng)扯得太遠(yuǎn)了,想聽的話帶上好酒來找我吧!
至于你們所關(guān)心的老李,他是真的,但是他并不是掃地僧,他是前端大神,后來他把我們前端的js代碼完全重寫了一遍,他三十多歲,頭發(fā)濃密,有一個(gè)可愛的小女兒,說話不多,但是喜歡講內(nèi)涵段子。
故事經(jīng)過了加工,亦真亦假,人物也不是完全還原,但是看到你們留言說很真實(shí),我非常開心!
最后,作為一個(gè)工科男,我決定總結(jié)一下:
- 工作之后的代碼量遠(yuǎn)沒有學(xué)校時(shí)大作業(yè)那么多,但是要更嚴(yán)謹(jǐn);
- 但是你要面對(duì)很多遺留代碼,你要把它們弄懂,不像在學(xué)校里你基本都是從頭造輪子;
- 同事們都是八仙過海,各有所長,無論你在學(xué)校里是當(dāng)大腿還是抱大腿,在公司大家都對(duì)公司有著這樣那樣的貢獻(xiàn);
- 你不可能什么都會(huì),工作才是學(xué)習(xí)的開始,大學(xué)生活只是讓你準(zhǔn)備好;
- 除了代碼和技術(shù),你還要考慮業(yè)務(wù)知識(shí)、測(cè)試、質(zhì)量、生產(chǎn)效率和可持續(xù)性;
- 機(jī)會(huì)總是有的,你要做的只是準(zhǔn)備好;
- 學(xué)校所學(xué)的非常有用,但是理論和實(shí)踐有著巨大的鴻溝,這全靠你的經(jīng)驗(yàn)和工程感 (engineering judgment);
我暫時(shí)只能想到這么多,更多的就靠大家自己發(fā)掘啦。
最后祝喜歡編程的大家都成為架構(gòu)師!