连续三年,《程序员》杂志和CSDN.NET网站,共同举办面向中国程序员的大型调查。连续三年,每到这个时候,我都要为杂志写一篇关于调查结果的稿子。无窗的办公室外,严寒刺骨,而办公室里却是闷热难当。我抹去额头的汗水,一边想,中国有多少程序员,此时此刻,也在挥汗如雨?在过去这一年,他们为之努力的中国软件业,发生了怎样的变化呢?如果读者朋友和我有一样的疑问,那么,我眼前这份调查数据,可以解答我们共同的问题。

越鸟栖不定——生存状态篇
      本次调查显示,中国软件开发人员中,21至30岁的,比例将近90%,其中男性比例超过90%。软件从业人员流动性较强,他们是年轻的后生,是闯荡IT江湖的好汉。曹邺诗中写到的“越鸟栖不定”,正是他们的写照。对于这些栖息不定的鸟儿,北京、上海和广东是可以暂时立足的枝头——相比其他地区,三地工资较高一些。北京和上海地区,3000-5000人民币元/月这个收入水准的程序员比例较大,而广东地区有逾43%的程序员仅有1000-3000人民币元/月的收入。5000元月薪以上收入者,在所有地区,都不是大众人群。 



      和去年情况差不多,大量程序员仍然在为1-50人规模的小型民营公司工作。独立软件开发和系统集成,是这些公司的主营业务。一些公司尚处于初创阶段,管理制度、福利制度等都不完善,甚至还有少数公司不能保证员工基本工作待遇,这样,导致劳资纠纷就不足为奇了。但愿在2007年,企业主们能依据《劳动法》和其他法律、法规,为员工创造良好工作环境,从而换得双赢局面。程序员也要懂得以法律为武器,捍卫自己的权利。



操作系统
      在Windows平台上,Windows 2003如微软所愿,逐渐取代Windows 2000在服务器端部署的地位。部署在Windows 2003上的应用,有42%迁移自Windows 2000。不仅如此,大量的Java应用也部署在Windows系统上(包括服务器端和桌面端)。在Linux领域,最受欢迎的部署平台是RedHat Fedora发行版,国产Linux发行版仅占区区5%。 



      国产“银河麒麟”操作系统,2006年引发了一场影响深远的争论。CSDN网友dancefire,在Blog上发表质疑麒麟“自主创新”的文章,指出麒麟实际上是源自FreeBSD系统。其他国产Linux发行版厂商,在这场论战中选择了沉默,因为,很遗憾,他们的操作系统,同样源自Unix/Linux的某个开放源代码版本。希望2007年各个国产操作系统厂商,不再拉大旗做虎皮,脚踏实地,做出像样的产品来。
2007年,Linux挺进桌面市场的胜算不会太大,在服务器端也有可能受到Solaris的阻击。Java和Solaris开源后,Sun的策略是打造“Solaris+Java黄金平台”概念,但对大量运行LAMP的公众站点,该策略未必有效,倒是在企业信息系统中,至少或能守成。

.NET的2.0时代
      和2005年相比,C#在.NET开发市场的占有率上升了10个百分点,可怜的Delphi.NET跌到3%不到,而VB.NET则波澜不惊,我自行我路。相较于2005年, .NET Framework 1.1的应用比例大幅度下降,而2.0应用比例却扶摇直上 ;目前,两者的应用比例,已经基本持平。应该说,集成在Windows 2003的IIS6,和开发工具VS.NET 2005,是促进.NET Framework 2.0得以广泛采用的有利因素,但VS.NET 2003目前仍占有.NET开发工具市场的大部分份额。预计2007年.NET Framework 2.0会全面取代1.1版本,不过3.0版本成为主流还得假以时日。

 

      值得注意的是,用户对.NET平台的安全性,普遍持有不完全信赖的态度,仅17%的用户认为,.NET非常可靠。我认为,对.NET安全的信心不足,很大程度上,是源自于对Windows安全性的信心不足,这也是微软平台一向为人诟病的地方(见表5)。
