做家格拉德威爾在《異類》一書中指出:前端
人們眼中的天才之因此卓越非凡,並不是天資超人一等,而是付出了持續不斷的努力。1萬小時的錘鍊是任何人從平凡變成超凡的必要條件。程序員
他將此稱爲「一萬小時定律」。面試
要成爲某個領域的專家,須要10000小時,按比例計算就是:若是天天工做八個小時,一週工做五天,那麼成爲一個領域的專家至少須要五年。這就是一萬小時定律。編程
在中國,IT 行業廣泛加班嚴重,先不說行業特徵與企業文化。
就我最近面試的經驗來看,不少程序員的開發效率實在是低到不忍直視。後端
因此「效率」是一個致使加班的重要因素。
若是你效率高,但迫於企業有加班的文化,你徹底能夠用加班的時間來學習一些新的技術,進一步提升本身的效率。編程語言
效率低會引發下圖的怪圈:
效率低 -> 沒法按時完成工做 -> 加班 -> 沒有時間練習 -> 效率愈來愈低。編輯器
要打破怪圈,有效的辦法就是「刻意練習」,今後進入一個正向循環:
效率高 -> 提早完成工做 -> 練習提高 -> 效率愈來愈高。學習
演員在臺上的表演算是練習嗎?球員在比賽場上算練習嗎?不算。
那麼對程序員而言,工做上作項目算刻意練習嗎?大數據
我之前以「能邊學邊作」爲榮,API、語法之類的不必看,反正咱們有 Google 和 Stack Overflow 嘛。
直到我參加了 Hackthon 以後改變了這個觀點。在極短的時間內,要把一個創新的想法,用技術手段實現出來。
這個時候若是你還在查某個接口應該怎麼用,某個語法應該怎麼寫,能競爭得過別人嗎?編碼
現實工做中未嘗不是如此?商業競爭如此激烈,假設你要作個推薦系統,你是找作過的來作,仍是邊學邊作?
因此我認爲練習應當發生在工做以外,一旦上了戰場,不是你死就是我活。
並非全部的練習都是有效的,沒找準地方,只是在浪費時間。
好比,我用吉他彈一首曲子時,某個小節總是彈很差,我就會單獨把這一個小節拿出來重複練習,而不是把整首曲子一遍一遍地重複練。
專家研究代表,只有在「學習區」練習才最有成效。
咱們應當走出溫馨區,多在學習區練習,將其變成溫馨區;
接觸恐慌區,將其慢慢變成學習區。
這樣才能避免原地踏步,持續提升。
首先要走出本身的溫馨區,接觸一些不熟悉的技術領域。好比後端很熟悉了,去寫寫前端試試。Web 很熟悉了,去寫移動端試試。
業務開發很熟悉了,去研究一下搜索,推薦系統,大數據試試。OO 很熟悉了,玩 FP 試試。
老守着本身會的那點兒東西,總有一天會坐吃山空。
有如下方式:
錄視頻
Code Review
結對編程
參加編程道場
沒有對比,很難發現本身的不足,因此把本身的代碼和編碼過程展現出來,必定會發現許多能夠改進的地方。
只有菜鳥纔會以爲本身特別牛,由於物以類聚,他的圈子裏全是菜鳥。
你越牛,接觸的圈子也越牛,你越會以爲本身眇小。
程序員要練習東西不少,一些基本功以下:
打字
編程語言
編程範式
編輯器
快捷鍵
TDD
Clean Code
重構
...
我第一次組織 Code Retreat 的時候,到 QQ 羣裏宣傳活動,結果獲得的是嘲諷:
週末還在寫代碼,確定是屌絲。
不少人沒有時間練習,卻有大把的時間打 LOL,大把時間在羣裏吹水,大把時間討論樓市股市。
固然,人都有選擇本身生活方式的權利,並無誰對誰錯。
說這麼多,只是但願真正熱愛編程的同窗們知道,只有經過刻意練習,纔有可能成爲頂尖的程序員!
在 CodingStyle.cn 這個社區裏,咱們會組織 Code Review,Code Retreat,Coding Dojo。
但願咱們一塊兒成長,成爲頂尖的程序員!
「軟件匠藝社區」旨在傳播匠藝精神,經過分享好的「工做方式」和「習慣」以幫助程序員更加快樂高效地編程。