在我小的時(shí)候,家長(zhǎng)經(jīng)常對(duì)胖孩子打趣說:?jiǎn)眩眢w長(zhǎng)得挺快,可惜就是橫向發(fā)展了。看來在很多人的潛意識(shí)里,縱向發(fā)展是向上的,值得夸獎(jiǎng),橫向發(fā)展則不是那么光彩的事情。但是我的工作經(jīng)歷和思考,卻讓我對(duì)“橫向發(fā)展”有了新的認(rèn)識(shí)。
程序員的發(fā)展,長(zhǎng)期以來都是大家關(guān)心的問題。通常程序員的發(fā)展有兩大方向,深度和廣度。深度發(fā)展,就是精深自己的本事,研習(xí)新潮尖端的技術(shù)乃至學(xué)會(huì)“屠龍之術(shù)”,以絕招打遍天下;廣度發(fā)展,就是拓寬自己的技能種類,比如學(xué)會(huì)更多的語言,以完成更多種類的任務(wù)。除去這兩大方向,其它能選的發(fā)展方向似乎就只有“改行”了。
今天我要說的當(dāng)然不是改行,而是除去深度發(fā)展、廣度發(fā)展之外的第三維度,因?yàn)樗坪跻恢币矝]有正式的命名,所以我干脆借用“橫向發(fā)展”的說法好了。
什么是橫向發(fā)展呢?舉例子來說,我們寫個(gè)程序,深度發(fā)展關(guān)注的是讓它速度更快、資源消耗更少,廣度發(fā)展關(guān)注的是讓它更合適與其它模塊交互,甚至用更合適的語言編寫這個(gè)程序。橫向發(fā)展,則是讓這個(gè)程序成為真正能用的程序,而不是實(shí)驗(yàn)室里的玩具。換句話說,“橫向發(fā)展”是讓程序更加“工業(yè)化”而不是“技術(shù)化”的發(fā)展。
我剛開始工作的時(shí)候,有一天提前完成了任務(wù),喜滋滋地去向項(xiàng)目經(jīng)理匯報(bào)。不料他看了代碼之后,卻把我劈頭蓋臉說了一頓:你以為你還是學(xué)生呢,給老師寫個(gè)程序算出正確結(jié)果就完?你看你處理網(wǎng)絡(luò)連接的部分,對(duì)服務(wù)器返回的異常信息,包括網(wǎng)絡(luò)傳輸?shù)母鞣N意外都沒有處理,誰向你保證服務(wù)器總是返回正確信息的?誰告訴你網(wǎng)絡(luò)傳輸不會(huì)意外的?萬一網(wǎng)絡(luò)斷了,你的程序就一直死循環(huán)嗎?……
我必須承認(rèn)他說的有道理,但也一時(shí)無可奈何。雖然在學(xué)校的時(shí)候?qū)戇^不少程序,但老師都只看大致結(jié)構(gòu)和結(jié)果,從沒有問過“網(wǎng)絡(luò)斷線了怎么辦”,也沒有哪本教材專門講過這方面的知識(shí),所以自己一直也沒想過。但是沒想過歸沒想過,項(xiàng)目經(jīng)理說的畢竟有道理,確實(shí)只有學(xué)生才會(huì)寫出在理想環(huán)境下運(yùn)行的程序。于是我開始有意識(shí)地學(xué)習(xí)和思考各種異常情況的處理,覺得講究挺多,思路也因此拓寬了不少。不久,還因?yàn)檫@方面的工作得到了項(xiàng)目經(jīng)理的表揚(yáng),也深刻感覺到“橫向發(fā)展”確實(shí)解放了自己。
后來換了份工作,我本來以為自己之前的經(jīng)驗(yàn)可以被人賞識(shí),卻發(fā)現(xiàn)自己完全想錯(cuò)了。新工作對(duì)程序的要求更高、應(yīng)用場(chǎng)景更嚴(yán)苛,只思考在程序內(nèi)部怎么處理異常是不夠的,還需要確保程序的持續(xù)運(yùn)行,其運(yùn)行狀態(tài)持續(xù)可以記錄、監(jiān)控、分析,出現(xiàn)問題必須能在第一時(shí)間判斷癥結(jié)(而不是啟動(dòng)IDE去debug)……為了做到這一切,既需要專門開發(fā)程序去監(jiān)控自己的程序,又需要讓原有程序能夠被方便的監(jiān)控,還不能泄露不必要的信息,所以在設(shè)計(jì)時(shí)又有更高的要求——當(dāng)然,這些知識(shí)仍然是書上沒有的。我寫到最后才發(fā)現(xiàn),雖然核心的功能并沒有變復(fù)雜,但為了保證核心功能的穩(wěn)定運(yùn)行,程序本身的復(fù)雜度卻上升了很多。這種要求,頗有幾分類似小朋友的“橫向發(fā)展”——但是小胖墩的重心終歸要穩(wěn)一些嘛,所以我把對(duì)程序員的這種要求稱為“程序員的橫向發(fā)展”。
或許是從工作開始就有機(jī)會(huì)重視“橫向發(fā)展”的緣故,所以我長(zhǎng)期以來并不認(rèn)為這是嚴(yán)重的問題。后來的見識(shí)卻刷新了我的認(rèn)識(shí):曾經(jīng)有朋友告訴我,國(guó)內(nèi)互聯(lián)網(wǎng)行業(yè)某新興領(lǐng)域排名三甲的公司,竟然連自己的服務(wù)器上跑的哪個(gè)版本的程序都不知道,開始我還當(dāng)是笑話,后來才知道事實(shí)當(dāng)真如此。小朋友的“橫向發(fā)展”不討人喜歡,許多程序員也忽視甚至討厭“橫向發(fā)展”,覺得這是在給自己找麻煩,他們認(rèn)為,把核心功能寫完,代碼提交,往服務(wù)器上一扔,自己的工作到此為止了。至于其它方面,那就是系統(tǒng)管理員要處理的了。
如果你認(rèn)真回憶,一定見過許多這樣的程序:完全不處理意外情況,各種異常一股腦交給操作系統(tǒng)去處理,我甚至見過默不作聲把所有異常都吃掉,假裝沒事繼續(xù)運(yùn)行的系統(tǒng)。也見過很多這樣的程序:自動(dòng)發(fā)送郵件的程序,不知道自己每天發(fā)了多少封郵件,消耗了多少流量,等到用戶收不到郵件才知道出了問題;備份數(shù)據(jù)庫(kù)的程序,不會(huì)記錄每次備份的開始時(shí)間、結(jié)束時(shí)間、備份文件大小,直到硬盤滿了才發(fā)現(xiàn)已經(jīng)很久不能正常備份了;抓取數(shù)據(jù)的程序,不知道抓取的成功率、速度、消耗的流量,非要業(yè)務(wù)部門說數(shù)據(jù)很久沒更新了才知道抓取失效了…… 其實(shí)這些功能通常都不復(fù)雜,但完成它們的程序,不管什么平臺(tái),什么語言,就是做不到穩(wěn)定。每次出了問題都不能預(yù)先知道,又因?yàn)闆]有詳細(xì)的記錄,又要消耗無數(shù)的人力物力去解決。在一些稍微復(fù)雜的系統(tǒng)里,不少程序員每天的工作內(nèi)容就是這樣的重復(fù)勞動(dòng),隨之而來的是無休無止的抱怨,說工作毫無意義,沒有機(jī)會(huì)學(xué)新東西…… 更糟糕的是,不少這樣的程序員業(yè)余時(shí)間還在積極學(xué)習(xí),希望在把語言工具掌握得更熟練,學(xué)會(huì)更多的語言和工具,卻不知道問題的癥結(jié)在于自己缺乏“橫向發(fā)展”的意識(shí)。
我仔細(xì)回憶自己小時(shí)候,家長(zhǎng)和老師會(huì)在一種情況下提倡“橫向發(fā)展”,那就是要求身板像“豆芽菜”一樣的同學(xué)多鍛煉,成長(zhǎng)結(jié)實(shí)一點(diǎn)。同樣的道理,如果程序員覺得自己寫出的程序像“豆芽菜”一樣沒有底氣、不能放心,與其繼續(xù)鉆研新語言、新技術(shù),倒不如抽出精力去“橫向發(fā)展”一把。
-
工程師
+關(guān)注
關(guān)注
59文章
1573瀏覽量
68680
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
月薪 3 萬的嵌入式工程師都在用,串口屏到底神在哪?
![月薪 3 萬的嵌入式<b class='flag-5'>工程師</b>都在用,串口屏到底神在哪?](https://file1.elecfans.com/web3/M00/07/ED/wKgZPGesCHCAFrKSAAEBXym8SBs375.png)
![](https://file1.elecfans.com/web3/M00/05/24/wKgZPGd9BIKAasMYAAP9Ml_injM792.jpg)
不同時(shí)期的硬件工程師,最怕發(fā)生的事 #電子工程師 #硬件工程師 #內(nèi)容過于真實(shí) #YXC晶振 #揚(yáng)興科技
![](https://file1.elecfans.com/web2/M00/07/FB/wKgZombz6VuAFeotAAIjSCj1HKI007.jpg)
硬件工程師VS軟件工程師|硬件工程師看到這都淚目了!#硬件設(shè)計(jì) #硬件工程師 #電子工程師 #軟件工程師
![](https://file1.elecfans.com/web2/M00/FF/40/wKgaomahti2AV26dAAMiNIjdnKg435.jpg)
嵌入式軟件工程師如何提升自己?
![](https://file1.elecfans.com/web2/M00/EB/14/wKgaomZXAd-AWEwjAAuV2RdwuSM130.png)
干硬件這一行,各種辛酸只有同行才懂吧 ? #電路設(shè)計(jì) #電子愛好者 #硬件工程師 #電子工程師
索尼誠(chéng)邀軟件工程師參與PS免費(fèi)手游平臺(tái)設(shè)計(jì)
嵌入式軟件工程師和硬件工程師的區(qū)別?
![](https://file1.elecfans.com/web2/M00/E5/09/wKgZomZB1aqAfoLMAALwKMk88bw153.jpg)
![](https://file1.elecfans.com/web2/M00/DF/FB/wKgZomY1H9uAdzzJAAMwQMmJ0js548.jpg)
“班長(zhǎng)!說好畢業(yè)后當(dāng)硬件工程師,你怎么..." #搞笑 #電子行業(yè) #電子工程師 #晶振 #揚(yáng)興科技
![](https://file1.elecfans.com/web2/M00/DE/DE/wKgZomYwuQ-AegjsAAISSibiD4I286.jpg)
一個(gè)電源工程師的成長(zhǎng)路徑
![](https://file1.elecfans.com/web2/M00/C5/1E/wKgaomXxdsmAENR6AAKEdyutPEU736.jpg)
一位硬件工程師的歷練之路:從入門學(xué)習(xí)理論到... #搞笑 #硬件工程師 #電子工程師 #揚(yáng)興科技
單片機(jī)如何通過代碼控制硬件:一名工程師的分享
![單片機(jī)如何通過代碼控制硬件:<b class='flag-5'>一名</b><b class='flag-5'>工程師</b>的分享](https://file1.elecfans.com/web2/M00/C2/D6/wKgZomXoETmAYdSCAADYRReTHqA347.png)
![](https://file1.elecfans.com/web2/M00/C1/46/wKgaomXUeXuAXDwNAAJ_XqvplMU996.jpg)
評(píng)論