2009年5月7日星期四

未来5年开发人员需要的10项技能

昨天收到MSDN中文快递上编者推荐了一本书和一篇文章:

对《代码大全》我保持景仰的态度,的确是好书一本。我也对我买到现在才看了几章而感到汗颜。

不过对于后面那篇文章,我一时好奇看了一眼,我觉得这篇文章正如MS的产品宣传一样,就是用来观念殖民的。

我翻译这十项技能如下:

1: One of the “Big Three” (.NET, Java, PHP)
三大时髦语言(.net , java, php)

2: Rich Internet Applications (RIAs) - (Learn about silverlight)
富客户端应用开发(silverlight)

3: Web development
web 开发

4: Web services – (Learn about Web Services in 1 hour)
web 服务

5: Soft skills
软技能

6: One dynamic and/or functional programming language
一门动态言语或者函数变成语言

7: Agile methodologies
敏捷方法

8: Domain knowledge
领域知识

9: Development “hygiene” (Resources here:  Technical Book Club)
不知道什么意思

10: Mobile development (Resources here:  mobile)
移动开发(手持设备,嵌入式等)


如果这篇文章的标题上限定词是:微软技术应用程序开发,那我无话可说,举双手双脚赞成。但是这篇文章标题是Software for students: 10 Skills Developers will need in the next 5 years。

我认为学生就应该打好开发的基础,比如数据结构,操作系统,算法,数据库、程序开发基本概念、程序的架构等基本科目,不应该把过多的精力放在平台相关的应用技术上。

李开复在给中国学生的三封信里面也强调了基础的重要性。Joel同学在自己的blog上花了很大的篇幅告诉读者现在学生正在步入的误区。那些软件大家们对待初学者给出的第一条建议大多是基本功的训练。UCLA,MIT, Stanford这些名校从来不教什么.net。人家教的是算法,程序的构造与解析,操作系统,计算机体系架构等课程。出来的人还不是google,ms随便去。MS还抢得欢。人家可不会什么silverlight。

软件开发就像练武功,内功练好了,那些外家招式学起来是很快的。内功才是真正要花时间的地方。这点无论对于学生,还是我们这些工作了一些年头的中级开发人员来说都一样。

运用基本功解决问题,自上而下分解问题,设计解决方案,设计良好的程序结构,框架和模块,最后转化成程序,除了最后一步,其他的都与具体的程序无关。而前面几步,才是决定你是好的程序员还是差的程序员的关键。

那么如果是有开发经验的人呢?这10条是否适用?

我觉得10条还是太多了,一个人不可能做做web开发,又去做做mobile开发,这样啥都做点结果就是啥都做不好。这10条里面我唯一看中的一点就是8.领域知识。有经验的人都知道,领域知识才是自己升官发财的决定性因素,编程技术重要性要差些。如果还要加一点,敏捷开发可以勉强入选。因为Methodology绝对是个时髦货,在过去十年里面,每几年都会流行一种Methodology,从CMMI到RUP,从RUP到XP,从XP到Agile,每种methodology只能解决很小一个范围内的问题。如Ivan Jacbson所说,最终,你得有自己的Methodology。

还有一个对于任何人都非常重要的技能就是Soft skill。其实这项技能比领域知识还要有用,比如会拍马屁的人,有可能比做了十年,非常了解领域知识的人爬的快。比如察言观色,见风使舵,舌灿莲花等等。好吧,正经点说,就是交流能力,语言能力,管理能力,调配能力等。有了这些能力,我们才能从单一的开发人员变成所谓的复合型人才。

没有评论: