今天又读了励志文章。。说是无论任何职业,只需训练10000小时便可达到世界顶尖水平。
其实这个理论很早之前在《读者》上看到过,说是训练3000小时可达到专业水平,训练10000小时可达到世界级别。当时虽然看得热血沸腾,可惜很快就把这事情忘记了。
不管怎么说,莫名其妙的再次被点燃了。果然励志文章就是像吸毒一样有效啊。。
虽然从初中开始玩VB和TURBO C,到目前为止,总共练习过多少个小时编程呢?估计不多。上大学之前,每个月能练习几个小时就不错了。对什么都只是一知半解,并且只能在家长不在的时候偷着做些实际的coding。大学四年确实做了一些项目,不过大一大二其实还是混混为主,每天能有2小时的练习时间就差不多了。算上寒暑假之类,只能给算1小时每天。大三大四开始有加班加点干活的习惯了,并且假期的时间基本上也都慢慢利用起来了。 可以算每天工作2小时了吧。这样算来,到目前为止我在程序技能上的训练大概是2千小时左右。
所以今后什么打算呢?在北京实习的时候我发现每天工作4个小时是效率最高的。虽然在公司蹲着的时间可能要10个小时都不止,但实际上coding的时间其实差不多也就4个小时。除了自己开小差之外,还要开会,跟同事和boss交换意见汇报情况问问题或者解答问题,发邮件到其他部门询问接口变化或者bug修复情况等等等。。。总之我给自己定的要求不会太高,就是4个小时。
说实话,在学校读书这段时间,想要保持4小时工作时间还是很有困难的。毕竟白天还有课,还要应付考试和做作业。
假如白天上一整天课的话,从7点开始工作做到11点休息,是4个小时,不过考虑到开小差的情况,周末需增加工作量。也就是说,能满足每周工作28小时就可以了。根据我的课程表,一周有两天是全天课有三天是全天休息,于是工作计划定为2h 4h 4h 2h 6h 6h 6h 就差不多了。假如能坚持每天4小时工作5年的话,就能达到7000多个小时的训练量,加上大学积累的2000小时左右就能接近10000小时这个数字了。怎么样,想想就热血沸腾吧。。
不过这个目标是不可能做到的,因为这4个小时的训练,必须练习的是自己不熟悉的内容。而毕业之后进入公司,多半是重复劳动,不可能让你一直学新东西的。当然工作之余可以自己参与开源项目或者玩topcoder, 但精力有限是不可能做到足额时间的。因此这个计算要折半。假如我保持旺盛精力不断学习不断努力工作的话,10年之后就能接近10000小时的训练积累了。
接下来是内容。每天训练4个小时,做什么内容呢?五年这么长的时间是无法预计的,不过我可以考虑今年的目标。我现在手头有一个网站外包项目,一个RFID课程项目,一个uC/OS单片机移植项目,说起来都算是不熟悉的内容,在12月份之前完成,只需高密度工作就能保证训练时间了。之前的AIIDE比赛虽然结果很糟糕,但无论如何已经开始学习机器学习的知识了,接下来就是把他写成论文,先解决研究生毕业的问题,然后看看是否有其他的事情可以做,或者是否有兴趣相投的同学一道共同探讨。说到比赛,chaosBB同学成绩不错啊,这里先祝贺一下,有机会希望能跟你多交流切磋呢~
除了开发和工程的训练,另一方面就是领域知识和学科知识。帮老师做网站外包,看似只是苦力,但我认为这是了解商业领域知识的大好机会,尤其这次项目涉及到在线付款仓储物流等种种内容,能学到的东西应该不少。接下来我那个超级能忽悠的导师又接到或者正准备接好几个项目,有团购相关的,有物流平台相关的,能继续帮他做是情的话,对商务领域的知识学习一定是有帮助的。
至于学科知识,这就要靠个人修为了。本来打算在浙大这两年把zoj的题好好刷一刷,谁知道一进校门项目就这么紧,并且在校时间缩短成不到一年,估计是没时间练习了。不过技术文章一直都在看,对算法的理解慢慢在深化。我越来越发现,其实真正重要的不是掌握很多花哨的算法和数据结构,而是要对算法的基本常识理解得更加深入,对一些最基本最简单的算法要有更深刻的理解和认识。最初学算法的时候,我对线性结构和顺序访问不屑一顾。觉得二叉树啦堆啦快排啦什么的多牛逼(嗤之以鼻的同学请自行替换成线段树、斐波那契堆、哈希等等更高级物。。。),为何还要看这些几乎算不上算法的算法。可是经过几年时间慢慢熟悉了这些东西,最初那种对高级算法的新奇劲过去了,才发现其实朴素才是美。所谓kiss才是真。归根结底,真正常用、强大而有效的数据结构只有三种,数组,链表和堆栈。而数组又是基本的基本。很多高深的算法,其实只是更加高效的利用数组;很多神奇的数据结构,无非也是以某种顺序存储在数组里。这也是更多小时的训练带来的效果吧。以此而论即使没有更多的时间去刷zoj,能把对算法的理解领悟一点一点用到工程中去并且不断精雕细琢的话,算法的修为一定能有长进的吧。实习期间做的恰好是性能分析,感觉对复杂度、性能瓶颈等问题的嗅觉更敏感了,也写了一些小工具去分析代码质量。以后继续保持严谨的开发习惯的话,这些技能的提高应该能继续吧。
前一节讲的是算法,学科知识当然不只这个了,只不过这个是基础。此外必修课当然是操作系统和网络,好在学嵌入式学单片机学驱动开发学物联网,这些知识在校在职应该都会慢慢接触。至于机器学习作为我的研究兴趣点,在可预见的两三年内应该也会继续钻研。另外保持大量阅读技术类的新闻的话,也会磨砺自己的技能吧。因此每天花在reader上的2小时,绝不算是白费呢。
最后说说英文吧。假期里下载了一堆futurama,没有字幕,完全是裸看的。一开始很难熬,一集要反复看两三遍才看明白什么意思,才尴尬的找到已经笑不出的笑点。。。然慢慢看了几季之后,已经可以几乎不费力的理解大部分内容,并且确切知道生词出现在什么位置。甚至可以边看边给弟弟做翻译。。后来打星际,上战网看贴,感觉已经没有以前读英文的那种畏难情绪了。慢慢熟悉之后感觉读英文并不比读中文累多少,当然速度还比不上中文啦,毕竟有生词这个障碍。这就是更多小时的训练的反馈吧。以此作为激励,其他的事情也是一样的,只要坚持努力,一定会有好结果的~