我對畢業生的期望 之 唯快不破
上次我說到 對畢業生的三個期望 ,第一樣就是“編程要快”。之所以要特別強調“快”,因為絕大部分畢業生真的太慢。
慢,首先就體現在鍵盤速度上。我們的畢業生有一天晚上幾個人湊在一起比拼鍵盤速度,在 typing.io 這個網站上用”Java Guava“這道題目來比。女孩們紛紛報出 17、19、20 這樣的分數(單位是“詞/分鐘”),有個小伙子打出 27。然后小姑娘們硬要拉我試一試,于是我試了一局。57 分。
也許你會嗤之以鼻:我是知識工作者,又不是搬磚的碼農,比鍵盤速度有什么意義?錯!大錯特錯!為什么?我們都知道,編程時很難把所有細枝末節都想清楚,大家都是想好一個大概方向,然后一邊做一邊展開細節。也就是說,你對一個編程問題的思考,是在編碼的過程中不斷進行的,細節展開到什么程度,你的思維就延伸到什么程度。所以,鍵盤速度會決定你思維的速度。你思維敏捷?對不起,沒有用,因為問題細節還沒展開,你沒法對它進行思考,你的腦子就只能等著。
速度一慢,直接的結果就是時間要拉長。就以這幾個畢業生來說,我敲鍵盤的速度就有他們兩倍、三倍快,如果再考慮我對快捷鍵的熟悉程度,出代碼的速度能有他們七八倍甚至十倍——和知識、經驗都無關,純粹就是出代碼的速度。換句話說,同樣一個簡單的問題,大家都理解了應該怎么解決,我 5 分鐘之內把代碼寫完,這些同學們就要寫 40~50 分鐘。這四五十分鐘他們要一直保持對這個問題的專注思考,而同樣程度的專注思考我只需要保持五分鐘。這就是為什么小菜鳥們經常說工作一天很累、經常在解決問題解決到一半時找不到方向:因為速度太慢。鍵盤速度慢就會成倍地拉長大腦專注于一個問題的時間,就會成倍地增加大腦的負荷。本來小菜鳥們知識、經驗就缺,還用這種方式讓大腦疲勞,當然很快就倒下啦。
鍵盤的速度會決定思維的速度,從而決定你的人生節奏,這絕不是危言聳聽。想想看,我們把每天最好的八個小時用在工作上,而在這八個小時里,一個人每小時能思考和解決兩個問題,另一個人只能思考和解決一個問題。那么一年過去,這兩個人的差距會有多大?答案是,后者要比前者少思考和解決將近兩千個問題!你想想這兩個人工作一年之后會有多大差距。而造成這種差距的,很可能就是因為鍵盤速度的差距。
那么,要怎樣提高鍵盤速度?答案非常簡單一個字:練。找一道編程題目,不要太難也不要太過簡單,CodeKata(請自行 Google)的題目就很不錯。先實現一遍,找老同事幫你 review 代碼,把不好的地方重構好。然后就反復練,每天至少練一遍,練的過程中不準動鼠標,所有操作必須用快捷鍵完成。每練一周,找老同事結對一次,從對方的動作中反思自己的動作是否最優化。
效果是怎樣呢?有一道題目,第一次做是一個小時沒做完,練過一周大家的速度是十多二十分鐘,再練一周大家的速度是三五分鐘,最快的同學兩分多鐘。總之,最后要練到這樣的速度:拿到一個問題,一邊嘴上喃喃自語,一邊手上就把嘴里說的東西實現出來,這時候你的思維才算不被雙手束縛,你才進入一個基本的學習和思考的狀態。