程式設計師的「橫向發展」

2021-06-20 05:08:47 字數 2138 閱讀 6937

在我小的時候,家長經常對胖孩子打趣說:喲,身體長得挺快,可惜就是橫向發展了。看來在很多人的潛意識裡,縱向發展是向上的,值得誇獎,橫向發展則不是那麼光彩的事情。但是我的工作經歷和思考,卻讓我對「橫向發展」有了新的認識。

程式設計師的發展,長期以來都是大家關心的問題。通常程式設計師的發展有兩大方向,深度和廣度。深度發展,就是精深自己的本事,研習新潮尖端的技術乃至學會「屠龍之術」,以絕招打遍天下;廣度發展,就是拓寬自己的技能種類,比如學會更多的語言,以完成更多種類的任務。除去這兩大方向,其它能選的發展方向似乎就只有「改行」了。

今天我要說的當然不是改行,而是除去深度發展、廣度發展之外的第三維度,因為似乎一直也沒有正式的命名,所以我乾脆借用「橫向發展」的說法好了。

什麼是橫向發展呢?舉例子來說,我們寫個程式,深度發展關注的是讓它速度更快、資源消耗更少,廣度發展關注的是讓它更合適與其它模組互動,甚至用更合適的語言編寫這個程式。橫向發展,則是讓這個程式成為真正能用的程式,而不是實驗室裡的玩具。換句話說,「橫向發展」是讓程式更加「工業化」而不是「技術化」的發展。

我剛開始工作的時候,有一天提前完成了任務,喜滋滋地去向專案經理匯報。不料他看了**之後,卻把我劈頭蓋臉說了一頓:你以為你還是學生呢,給老師寫個程式算出正確結果就完?你看你處理網路連線的部分,對伺服器返回的異常資訊,包括網路傳輸的各種意外都沒有處理,誰向你保證伺服器總是返回正確資訊的?誰告訴你網路傳輸不會意外的?萬一網路斷了,你的程式就一直死迴圈嗎?……

我必須承認他說的有道理,但也一時無可奈何。雖然在學校的時候寫過不少程式,但老師都只看大致結構和結果,從沒有問過「網路斷線了怎麼辦」,也沒有哪本教材專門講過這方面的知識,所以自己一直也沒想過。但是沒想過歸沒想過,專案經理說的畢竟有道理,確實只有學生才會寫出在理想環境下執行的程式。於是我開始有意識地學習和思考各種異常情況的處理,覺得講究挺多,思路也因此拓寬了不少。不久,還因為這方面的工作得到了專案經理的表揚,也深刻感覺到「橫向發展」確實解放了自己。

後來換了份工作,我本來以為自己之前的經驗可以被人賞識,卻發現自己完全想錯了。新工作對程式的要求更高、應用場景更嚴苛,只思考在程式內部怎麼處理異常是不夠的,還需要確保程式的持續執行,其執行狀態持續可以記錄、監控、分析,出現問題必須能在第一時間判斷癥結(而不是啟動ide去debug)……為了做到這一切,既需要專門開發程式去監控自己的程式,又需要讓原有程式能夠被方便的監控,還不能洩露不必要的資訊,所以在設計時又有更高的要求——當然,這些知識仍然是書上沒有的。我寫到最後才發現,雖然核心的功能並沒有變複雜,但為了保證核心功能的穩定執行,程式本身的複雜度卻上公升了很多。這種要求,頗有幾分類似小朋友的「橫向發展」——但是小胖墩的重心終歸要穩一些嘛,所以我把對程式設計師的這種要求稱為「程式設計師的橫向發展」。

或許是從工作開始就有機會重視「橫向發展」的緣故,所以我長期以來並不認為這是嚴重的問題。後來的見識卻重新整理了我的認識:曾經有朋友告訴我,國內網際網路行業某新興領域排名三甲的公司,竟然連自己的伺服器上跑的哪個版本的程式都不知道,開始我還當是笑話,後來才知道事實當真如此。小朋友的「橫向發展」不討人喜歡,許多程式設計師也忽視甚至討厭「橫向發展」,覺得這是在給自己找麻煩,他們認為,把核心功能寫完,**提交,往伺服器上一扔,自己的工作到此為止了。至於其它方面,那就是系統管理員要處理的了。

如果你認真回憶,一定見過許多這樣的程式:完全不處理意外情況,各種異常一股腦交給作業系統去處理,我甚至見過默不作聲把所有異常都吃掉,假裝沒事繼續執行的系統。也見過很多這樣的程式:自動傳送郵件的程式,不知道自己每天發了多少封郵件,消耗了多少流量,等到使用者收不到郵件才知道出了問題;備份資料庫的程式,不會記錄每次備份的開始時間、結束時間、備份檔案大小,直到硬碟滿了才發現已經很久不能正常備份了;抓取資料的程式,不知道抓取的成功率、速度、消耗的流量,非要業務部門說資料很久沒更新了才知道抓取失效了…… 其實這些功能通常都不複雜,但完成它們的程式,不管什麼平台,什麼語言,就是做不到穩定。每次出了問題都不能預先知道,又因為沒有詳細的記錄,又要消耗無數的人力物力去解決。在一些稍微複雜的系統裡,不少程式設計師每天的工作內容就是這樣的重複勞動,隨之而來的是無休無止的抱怨,說工作毫無意義,沒有機會學新東西…… 更糟糕的是,不少這樣的程式設計師業餘時間還在積極學習,希望在把語言工具掌握得更熟練,學會更多的語言和工具,卻不知道問題的癥結在於自己缺乏「橫向發展」的意識。

我仔細回憶自己小時候,家長和老師會在一種情況下提倡「橫向發展」,那就是要求身闆像「豆芽菜」一樣的同學多鍛鍊,成長結實一點。同樣的道理,如果程式設計師覺得自己寫出的程式像「豆芽菜」一樣沒有底氣、不能放心,與其繼續鑽研新語言、新技術,倒不如抽出精力去「橫向發展」一把。

程式設計師的「橫向發展」

在我小的時候,家長經常打趣胖的孩子說 喲,身體長得挺快,可惜就是橫向發展。所以在很多人的潛意識裡,縱向發展是值得誇獎的,橫向發展則不是那麼光彩的事情。但是我的工作經歷,卻讓我對 橫向思考 有了新的認識。程式設計師的發展,長期以來都是大家關心的問題。一般來說,程式設計師的發展有兩大方向,深度和廣度。深...

程式設計師的個人發展

程式設計師的個人發展 每天晚上,請你問自己這些問題 1,今天我是否克服了技術上新的困難?2,今天我是否多讀了一些新書?3,今天我是否就某方面的問題與人進行了交流?4,今天我是否多認識了乙個新同事或新朋友並準備與他們保持聯絡?5,今天我是否更多的接觸到身處的行業需求,現狀,和發展?精通技術 精通技術是...

程式設計師的職業發展

剛畢業時,如果你是計算機專業本科,並且進入了做網際網路產品的技術團隊,那你很幸運。如果沒有,要麼進企業,要麼進外包。如果進入企業,是沒什麼所謂的開發團隊,技術人員就你乙個。所有的活都是乙個人,遇到問題沒有可以交流的人,而且見識比較侷限。好處是工作比較輕鬆,任務較少,想要提公升可以自學 如果你進入了外...