缺乏操作系统级的支持,使得.NET Framework暂时只能征战于Web开发领域,缺乏在Windows系统上“本土作战”的粮草支持。WPF(Windows Presentation Foundation)虽然可以脱离Vista、在其他Windows操作系统上运行,但仍然会遇到同样的问题。.NET Framework打入桌面,还得靠Vista。在微软的战略中,ASP .NET AJAX应该是一种过渡技术。基于WPF和WPF/E的RIA,才是真正意图所在。

 

廉颇尚能饭:Java篇
      Java发展十余年后,由强健而渐有臃肿之态。2006年让Java遭受当头一击的,莫过于以RoR为代表的动态语言Web开发框架了。尽管RoR尚未得到广泛采用,但它足以让整个Java社群陷入反思。尽管包括James Gosling在内的Java大牛们都坚持说Java可以做比Web开发更多的事情,但我们必须看到,Web应用占到Java应用总数的50%以上,而这个领域却正在受到威胁。好在传统大型企业应用,应该会在相当一段时间内,保持目前Java为王的状态。

 

       JSP/Structs/Hibernate/Spring是最受欢迎的四个Java开发框架。JSF仅在区区7%的项目中得到采用,这个数字短期内不会有太大增长。用户通常通过JDBC和Hibernate访问数据库,目前采用前者的,多于采用后者的。
      Java开源应该说是2006年Java领域最大的事件。但我要说,和当年的Windows源码泄露一样,我不认为这事儿对中国程序员有多大意义。JSF、Java语言动态化等话题,也许更值得留意和关注。

开发工具及软件生命周期
      在去年初的杂志文章中,我预测,JBuilder会持续走下坡路,而Eclipse则会走高。今年的调查数据,不幸证实了这个预测。相比去年,Eclipse的采用率上升了十多个百分点,JBuilder却一路降到17%的占有率。
      在.NET开发领域,Delphi.NET也无所作为。纯粹的开发工具商业市场,在逐渐消逝,所以Borland才会决定将IDE部门分拆为一家新公司,母公司主攻软件生命周期管理。应该说,这是一着险棋,但却不能不为。实际上,今年Borland的ALM产品,在需求管理和变更、缺陷管理领域,都有不俗成绩。
VS.NET 2003仍然是.NET开发领域的王者,但2005版本的采用率上升迅速。随着.NET Framework 2.0的进一步普及,相信VS.NET 2005会取代2003版本的地位。除了VS.NET开发工具系列,微软在软件生命周期领域也有所斩获,特别是Project之于项目管理、Visio之于建模、VSS之于源代码管理,都是软件开发项目的首选。
      从整个软件生命周期管理市场来看,IBM Rational在多个子领域胜出,且在其他子领域也通常能名列前茅,综合得分最高。2007年,TFS(Microsoft Team Foundation System)将会在基于Windows平台的开发项目管理中占据重要地位,这从Rational新版本工具对 .NET开发的支持程度不佳可以看出。
软件生命周期贯穿于开发项目之中,项目管理是决定软件开发的进度和质量的重要因素。从调查数据上看,我国软件开发项目管理,仍处于较低水平。大量项目没有遵循业界普遍认同的RUP、XP等传统或新兴模型,回答“顺其自然,没有采用过程管理框架”的受访者,竟占到有效样本总数的27%,这个数字令人扼腕。如果近三成的项目,是在缺乏有效过程管理的情况下进行,可想而知结果会如何了。



一网打尽:Web开发
2006年的web应用领域如火如荼,许多热门技术关键词,都围绕web开发展开,例如Ruby on Rails、AJAX,均是如此。在我们的调查中,有将近70%的受访者,涉及web开发工作。尽管面向公众的web 2.0网站风头正盛,但多数的web项目,还是存在于企业内部应用中。也就是说,企业内部信息化应用,越来越多地采用了B/S架构;而且,从web应用负荷的调查数据来看,基于B/S的信息化系统,在中小企业中广受欢迎。



