[原]如何学习技术?
文章来自baidu NY 同学的邮件,整理发出。
1. 想学的技术非常多,该怎么办?
区分重点,选定目标,循序渐进。技术是无边际的,随着知识的不断增加,会发现未知的东西更多。我们能做的是:
1) 找重点:区分感兴趣的技能和必须技能,将重点放在必须技能上。如实在区分不开,可以这样问自己:不学这个技术会现在的工作是不是干不下去了?
2) 定目标:在一段时间(至少半年内)选定一个技术方向,精研下去。
3) 不断向前:当某一种技术掌握后,再开始另一个技术的研究;
2. 很想学一种技术,但项目工作太多,没时间开展,一直拖着,怎么办?
生存状况和工作性质注定了我们不能像在学校和外企那样有大把的可支配时间,所以要追求技术进步只能自己找时间,也即“白天求生存,晚上谋发展”的道理。我一般会将晚上和周末的时间拿出一部分来学习。
3. 选定一个技术方向作为学习目标的时候哦,如何开展效果比较好?
学习一门技术一般分几个阶段,入门->掌握->精通。一般情况下,达到熟练掌握的程度即可,要实现至少需一年的积累。
可以分下边几步:
1) 知其然:了解该技术的基本原理和应用场景,并进行简单的实践。这个阶段,官方文档是最好的教材;
2) 站在巨人的肩膀上:找该技术业界成熟的开源类库和应用系统进行学习,精度源代码;
3) 在问答中进步:去相关论坛学习,提问或者回答问题,并尝试独立解决论坛中已有问题,www.stackoverflow.com是最好的选择。
4) 躬身而行:实践相关技术,达到能独立完成中等规模应用的程度;
5) 知其所以然:深入了解该技术的运行机制、周边技术、性能优化、深度知识等;
6) 善用资源:在公司,高手很多,你想了解的任何一门技术,差不多都能找到相应的牛人,多和这些人沟通,会事半功倍。
以PHP为例:
熟悉语法&api -> 阅读zend、ci、wordpress源码 -> 用PHP独立开发项目 -> 深入了解PHP引擎实现细节、扩展编写、性能优化等
4. 外界干扰太多,静不下心来学习,怎么办?
刚来百度的时候,前辈给过我一个建议:关掉QQ,结合在学校时的体会,我深知这个建议的重要性,欣然接受了。
其实,静心是做好任何事的前提,关掉QQ只是一个表象,最本质的是我们要给自己营造一个好的学习环境。
做技术需要一个安静的环境和一套方法论,方法论可以找到很多(论语第一篇讲的最好),环境必须我们自己营造。
所以我的建议是:忘掉QQ、适度娱乐,努力使自己沉迷到工作和学习中。
虽然不太容易做到,但做到了对提高效率、找出学习时间都很有帮助。
一些复杂的技术会涉及很多方向,每个方向也可以按照上边的方式分解。
技术学习可以触类旁通,当你完全吃透一门技术的时候,其它的再学起来就快了。
以上内容归根结底就是要我们:懂得选择,学会放弃,耐得住寂寞,经得起诱惑。
做技术如同做学问,关于如何做学问,王国维有段话我高中以来一直非常喜欢:
古今之成大事业、大学问者,罔不经过三种之境界:“昨夜西风凋碧树。独上高楼,望尽天涯路。”此第一境界也。“衣带渐宽终不悔,为伊消得人憔悴。”此第二境界也。“众里寻他千百度,蓦然回首,那人却在灯火阑珊处。”此第三境界也。
有兴趣者可参阅:http://www.china.com.cn/culture/guoxue/2010-03/16/content_19620537.htm
技术之路是艰辛且寂寞的,希望以上内容对有志于此道者有所启发。