为什么要写这篇文章
最近无意中看到了一篇文章,,这篇文章的作者的经历非常的奇特,很晚才开始接触数学,最后却成为了工程系的教授,她结合自己的经历对学习的方法进行过深度的总结,写过 学习之道 一书,她在 Coursera 上面的课程也是特别受欢迎。往往我们在学习,特别是学习数学、编程、工程类学科的时候,经常感受到自己不如别人,我们往往会把原因归结到一些天生的或者说是很难改变的方面,类似理解力、逻辑能力、智商之类的,这样貌似可以给自己一个很好的解释,但是这往往并不是根本的原因,虽然让你可以一时解脱,但却没有达到让你自己成长的效果。我曾今就是这样过来的,当然也很庆幸看到自己现在的改变,我想借着这个机会聊一聊,在学习编程,或者说学习技术知识时,什么才是最重要的,什么才能让你保持对学习的热情和坚持不懈的精神。
智商与思维能力真的特别重要吗
“智商高,思维能力强”,这样的素质我相信是每个人梦寐以求的,思考一道难度较大的算法题,如果是在相同的水平和条件下,“聪明” 的人肯定更胜一筹,这么说或许没错,但是你有没有想过,那些算法竞赛大牛,国际象棋大师,他们比赛的时候真的是完全靠着高超的理解能力和思维能力去获得比赛的胜利吗?其实他们更多的是靠的 “直觉思维”,什么是 “直觉思维”?举个例子,就是到了中午我就会想着要去吃午饭,开车前我就会想着要系安全带。这些东西可以说是不需要经过大脑思考的,但是你就知道要那么做,其实更恰当点应该说是记忆而不是思维,我们定义这种记忆为 “肌肉记忆”,做的多了,就记住了,而且不需要经过大脑。往往我们看到的那些能力过人的人,他们基本上都是凭借着这样的记忆方式来提高自己的能力。这种方式是怎么提高自己的能力的呢?答案就是重复。
当然我这里说的重复并不是指每天吃饭睡觉那种重复,吃饭睡觉这种重复是不带有任何反馈、思考、总结性质的重复,这种重复做 10 遍和做 100 遍没什么差别。每重复做一件事情,我们要想想根据之前做过的经验分析,这次怎样做才会更好,避免被一个石头绊倒多次。这里你可能会说了,最开始做一件事,或者学习一个东西不就需要智商与思维能力吗?的确,不得不说,智商高的,聪明的人学习新的知识和技能会相对来说比较快,但是你需要记住的是理解和做好是两码事,知道和熟练是两码事。前者可以通过思维能力短期做到,但是后者只能是长期坚持重复。了解人脑构造的话,你会发现短期的刺激是最不靠谱的,想要真正记住一个东西,并让其达到条件反射的效果,必须是长期的刺激,注意这里我并不是说思维能力一点都不重要,我只是说有了思维能力是远远不够的,你想真正地出色出彩,还是有很长的路要走。一个顶级的象棋大师脑袋里面会存有成千上万盘棋局,一个顶级的算法竞赛程序员脑袋里面肯定存有成百上千种算法题型,这些东西才是他们成功的关键。
带有目的地去做一件事情真的好吗
有目标是好事情,但是诚实地问自己,做一件事情的初衷是什么,最终的目的是什么?有些人学习编程单一就是为了找到一个薪水不错的工作,拼命干活也都是为了薪水和职位高低,这些人的目的很明确,就是为了钱,努力赚钱这本没错,通过自己的坚持和付出,你最后是可以获得你想要的东西,这是值得赞赏和鼓励的。但是我想问的是,你真的快乐吗?或者说,你的快乐是建立在最后获得的那些金钱和荣耀上,还是建立在编程本身上?最好的情况应该是两者都有,如果仅仅是看着最后的结果,不去感受发现编程的本质,以及它的 “美”,那么即使有非常好的结果,这个过程对你来说也将会是痛苦和枯燥的,很难说能不能坚持下来。
其实学东西、做事情和人际关系是类似的,如果维系两个人关系的只是利益和一些表面的价值,那么这段关系将会由于这些利益和表面的价值的改变而改变,为什么普遍说很难和自己的上司、老板深交,成为知根知底的好友,我想大概也是因为这段关系里面有着大量的利益关系,你们的关系的建立和维持也是围绕着这些共同的利益而展开的,当然也有例外,这就需要双方去发现彼此身上的其他价值点。做一个事情也是一样,问自己几个问题,“如果程序员的收入大幅下降,你还会继续编程吗?”,“过 10 年以后,程序员将会被取代,你还会孜孜不倦地研究编程吗?”,“如果你现在突然间成为了亿万富翁,你还会继续编程吗?”。或许你会说,刚开始选择编程不就是因为现在的发展行情吗?没错,刚开始不了解一个东西,肯定需要一些外界的指标和建议,但是我想说的是,支持你继续走下去,开心地长期地走下去的肯定不是这些外界因素,就好比把编程当成一个人,你需要去发现她的闪光点,以及你们彼此契合的点,试着去了解她,更好地跟她交往,你投入了时间精力去发展你们之间的关系,相信她也会感受的到,然后也会给你相应的反应和回馈,走着走着,有一天,你突然发现你好像不知不觉达到了之前定下的目标,但是你也发现你越来越离不开她了,回过头去,看自己走过的路,回忆里面存留的只是那些美好的片刻。
好奇心是什么
我的理解,好奇心就是对一件事情想知道一个究竟,即使是再普通不过的事情。我们经常说,我们要保有对一件事情的好奇心,这其实是一个很好的习惯,因为好奇心是促使你去了解,学习一个东西的起始点,它会激发你对学习、认识一件事情的欲望。那么如何提高自己的好奇心呢,途径只有一个,那就是多问为什么,例如,“为什么这段代码要这样写,而不是那样写”,“改变这个值会不会产生不一样的结果?” 等等。我们常常说要按照规则做事情,这才不容易犯错,但是做事归做事,在做好事情的基础上,必要的思考还是要有的,不然的话做事就会成为徒劳的重复,何谈进步,何谈创新?不管是在工作当中,还是在生活当中,尝试不断地去思考其中的不完美,能改变的,就试着去改变,相信我,你会时常收到惊喜。你会发现这个世界竟是如此的有趣,有着太多太多等着自己去发现的奇迹。
总结
算从学校开始,真正接触编程满打满算应该有 3 年了,从一开始的迷茫,到之后的困惑,再到现在的糊涂,从来都不认为自己是个聪明人,也总觉得时间好像不太够用。我只能说自己还有很长的路要走,当然也会有更美丽的风景在等着我,我有理由坚持下去,或许过个 10 年,20 年再回过头来看,又会是不一样的感受。希望这篇文章能够帮助那些在学习编程道路中迷失方向的人。