我对毕业生的期望 之 唯快不破
上次我说到 对毕业生的三个期望 ,第一样就是“编程要快”。之所以要特别强调“快”,因为绝大部分毕业生真的太慢。
慢,首先就体现在键盘速度上。我们的毕业生有一天晚上几个人凑在一起比拼键盘速度,在 typing.io 这个网站上用”Java Guava“这道题目来比。女孩们纷纷报出 17、19、20 这样的分数(单位是“词/分钟”),有个小伙子打出 27。然后小姑娘们硬要拉我试一试,于是我试了一局。57 分。
也许你会嗤之以鼻:我是知识工作者,又不是搬砖的码农,比键盘速度有什么意义?错!大错特错!为什么?我们都知道,编程时很难把所有细枝末节都想清楚,大家都是想好一个大概方向,然后一边做一边展开细节。也就是说,你对一个编程问题的思考,是在编码的过程中不断进行的,细节展开到什么程度,你的思维就延伸到什么程度。所以,键盘速度会决定你思维的速度。你思维敏捷?对不起,没有用,因为问题细节还没展开,你没法对它进行思考,你的脑子就只能等着。
速度一慢,直接的结果就是时间要拉长。就以这几个毕业生来说,我敲键盘的速度就有他们两倍、三倍快,如果再考虑我对快捷键的熟悉程度,出代码的速度能有他们七八倍甚至十倍——和知识、经验都无关,纯粹就是出代码的速度。换句话说,同样一个简单的问题,大家都理解了应该怎么解决,我 5 分钟之内把代码写完,这些同学们就要写 40~50 分钟。这四五十分钟他们要一直保持对这个问题的专注思考,而同样程度的专注思考我只需要保持五分钟。这就是为什么小菜鸟们经常说工作一天很累、经常在解决问题解决到一半时找不到方向:因为速度太慢。键盘速度慢就会成倍地拉长大脑专注于一个问题的时间,就会成倍地增加大脑的负荷。本来小菜鸟们知识、经验就缺,还用这种方式让大脑疲劳,当然很快就倒下啦。
键盘的速度会决定思维的速度,从而决定你的人生节奏,这绝不是危言耸听。想想看,我们把每天最好的八个小时用在工作上,而在这八个小时里,一个人每小时能思考和解决两个问题,另一个人只能思考和解决一个问题。那么一年过去,这两个人的差距会有多大?答案是,后者要比前者少思考和解决将近两千个问题!你想想这两个人工作一年之后会有多大差距。而造成这种差距的,很可能就是因为键盘速度的差距。
那么,要怎样提高键盘速度?答案非常简单一个字:练。找一道编程题目,不要太难也不要太过简单,CodeKata(请自行 Google)的题目就很不错。先实现一遍,找老同事帮你 review 代码,把不好的地方重构好。然后就反复练,每天至少练一遍,练的过程中不准动鼠标,所有操作必须用快捷键完成。每练一周,找老同事结对一次,从对方的动作中反思自己的动作是否最优化。
效果是怎样呢?有一道题目,第一次做是一个小时没做完,练过一周大家的速度是十多二十分钟,再练一周大家的速度是三五分钟,最快的同学两分多钟。总之,最后要练到这样的速度:拿到一个问题,一边嘴上喃喃自语,一边手上就把嘴里说的东西实现出来,这时候你的思维才算不被双手束缚,你才进入一个基本的学习和思考的状态。