我是一名初级程序员,工作一年多。还记得刚毕业,踏入社会的时候,面临着很多工作上尴尬和困惑。首当其冲的便是在学校学的知识并不够用,甚至并不管用。于是学习新技术成了重点解决的问题。其实IT行业推陈出新的速度是很快的,学习新技术并不是初级程序员独有的问题,但是他们的处境是更为困难的,缺乏经验和指导,如何迈出第一步,如何筛选信息,如何深入学习都是摆在我们前面的一道道题目。下面就我的经验来谈谈程序员学习的策略吧。
1.明确目标。
首先在学习之前要设定明确的学习目标。什么是明确的目标呢,例如工作的项目需要你能熟练的编写javascript,那么你的目标很明确,就是学习javascript。如果目标设定为网页前端技术,那么这个目标是很模糊的,因为一种技术是有很多的具体的实现方法,所用的具体技术也大有不同。你还需要对目标作进一步的细化,一定要具体到一门语言或一种解决方案。当然你目标设定的前提肯定是要用在工作上,如果学的技术不能用在生产上,那么你学习的东西是没有意义,时间也浪费了,你还不能确定你掌握到了什么程度。如果你无法明确自己的目标,可以看第2点。
2.广泛涉猎,浅尝辄止。
如果你对一个领域一无所知,无法设定具体的目标,那么你是遇到了技术选型的问题。很多时候,我们第一反应是使用搜索引擎。搜索的确是很方便,但是搜索的信息量会把你淹没。所以有技巧地筛选信息很重要。我的经验是使用广度优先的方法,例如google“网页前端技术”,你会找到很多关键词Ajax,jquery,javascript,css,xhtml等等。这时候先把这些关键词记录下来,作第二次的筛选。对于名词的搜索,可以考虑使用维基百科,这个阶段你要找到相关技术的著名社区或者是官方网站,往往这些地方可以提供最有价值的信息和入门教程。
当你找到了一些入门的教程或者了解到了这个领域的一些基本情况,就可以开始“浅尝辄止”的学习了。例如利用一两天的时间运行入门教程的例子,了解技术的特点和长处。但是千万不要轻易地深入学习,深入学习是需要付出巨大的学习成本(时间,精力)的。所以浅尝辄止是一个很好的策略,当你尝完所有的技术入门,可以对比出这些技术的特点,局限性,稳定性,学习的成本。对比自己的实际情况,你的目标也应该明确了,可以选择深入学习的技术。
3.兴趣所在,学为所用。
选择技术深入学习,最好要符合你自己的兴趣,那样你的学习效率会比较高,至少你会比较主动地去学。如果你对这门技术心存排斥,你是无法掌握它的。但是很多时候并没有那么完美的事,如果你是迫于工作需要才去学,那么你就要控制深入的程度了。有一家公司叫37signals,他们公司生产软件的宗旨是满足客户的最小需求,不提供那些客户可能根本不会使用的功能。我们也可以借鉴这样的宗旨,学技术,够用就行了,等到不够用的时候再去补。
很多初学者可能会坠入一个误区,认为一项技术过时了,便又去追求一项新的技术。其实技术的“新与旧”只会在那些软件厂商的广告或者书籍里有区分,在我看来,技术只有能不能满足工作需要之分。想想多数的牛人其实都只能擅长一个领域或一种技术,广泛应用于金融行业的COBOL语言比现在99%的程序员都要老。
4.欲善其事,先利其器。
日常的学习会用到很多的工具,例如浏览器,搜索引擎,开发工具等等,掌握使用工具的技巧可以更加高效地学习。很多程序员习惯一遇到问题就直接google,百度,可能在翻了好几页都找不到解决方法。搜索引擎通常都有高级的API,在关键字后面加上“site:www.blogjava.net",你就能在blogjava站内搜索问题。一个在海里捞鱼,一个在鱼排捞鱼,哪个容易?搜素引擎是屠龙刀还是水果刀,那也取决于你会不会用。
还有一个工具是英语,可能是很多程序员的老大难。我的意见是不会听说,至少要会读写。延续上面的例子,有些问题在g.cn和baidu.com搜不到,翻译成英文就可以在google.com里搜到。
磨刀不误砍柴工,亘古不变的道理。
5.戒骄戒躁,虚心严谨。
这一条可能无关学习策略,不过是一种学习态度。
我的建议是,浮躁者,少看新闻,少交流,多看历史和文学。骄纵者,多看新闻,多交流,少孤芳自赏。
虚心,程序员都应该要有的品质,无须多讲。但是严谨可能是很多程序员都没有的,想想你工作的时候说过多少次“可能”,“应该”,“人品问题”。你可能认为那是一种习惯,但是你也会习惯失去别人的信任。
程序员的一生其实可短暂了,这电脑一开一关,一天过去了,嚎;电脑一开不关,那就成服务器了,嚎……