我用了笨人的方法,就是把各个门类都学习一下,即所谓的“遍历”。我从网上找到计算机专业的课程表、技术博主们给出的路线图,按图索骥,一个门类一个门类的学习。这个过程有些辛苦。学Python的时候,家里堆了五六本书,翻完这本翻下一本。读《UNIX环境高级编程》时,超级厚的一本书,前后看不到岸。看机器学习时,不能完全理解代码,又回身学习统计…… 但有趣的是,学得多了可以触类旁通。技术的东西很多都相互借鉴。我构建起基础之后,学新的内容,会有熟悉的感觉。比如一门SQL学过,了解了关系型数据库,再看MySQL、安卓和HTML5中的SQLite、R语言中的Data Frame,都似曾相识,难度大大降低。
“遍历”式的学习,需要合理安排时间。首先,闲散的时间可以充分利用起来。等车的时候翻一翻电子书,周末的时候读一读经典,饭后编编代码,技术就是这样点滴积累起来的。其次,好的资料也可以加快学习进度。经典并不一定是最好的学习教材。不同的人喜欢不同类型的资料。即使同一个人,也可能在不同的时间,有不同的阅读偏好。比如早上想读书,下午搜网页,晚上看视频。关键是观察自己。如果自己对当前读的书提不起劲,就迅速切换到其它书籍,甚至其它领域。最后,要花时间固化知识,避免在未来重复学习。做笔记、制作技术总结表、写博客、做项目都是很好的加深理解和记忆的方法。在知识固化方面好不吝啬的投资时间,我们会在未来获得丰厚的回报。
行到半路,我已经不那么畏惧学习技术了。技术是属于每一个普通人的。不用有天才般的头脑,不用有名牌大学学历,更不需要“家传绝学”,我只是持续学习。不知不觉,走入编程的国度。
编程并不难学。现在的编程工具很发达,网上的学习资料又多,在找准方向的前提下,初学者几天内就能做出一个看起来很不错的网站,甚至一个手机App。而我中学时由于网络不发达,连找一个编译器都很困难。但能编写程序并不等于能学好编程。真正懂编程的人,会有丰富的知识储备:对不同形式的编程语言有一定程度的了解、熟悉多种编程工具、了解计算机和互联网的基本原理、熟知算法和设计模式。其实在编程的过程中,用工具把产品做出来只是第一步,后面的改造和优化才是大头。提高性能、改正bug、扩展功能、甚至在工具本身出问题时改造工具,这些任务都需要上面提到的知识储备。所以,编程不难学,但学好编程往往是多年积累的成果。
广泛的知识储备是第一步,第二步是练习。学习基础知识时,往往有一日千里的心情,两天看完一本书,三天学完一门编程语言…… 但其实掌握得并不扎实。只有在具体的实践中,才能把浮在表面的阅读内化为自身的武器。如果一开始就有产品规划,有目的的学编程,往往能学得很快。就算一开始没有做产品的想法,纯粹为学习而学习,也需要做一些练习项目练手。只有在具体编程时,人才能分辨出是否真的学会了。练习项目会花不少的时间。毕竟,读一篇最短路径的介绍文章大概只需要半个小时,实现一下最短路径的算法却需要半天。至于做大型网站、做复杂App,有可能演变成一个无底洞。但整个过程中收获的经验,将是从事编程不可或缺的财富。这个步骤实在是没办法简化省略,只能放平心态,任由代码来蹂躏自己。
写博时,诚实的写自己所想写,别的事情也一样。编程时,我很多次因为担心自己经验不足,迟迟不敢敲代码。真正开始做了,反而就是几个小时的事情。搞摄影,我也因为担心自己水平差,总不愿意出门去拍照片,生怕自己拍的照片被别人笑。因为期望高,所以怕失败,进而不敢尝试,最后反倒不能学好,这简直就是恶性循环。想打破这个恶性循环,我是从尊重和认可自己开始,诚实的做自己内心想做的事情。我学着不去注意心中那些自我嘲笑,把脚步迈出去。渐渐发现,只要自己坚持走,世界都在帮助我前进。
受挫后,不免会有些消沉或想要逃避。我自己经历过,深深知道其中的艰辛。 似乎没有特变有效的“鸡汤”,只记得我当时是咬着牙,强打精神过每一天,在失望中等待并希望。然后某一天就晴了。世途多艰,谁也说不清何时能等到自己的第三段。而那之后,是否又是新的三段循环,永无止境?
只记得《一代宗师》中的话:
念念不忘,必有回响。
无论如何,我在读博的五年时间里尝试了很多东西,不遗余力的野蛮生长,应该知足。经历过错综复杂的事情,认识了许多的人,有收获,也有痛苦的回忆。我感谢那些帮助我的人,更感谢陪伴我的。至于其他人,我也感谢他们带来的磨砺。所有的经历都告诉我,生活中总是好坏参半,自己能做的,不过是尽量泰然处之。但能保持泰然处之的心态,已经足够了。
(摘录于Vamei博客:http://www.cnblogs.com/vamei/)
网友评论