除了拼搏和努力,成功也是有方法的。写这个话题,用以阐述下自己学习新技术的一套形而上学的东西,希望能给大家带来帮助。当然,每个人都有自己的方法论,适合自己的即是最好的。
做好规划
对笔者而言,在学校和工作中,经常会用一些空余时间学习新的技术或者框架。这个时候往往随性而为,看到感兴趣的或者热门的就去看下,没有约束。从人性出发,每个人都是有惰性的。看到好看的电影,便会去看。看到好友邀请打游戏,就会去打一盘游戏。这时的学习效率是很低下的。一本书,一个星期能看完,能拖到两个星期。
大学毕业那段时间,给一个哥们做大数据相关的毕业设计。他给我的期限是两个星期,两个星期之内做完,才支付报酬。起初只搭建过单机的Hadoop,对整个大数据开发技术还是云里雾里的。要在两个星期之内搞定,我做的第一件事情是把整个大数据相关的技术和工具粗略了解下,当时买了一本Hadoop实战。第二件事看需求,确定技术选型,最终方案是Hbase+Hive+Hadoop。第三件事,搭建坏境和编码。结果大家也猜到了,在毛老头(报酬)的逼迫下,按期完成了开发。这个是项目源代码,欢迎给个star。如果没有限制和报酬,不知道什么时候能完成。
以结果为导向
这点,笔者是觉得很重要的。结合笔者一次失败的亲身经历来谈。也是在学校期间,当时实验室导师需要做一个网络舆情监控的项目。笔者和几个同学同时在做,需要先采集数据。当时才大二上,只学过C/C++。对Java和爬虫,也是只听其名,未实践过。当时计划用Java做数据采集的。前几个月很愚钝的看了Java SE整套东西,从Java语法,面向对象,文件IO,网络编程,多线程编程,到数据库编程和桌面应用。结果就是另一位同学数据已经抓取下来了,而笔者还未开始编码。当然,之后大二课程设计时,用Java写了个桌面应用给老师,还是有所惊艳的(渣渣学校)。
这个例子,可能不是很合适。在学习新的技术或者框架过程中,遇到不懂的地方或者难以解决的问题,这是很正常的。如果在这个过程中,钻牛角尖,一定要搞明白,你会发现学习新技术的激情很快就消失殆尽。而且效率也极为低下。学习新的技术,主线是关键。
做中学,项目主导构建网络
有时候我经常有这样的困惑,学习了新的技术之后,当时也能写一些,但过段时间就忘了。但Java那一套,如果再让笔者写个客户端程序,短时间内也能弄出来。
大三出来实习时,以实习生的身份完成了项目从0到1的开发,项目框架用的是Yii2.0,还有一些其他的组件。很多东西都是一知半解。由于时间紧迫,就直接上手做项目了。但现在回想,那段时间,学东西真TM快。
掌握一门技术,最快最好的方法,就是逼着自己做项目,在项目中把重点和一些坑弄明白。之前面试的时候,一位长辈说,技术不仅要知道怎么做,还要知道为什么这样做。认识新事物的三个阶段,它是什么。其次怎么做。最后是为什么要这样做。