程式設計師的“橫向發展”
在我小的時候,家長經常打趣胖的孩子說:喲,身體長得挺快,可惜就是橫向發展。所以在很多人的潛意識裡,縱向發展是值得誇獎的,橫向發展則不是那麼光彩的事情。但是我的工作經歷,卻讓我對“橫向思考”有了新的認識。
程式設計師的發展,長期以來都是大家關心的問題。一般來說,程式設計師的發展有兩大方向,深度和廣度。深度發展,就是精神自己的本事,研習新潮、尖端的 技術乃至“屠龍之術”,以絕招打遍天下;廣度發展,就是擴充自己的技能,比如學會更多的語言,以完成更多種類的任務。除去這兩大方向,其它能選的發展方向 基本就只有“改行”了。
今天我要說的當然不是改行,而是除去深度發展、廣度發展之外的第三維度,因為不知道該如何命名,乾脆借用“橫向發展”的說法吧。
我們寫一個程式,深度發展關注的是讓它速度更快、資源消耗更少,廣度發展關注的是讓它更合適與其它模組互動,甚至用更合適的語言編寫這個程式。橫向發展,則是讓這個程式更像一個真正能用程式,而不是實驗室裡的玩具。
在我剛剛工作的時候,有一天我提前完成了任務,喜滋滋地去向專案經理彙報,不料他看了程式碼之後,卻把我劈頭蓋臉說了一頓:你以為你還是學生呢, 給老師寫個程式算出正確結果就完?你看你處理網路連線的部分,對伺服器返回的異常資訊,包括網路傳輸的各種意外都沒有處理,誰告訴你伺服器總是返回正確信 息的?誰告訴你網路傳輸不會意外的?萬一網路斷了,你的程式就一直死迴圈嗎?……
我必須承認他說的有道理,但也無可奈何,在學校的時候寫過不少程式,但老師一般只看大致結構和結果,從沒有問過“網路斷線了怎麼辦”的問題,所 以我從來也沒想過。沒想過歸沒想過,專案經理說的畢竟有道理,只有學生才會寫出只能在理想環境下執行的程式,於是我開始有意識地學習和思考各種異常情況的 處理,不久還因為這方面的工作得到了專案經理的表揚,也深刻感覺到“橫向發展”確實解放了自己。
後來換了工作,還是做伺服器方面的開發,我本來以為自己之前的經驗可以被人賞識,卻發現自己完全想錯了。作為要求更高、應用場景更嚴苛的程式, 只思考在程式裡怎麼處理異常是不夠的,還需要確保程式的持續執行,其執行狀態持續可以記錄、監控、分析,出現問題必須能在第一時間判斷癥結……為了做到這 一切,既需要專門開發一些程式去監控自己的程式,又需要原來的程式能夠被方便的監控,所以在設計時又有更高的要求。最後,雖然核心的功能並沒有變複雜,但 為了保證核心功能的穩定執行,程式本身的複雜度卻上升了很多。這種要求,頗有幾分類似小朋友的“橫向發展”,所以我把對程式設計師的這種要求稱為“程式設計師的橫 向發展”。
或許是從工作開始就有機會重視“橫向發展”的緣故,所以我長期以來並不認為這是一個嚴重的問題。曾經有朋友告訴我,國內網際網路行業某新興領域排 名三甲的公司,竟然連自己的伺服器上跑的哪個版本的程式都不知道,我還當是笑話。後來見得多了,才知道事實當真如此——與小朋友的“橫向發展”不討人喜歡 類似,許多程式設計師也忽視甚至討厭“橫向發展”,覺得這是在給自己找麻煩,他們認為,把程式碼敲完,往伺服器上一扔,自己的工作到此為止了。至於其它方面,那 是系統管理員的問題。
所以我們見過許多這樣的程式:完全不處理意外情況,各種異常一股腦交給作業系統去處理。也看到很多這樣的程式:自動傳送郵件的程式,不知道自己 每天發了多少封郵件,消耗了多少流量,有一天使用者收不到郵件才知道出了問題;備份資料庫的程式,不會記錄每次備份的開始時間、結束時間、備份檔案大小,有 一天硬碟滿了才發現已經很久不能正常備份了;抓取資料的程式,不知道抓取的成功率、速度、消耗的流量,有一天業務部門說資料很久沒更新了才知道抓取失效 了…… 其實這些功能並不複雜,但總是不夠穩定,而且每次出了問題都不能預先知道,更因為沒有詳細的記錄,又要消耗無數的人力物力去解決。在一些稍微複雜的系統 裡,不少程式設計師每天的工作內容就是這樣的重複勞動,伴著無休無止的抱怨…… 更糟糕的是,這樣的程式設計師業餘時間還在積極學習,希望在把語言工具掌握得更熟練,學會更多的語言和工具,卻不知道問題的癥結在於自己缺乏“橫向發展”的意 識。
我仔細回憶自己小時候,家長和老師會在一種情況下提倡“橫向發展”,那就是要求身板像“豆芽菜”一樣的同學多鍛鍊,成長結實一點。同樣的道理, 如果程式設計師覺得自己寫出的程式像“豆芽菜”一樣沒有底氣、不能放心,與其繼續鑽研新語言、新技術,倒不如抽出精力去“橫向發展”一把。
相關文章
- “全棧” 程式設計師如何發展?全棧程式設計師
- 1024程式設計師節:向改變世界的程式設計師致敬程式設計師
- 1024程式設計師節,向1G棒的程式設計師致敬!程式設計師
- 2019 PHP程式設計師發展路線PHP程式設計師
- 程式設計師是吃青春飯的?一張圖道盡程式設計師的發展方向程式設計師
- 程式設計師職業發展方向有哪些?程式設計師
- Java程式設計師的五個職業發展方向Java程式設計師
- 談一談程式設計師的職業發展路線程式設計師
- 程式設計師職業發展之路思考:工程師的等級階梯程式設計師工程師
- 也談談內卷化、996和程式設計師的發展996程式設計師
- 好程式設計師前端教程-javascript的物件導向程式設計師前端JavaScript物件
- 好程式設計師前端分享HTML5 發展史程式設計師前端HTML
- 程式設計師簡歷探秘,java語言發展前景程式設計師Java
- 程式設計師自我發展之路:從態度到方法程式設計師
- 好程式設計師Java教程分享Java物件導向與程式導向程式設計師Java物件
- 硬體程式設計師和軟體開發程式設計師相比,哪一個就業發展前景比較好呢?程式設計師就業
- UI設計師未來的發展趨勢UI
- 以前的程式設計師,現在的程式設計師程式設計師
- 漫畫 | 老淚縱橫,程式設計師的15個真實瞬間程式設計師
- 程式設計師程式設計入門,物件導向需要知道這6點!程式設計師物件
- 程式設計師天天 CURD,怎麼才能成長,職業發展的思考 ?程式設計師
- 好程式設計師分享5G對web前端發展的影響程式設計師Web前端
- Web前端程式設計師的發展方向,不然到了30歲又迷茫了Web前端程式設計師
- 程式設計師的8個職業發展方向,瞭解一下!程式設計師
- Java程式設計師職業發展應該怎麼規劃Java程式設計師
- IT程式設計師大多性格內向不善交際嗎?程式設計師
- 幽默:內向+AI對話=10倍程式設計師AI程式設計師
- js非同步程式設計發展JS非同步程式設計
- 資深架構師講述:3—5年程式設計師的發展和出路在哪裡?架構程式設計師
- 美女程式設計師觀點:程式設計師最重要的非程式設計技巧程式設計師
- 普通程式設計師和厲害程式設計師的差距!程式設計師
- 程式設計師天天 CURD,怎麼才能成長,職業發展的思考(2)程式設計師
- 程式設計師何苦為難程式設計師?程式設計師
- 專科程式設計師,學歷可能會成為發展障礙程式設計師
- 程式設計師有哪些發展方向?linux運維入門學習程式設計師Linux運維
- 【1024程式設計師節】程式設計師,你學程式設計的初衷是什麼?程式設計師
- 頂級程式設計師推薦的程式設計開發書籍【整合】程式設計師
- 一個老程式設計師的程式設計之路,寫給年輕的程式設計師們程式設計師
- 網際網路假大牛橫飛:程式設計師最爛程式碼排行榜!!!程式設計師