AJAX虽然是技术大热门,不过实际采用量却不是想象中那样高,全面支持AJAX的web应用,仅占总数的17%左右,三成web应用完全不支持AJAX,而选“不知道什么是AJAX”的,竟占到受访者总数的14%。Ruby on Rails情况类似,采用量与受关注程度,显然不成正比。ASP.NET/JSP/PHP三足鼎立,在公众站点领域,PHP相对较有优势。
如果说2006年是web“一网打尽”的一年,那么2007年有可能是RIA (Rich Internet Application)渐入佳境的时机。微软和Adobe在RIA领域都有自己的战略,从本质上说,基于操作系统的战略(微软)和基于被广泛接受的客户端插件战略(Adobe)都是平台战略,谁胜谁负尚难预料。
对于Web和应用程序UI设计人员,应该特别对微软的Expression套件加以注意,它可能会是基于Windows平台应用的终极设计利器。和VS.NET的集成、对WPF和WPF/E的支持,将会使Expression成为Windows平台应用的设计工具首选。
产品领先应用的数据库市场
2006年,三大商业数据库厂商都有重要产品发布。不过,用户的对新版本的用户情况,却仍处于早期了解阶段,真正应用到实际项目中的,比例甚低。由于牵涉已有数据,故用户在决定数据库版本迁移时,当然会慎之又慎。
另一方面,主流数据库的特性,有部分超越了目前国内应用的需求。XML支持、商业智能等厂商力推的新特性,在实际项目中应用并不广泛,但用户对这些新特性表示了明显的兴趣,希望更多地了解,并在将来项目中采用。这也说明,信息系统应用开始进入一个新阶段,从简单的数据管理,到数据挖掘与商业智能,将是2007年数据库应用的变化所在。



开源数据库在面向公众的web服务中的采用比例,远远高于在企业内部信息化项目中的采用比例,总体计算下来,仍不容小觑。MySQL仍然是开源数据库的领跑者,随着新版本支持更多特性,相信会进一步巩固其地位。不过,MySQL也有隐忧:它使用的InnoDB引擎,已经被Oracle收购,等于是被别人掐住脖子。所以,研发自有产权的引擎,会是MySQL AB的当务之急。
预计2007年,SQL Server 2005将逐渐取代SQL Server 2000,Oracle仍将坚守大型企业应用市场,而Sybase则另辟蹊径,在移动数据库方面有所作为。唯有IBM DB2,阳春白雪下里巴人都靠不上,难免有曲不高和不众之感了。

尴尬的开源
Intel开源战略总监Dirk Hohndel在Blog上撰文称,中国是“开源消费者”,袁萌先生驳斥了这种说法。如果Hohndel所说的“开源消费者”指的是“采用而不贡献”,那么他说对了。有两个数字可以支持这种说法,第一,70%的项目大量或部分地使用了开源框架、控件等;第二,74%的开发人员,没有参与过开源项目。

 
开源软件的商业模式,目前远非一个清晰的概念。本次调查显示,将近一半的受访者,愿意为技术咨询和培训付费,这也许是一种可行的商业模式。另外,我们还留意到,对于开源软件最该改进的地方,商业技术支持、集成开发环境都有超过四分之一的受访者选择。开源软件的商业技术支持,在国外有成功的先例,但在国内还不成气候。
既然开源软件和商业模式可以放到一起谈,那么,开源和商业就不是截然对立的。微软与Novell结盟,可以看作是开源阵营内部矛盾爆发的一个导火索。Solaris的开源,未必会引发Unix体系操作系统大战,但对各个Linux发行版会产生一些冲击,毕竟Solaris本身的强固可靠可以信赖。
中国开源领域在2007年最大的敌人是自己。开源阵营不是铁板一块,有市场就有竞争,就有商业手段。开源泛政治化、泛民族化、泛道德化,口号至上,将严重妨碍中国开源事业进步。

结语
我国软件行业,仍在“跟着别人走”的阶段徘徊;国际软件巨头之间的明争暗斗,也反应到中国软件开发界。综观2006年中国软件开发领域,你方唱罢我登场,城头变幻大王旗,别有一番乱中有序的风景。
据IDC《中国套装软件市场2006-2010年预测与分析》提供的数据显示,2006年中国软件市场规模达33亿7千9百万美元,2007年将达39亿,到2010年,可望达到62亿美元。这样庞大的市场规模,中间蕴藏了太多机会。能抓住机会的人,往往不是投机主义者;惟愿中国开发者 :管他墙头旗变幻,咬定青山不放松,选定自己的技术路线,总有融会贯通之日。那时,机会就是你的