1. 程式人生 > >通過「刻意練習」,你才能成為頂尖的程式設計師

通過「刻意練習」,你才能成為頂尖的程式設計師

作家格拉德威爾在《異類》一書中指出:

人們眼中的天才之所以卓越非凡,並非天資超人一等,而是付出了持續不斷的努力。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。

希望我們一起成長,成為頂尖的程式設計師!

原文連結:

https://codingstyle.cn/topics/41