來源:岑文初
下班前一路和震子走,一路還在吐槽,事情倒真的非常小,但心裡卻真的替很多跟著我們這批“老骨頭”做事的新人擔心,所以想說一點自己的真心話:做個coder其實很簡單。
實在人說實在話,衡量一個負責業務系統程式碼質量最容易量化的就是:
1、新增,刪除,修改一個功能和業務要動多少部分的程式碼?多少程式碼是重複或者類似的修改?
2、排查問題的時候是否可以用排除法“解除安裝”模組,按需測試?
隔離,重用,主從邏輯區分。(前兩者不多說,最後一個很容易被忽視,例如做一個合法的公民從來不會告訴你應該做什麼,而會告訴你不要做什麼,而違反上面第一條的很多時候不是程式碼不復用,而是主從反置,最後使得主流程的修改不斷的在分支流程上去做判斷)
額,至此為止,我可以很負責的說,你所學的大部分模式就是用來幹這個的,而你只要奔著這個目標去做事,不僅能夠學會那些書上的模式,而且還能夠按需裁剪,因為雨天撐傘是嘗試,風向不同傘要傾斜是技巧。
接著你就開始因為做業務不斷的接觸各種內容:檔案,IO,Load,壓縮演算法,tcp,http,快取,db,資料流,一致性…,好像很雜,是的因為我們 在做業務,我們在積累我們寶貴的“經驗”,往往這個時候是兩種程式設計師分叉的開始,都是做業務,有些關注完成任務,有些關注細節,這些細節就是我所說的上面 那些那些雜物。
接著,那些關注細節的人得到了更多的空間和機會,接觸到更多的問題,面對效率,可用性,一致性等問題在設計上開始擺脫最初學到的隔離,重用,而開始學會權 衡(業務的取捨,所謂的優雅和長久的取捨),開始學會用他經歷過的“雜學”來改變程式設計無法改變的問題,最後經歷過了一系列痛苦的反覆,最後留下了更多 的所謂的“感覺”。
而當經歷過這一切的時候,再去擴充更多的領域,領會不同語言和場景的差異和特徵。這時候會發現這樣的人學新東西非常快,原因兩點:1.任何程式的載體就是 前面說的“雜學”(最後歸一無非就是二進位制流及一些協議,演算法和硬體)。2.語言的融合和借鑑早已深入各種語言內部 (java,python,js,objective-c,c#等等),因為語言就是用來利用“資源”表達思維的方式。
好了,其實我想說,做個程式設計師很簡單,而每一個帶兄弟的人要為兄弟成長負責不是在晉升的時候拉票,不是在飯桌上灌酒,應該是告訴他們我們走過的路。
後續
前兩天,效能測試的一個同學旺旺我:放翁,我壓 jetty 上的一個應用,加大了併發使用者,dump 出來還是16個jetty的io執行緒,是不是我配置的有問題?配置截圖給我看了一下,執行緒池配的不小。我說,一個你把當前應用去掉,用一個模擬的簡單應用放在上面,然後調整模擬應用的響應時間然後壓壓看,執行緒會不會變化。結果變化了,然後知道了。上一個帖子看起來我象是行為論者,只要能幹出活來,就是可以成長,其實我少說了一點:“天資”。
記得神相過去會常常和我聊關於團隊內部人員將來成長的看法,有些人我就很直白的和他說:“天資”不行!他總是會笑笑搖搖頭。其實我所謂的“天資”,就是對事情的敏感性,簡單來說任何一個人最早做壓力測試看到的都是各種資料表象,動手是初始學習最基本最必要的,但當有大量的結果展示在面前的時候,就需要更多的去考慮資料背後的內容,而且你會發現,往往那些內容在不同場景下是不同的,就好比以前說了一句廢話:效能瓶頸是會移動的,優化只是讓一個漏斗變成一個管子。”天資“不是一天養成的,但是錯過了培養“天資”的歲月,那麼只能接受被生活趕著走的現實了。
因此當你正在經歷,幸福的享受著經歷,不要看著比你老三五年的人幸福的享受著“Leader”的生活,因為他們已經經過了這個階段,他們不能回頭,只能接受自己過去的積累給自己的未來帶來的“好”或者“不好”。