如何成為10倍速的程式設計師

caiyongji發表於2017-12-20

國外有個詞叫做10x Programmer,直譯是以一當十的程式設計師。我並不認為一個技術大牛能完成10個普通程式設計師的工作,技術大牛會花1/10的時間把工作做完,然後用剩下9/10的時間平衡生活、愛好和未來,所以我僅把10x Programmer叫做10倍速的程式設計師。

也許有人會覺得這種定義太過狹隘,沒錯,確實狹隘。不同的程式設計師處在不同的技術水平階段,有著不同的人生追求和生活訴求,我謹以此文讓大家換個角度去審視這個職業,也許你會有些感觸和啟發。

Keep You Sane

這是我很喜歡的這句英文,保持清醒。我希望所有人都能做到工作和生活的平衡,有更多的精力去做自己愛做的事,陪自己愛的人。這是本文的最終目的。

善用工具

業界有句話叫做“不要重複造輪子”,人類就像一臺記憶體有限、CPU有限、硬碟有限的伺服器,既然可以選擇呼叫API,就不要試圖在本地跑各種服務,那樣只會讓自己變得臃腫、耦合、滿負荷。

像Beyond Compare(程式碼比較合併), Notepad ++(關閉時無需儲存), Chrome(現代瀏覽器), VPN(google必備), FastStone Capture(截圖、測量、錄屏、取色等)、Chrome 翻譯外掛(快速翻譯網頁英文)、反編譯工具(不同語言開發者各異)、CookieInjector(cookie注入工具)等。這些工具可以說是程式設計師必備的,沒有下載的可以下載,最後一個在github裡搜。

不要記憶

不要記憶。這個觀點同樣狹隘。但我認為把JDK原始碼看一遍這種事大可不必去做。如果你把JDK裝載腦子裡佔用了太多"硬碟"不說,還浪費了過多精力。我建議的做法是索引。還記的索引的定義嗎?它就像是一本書的目錄。我通常會記一遍JDK的API列表,知道哪個Function對應在哪個庫裡。當需要的時候去取就可以。我相信做過資料庫的都應該知道索引的意義和用處。

舉例來說,你記住concurrent包是用來處理多執行緒的,你記住反向代理有nginx、Apache,你記住python適合計算、Java庫比較多、C++適合原生、Zepto適合移動終端、XML比Json佔用更多位元組、SVG比PNG更適合比例放大、無論Mysql/Oracle/SQLite/Cubrid都是ANSI SQL類似這樣就足夠了,用什麼才去取什麼,無需都記在腦子裡。只需記住,在哪裡能找到答案就可以了。

善於記錄

即使你的思維再清晰,也需要記錄。正如“好記性不如爛筆頭”這句俗語所說。把需要做的工作,手頭做了一半的工作記錄下來,然後可以迅速的切換自己的思維到生活狀態。當然,翻開自己的TODOs也可以迅速切換回工作狀態。現在手機電腦都可以下載各種各樣的記事本,像Evernote、有道雲筆記這種有checkbox、列表的,完成一項勾一項。

部落格。這種最原始內容載體,開放於網際網路,不限於某個產品的生態圈。在你記錄部落格的同時,你重新審視了自己的技術,並且為了複述清楚,你會更加謹慎的思考技術邏輯。同時,假如你陷入了某些思維誤區,會有熱心的朋友幫你指出,共同進步。

設定鬧鐘

程式設計師都是專注的。即使你生性不是如此,也會在長期的職業生涯中漸漸變得專注、謹慎、注意細節、邏輯清晰。但是正因為這份專注你可能陷入思維的死迴圈中。當你低頭專注於某項技術的時候,外界的技術每天都在快速的迭代、增長、創新。正式這份專注可能會讓你錯過很多東西,就好像一個bug巢狀另外一個bug,你整天都在解決bug,然後就陷入了遞迴、for、do...while裡面去了。你需要設定一個觸發器(trigger?break?whatever),讓自己跳出自己的思維,重新認識這個世界。這裡我說的不僅僅是技術,而是一種思維,跳出程式設計師的思維,也許……你會有女朋友的。

鬧鐘的作用就是叫醒你。當你無法解決一個問題是,放下,換個角度,也許用10分鐘就可以了,而不是你鑽研一個晚上。

廣交朋友

技術是不分城市、國界的。有時候與其閉門造車,不如結交一些像尤雨溪、stormzhang、justjavac、Sean Larkin、caiyongji這樣的人。他們的觀點和技術分享是引領國內技術潮流的(雖然最後一個比較渣),和他們探討技術也是別有一番樂趣。我有幸有上面其中幾位的微信,比如caiyongji的微信是takeurhand。

當你遇到技術難點需要攻克的時候,可能牛人們已經遇到了,與其上網搜尋,不如直接和牛人們探討。

善用口訣

口訣是需要記憶的東西。比如快捷鍵、JVM優化方法、SQL的執行順序、資料庫分庫分表技巧、鎖的原理、記憶體結構。這些是IT界的元素週期表。

放棄完美

String和StringBuffer的區別並不是很大,如果不是在大量重複的迴圈語句中,不要在乎那點記憶體浪費。不完美的成果會在快速迭代中解決。也許你過度優化的時間成本足夠為伺服器加一條記憶體了。

Relax! 準備好迎接你的2018吧。

相關文章