國外有個詞叫作10x Programmer,直譯是以一當十的程序員。我並不認爲一個技術大牛能完成10個普通程序員的工做,技術大牛會花1/10的時間把工做作完,而後用剩下9/10的時間平衡生活、愛好和將來,因此我僅把10x Programmer叫作10倍速的程序員。 java
也許有人會以爲這種定義太過狹隘,沒錯,確實狹隘。不一樣的程序員處在不一樣的技術水平階段,有着不一樣的人生追求和生活訴求,我謹以此文讓你們換個角度去審視這個職業,也許你會有些感觸和啓發。 python
這是我很喜歡的這句英文,保持清醒。我但願全部人都能作到工做和生活的平衡,有更多的精力去作本身愛作的事,陪本身愛的人。這是本文的最終目的。 nginx
業界有句話叫作「不要重複造輪子」,人類就像一臺內存有限、CPU有限、硬盤有限的服務器,既然能夠選擇調用API,就不要試圖在本地跑各類服務,那樣只會讓本身變得臃腫、耦合、滿負荷。 git
像Beyond Compare(代碼比較合併), Notepad ++(關閉時無需保存), Chrome(現代瀏覽器), ×××(google必備), FastStone Capture(截屏、測量、錄屏、取色等)、Chrome 翻譯插件(快速翻譯網頁英文)、反編譯工具(不一樣語言開發者各異)、CookieInjector(cookie注入工具)等。這些工具能夠說是程序員必備的,沒有下載的能夠下載,最後一個在github裏搜。 程序員
不要記憶。這個觀點一樣狹隘。但我認爲把JDK源碼看一遍這種事大可沒必要去作。若是你把JDK裝載腦子裏佔用了太多"硬盤"不說,還浪費了過多精力。我建議的作法是索引。還記的索引的定義嗎?它就像是一本書的目錄。我一般會記一遍JDK的API列表,知道哪一個Function對應在哪一個庫裏。當須要的時候去取就能夠。我相信作過數據庫的都應該知道索引的意義和用處。 github
舉例來講,你記住concurrent包是用來處理多線程的,你記住反向代理有nginx、Apache,你記住python適合計算、Java庫比較多、C++適合原生、Zepto適合移動終端、XML比Json佔用更多字節、SVG比PNG更適合比例放大、不管Mysql/Oracle/SQLite/Cubrid都是ANSI SQL相似這樣就足夠了,用什麼纔去取什麼,無需都記在腦子裏。只需記住,在哪裏能找到答案就能夠了。 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吧。