最近读过《学习之道》这本书,作者是乔希·维茨金,曾8次在全国象棋冠军赛中夺魁,后来又获得了国际太极推手冠军。他认为自己在不同领域取得成功,靠的是自己学习的方法。那么作为一个程序员,可以学到什么呢。
画小圈
对于象棋来说,如果从开局开始学起,太多的棋子,太多的行走方式会让初学者无所适从。所以作者的老师教的是从残局开始,这样可以找到最基本的东西,比如一只马在不同时候的作用,与兵该怎样地配合等。作为一个程序员也应该从基本的东西学起,而不是一开始久被大量的api,只是让自己感觉学到了很多。以学习Android View系统为例,你可以记住RelativeLayout,LinearLayout各种Layout的布局使用方法以及TextView,Button的各种属性,但这也可能满足不了你,还得到github上到处找开源的代码库,但是也可以用类似“残局”的方法,花些时间琢磨一个View是如何绘制,如何测量大小,如何布局的,深刻理解后再去使用API,或者方便地写出自己的View。
动机问题
作者学习象棋的目的只是享受象棋给他带来的美妙感觉。学习太极地初衷则是为了放松身体,探索自我。作为一个程序员,想要说完全是为了享受而编程不太现实。但是至少不需要为了赶进度而写出丑陋的代码,让未来的自己和同事都感到恶心。即使有KPI压着,PM催着,你仍然可以为了创造更优雅的代码而创作程序。
利用挫折
作者提到与通过与大胖子练习太极最终战胜的例子。当大胖每次都简单粗暴地将他摔倒在地时,正常人会恼羞成怒,以后就不跟大胖子对打了,但是他利用大胖子来使自己进步。通过经常被大胖摔倒在墙壁上的经历,使自己不再害怕被打败,反而可以冷静下来,自己琢磨这个过程中的动作,最终打败了大胖子。在编程时候,遇到难以解决的的bug,可以说这个问题很难解决,直接交给更senior的人,或者可以将这视为提高的机会,仔细研究。遇到不靠谱的产品经理,不妨将这当作提高自己产品方面能力的机会,用心想如果自己做这个产品会怎么做,影响产品经理的选择,也锻炼了自己。
压力与恢复
在下象棋的时候,如果持续长时间的思考,就会作出不明智的决定,“一个有优势的表现者最显著的特征就是有规律地使用恢复期。能在短暂的休息时间放松自己的棋手通常总能最终从比赛的险情中安然脱险。”编程同样也是非常需要注意力的劳动,如果遇到难以解决的问题,可以先喝杯水,休息一下,或者根同事聊一下,等休息完了,或许效率更高。
总结
虽然具体领域不一样,但是如果从人的角度来看,学习这些领域归根到底还是关于人的学习规律。学习一项领域时的方法通常也可以应用到另外的领域。归根到底还是对人的探索。
原文地址: juude.net