你准备好了吗?
快速的开发周期
上大学时,要学习系统分析和设计(System Analysis and Design)课程,正好看到一
个统计,说程序员一天只写一行有效的程序代码,当时我简直乐坏了。心想一定要进
入信息行业,又有高薪又有地位,更重要的是工作如此轻松,一天写一行代码,闭着
眼睛都可以做到。没有想到,在真正进入了信息行业之后,情形却大为不同。不但工
作繁重,每日更需撰写成百上千行的程序代码,这哪里是一天写一行的日子?不禁心
生感叹,自己似乎入错了行。
所有的读者都可以感觉到,现在系统开发的时程要求得愈来愈快。我记得5/6年前,
系统和项目开发的速度还是1年到1年半左右,到了3/4年前已经缩短成10个月左右,
在Internet/Intranet快速兴起之后,许多系统和项目甚至缩短到了3个月就要推出的
迫人时限。信息机构的调查显示,系统和项目的开发时程将持续地缩短,到了2012年
居然只有一天的时程,这种超高标准的要求可能会吓坏许多的软件人员。不管这份调
查的数据是否100%正确,但是从这份信息调查趋势以及我本身的经验来看,愈来愈
短的开发时程却是不争的事实。
面对愈来愈短的开发时程,软件人员应该如何适应?这是许多人面临的困扰。其实许
多的程序语言、开发工具、软件工程都强调帮助软件人员提高生产力,以适应快速开
发的要求,只是随着时程的要求愈来愈高,许多传统的程序语言和开发工具都已经呈
现力不从心的现象。既然如此,那解决问题的方案是什么呢?
数年前,业界对于软件开发的速度要求愈来愈快,这造成了软件品质的下降。许多软
件在完善率尚未达到一定的水准下便仓促推出,造成了更多的问题,因此软件业曾经
被许多人讥笑为"不可靠行业"。为了改善这个现象,许多软件工程技术相继出现,以
求提高软件品质。其中最为突出的是以面向对象的各种软件工程,强调软件IC、可重
复使用的软件组件为特质,以加快软件开发的速度并且提高软件品质。面向对象的大
旗造就了3位面向对象大师,也让UML等模型工程独领风骚,进而让Rational公司成为
近年来最重要的软件公司之一。不过几年下来,UML对于软件开发的贡献一直受到争
议,许多软件人员对于UML过于复杂的流程和过多的UML图形产生怀疑,因此前一阵子
又兴起了Extreme Programming的热潮,强调轻便、动态、快速开发的特性。其实这
个现象正反映了软件业界对于开发"速度"的要求已经超越了过份强调软件工程流程的
重要性。现在的信息业界需要的是"灵活的"开发速度。
右边的图片明确显示了从2002年下半年起,许多企业和软件公司对于软件开发特性的
要求,其中列为最重要的特质就是"灵活性",接着仍然是强调速度的Extreme
Programming的特质。其实,这些对于软件开发的要求也正回应了上一张图形显示的
对于开发速度的要求。
我认为UML/RUP和Extreme Programming/Agile Development之间并没有冲突,反而是
相辅相成的。对于大型、复杂的系统开发,UML/RUP仍然是目前为止最好的方法之一,
只是需要适当的修正,不要过份强调所有的形式流程。而Extreme Programming/Agile
Development则特别适合中/小型系统,需要快速反应时间的开发要求。
既然快速开发已经成为现在最重要的软件开发要素之一,那传统软件人员应该如何适
应呢?其实这个原理也不难了解,答案就隐含在上图中Developer-Centric包含的意
义。想想看,现在的许多企业是如何增加效率的呢?答案之一就是组织扁平化,尽量
减少不必要的重复浪费。软件开发也是一样,软件工具应该尽量以开发人员为中心,
让开发人员使用较少的循环能够完成更多的开发阶段,并且提供更可靠的软件。例如,
新一代的开发工具允许开发人员在一个开发环境中,同分析/设计人员以UML的模型来
沟通,并且能够在一个开发环境中撰写程序代码,以可视化方式检视程序代码的关系
和可靠度,能够在相同的开发环境中进行单元测试、压力测试、负载测试,并且和测
试人员合作。另外,在这个开发环境中也能够和开发团队共同进行项目管理和版本管
理的工作。如此一来,开发人员可以在较短的时程内提供更高的生产力,缩减开发循
环。当然,这意味着以后软件人员必须知道得更多、要求也更高,但是,这的确可以
让开发人员更有效率,并且增加整个团队开发的生产力。
面对要求愈来愈高的动态开发时程,身为专业软件人员的你:
可准备好了吗?
程序语言的战争
从程序语言的发展史来看,数年前似乎就有统一的趋势。在商业应用上COBOL几乎是
事实标准,在科学计算上Fortran有不可取代的地位,而C/C++则几乎垄断了大部分其
他的应用。但是随着Internet/Intranet以及RAD工具的兴起,这个由数个主流语言掌
握的局面很快被打破了。特别是在各种脚本语言(Scripting Language)和Java在Internet
应用上逐渐取得了优势之后,各种新的程序语言纷至沓来,让人眼花缭乱,不知如何
选择。程序语言战场在寂静了数年之后却突然陷入了前所未有的热战之中。
其实,各种程序语言的不断出现,反映的就是以往的程序语言已经不足使用或是不适
合使用在特定的应用中,因此才需要新的程序语言来解决问题。新的程序语言代表了
信息应用的多样化,而以往由COBOL、Fortran、C/C++主掌的情势也被快速地打破。
如今的软件开发人员可能必须同时熟悉数种程序语言,并且在不同的应用中选择使用
最适当的程序语言。
以Web应用系统的开发为例,看看目前这个最流行、最重要的应用系统是由什么程序
语言开发的。在台湾地区,不可否认的是ASP绝对是最多人使用的解决方案,这是由
于台湾大部分的Web应用都属于中、小型系统,而且Web应用系统分布的区域并不算广
大,因此ASP就足够满足大多数的需求,软件人员选择的标准是好用、开发迅速的程
序语言。
但是,对于美国或是大陆这种幅员广大、并且拥有许多大型系统的应用而言,很可能
和台湾地区的情况大不相同。那么,到底世界上的软件人员是使用什么程序语言来开
发Web应用系统呢?对于这个问题的答案,我很有兴趣,因为可以拓宽自己的视野。
下图显示的是信息机构对美国软件人员调查的结果,从图中可以发现使用最高的居然
是XML,而不是ASP或JSP。不过XML、ASP和JSP这3者加起来占据了3分之一强,可见这
3种程序语言是Web应用开发的主流。另外值得注意的是,虽然PHP最近声势不断地增
长、并且拥有Open Source的优势,但是居然只占有4%的使用率。PHP的成长率很惊
人,这在稍后也会说明,不过PHP要想在Web开发领域占有显著的地位,仍然需要多多
努力。
除了Web的开发之外,如果不注重开发工具的区别而纯以程序语言的角度来看,下图
显示的就是目前针对程序语言所做的调查统计结果,Java、Visual Basic、C/C++和
C#是目前4大主流程序语言。不过下图中的C#数字是指C#在2003年的表现,而不是在
2002年的情形。
图中的调查结果,显然和我国台湾地区以及大陆的情形有些出入。在台湾,Java正快
速爬升,C/C++的影响力则持续下滑,而最大使用的程序语言应该就是Visual Basic
和Object Pascal了。台湾地区的情形和大陆稍有不同,目前在大陆Java也是快速地
兴起,不过尚未形成最有影响力的语言之地位,反而是C/C++仍然为大陆目前最有影
响力的程序语言,Object Pascal、Java和Visual Basic则紧迫在后。根据CSDN网站
统计的结果,目前各程序语言讨论的文章数分别如表所示。
从右边图形和数字,我们可以了解在大陆使用C/C++语言的人数实在是众多,而Java
已经超过了Visual Basic。不过未来的发展情形则更令人好奇,因为在全世界的C/C++
都开始逐渐走下坡之际,C/C++在大陆的市场会不会也发生类似的现象呢?Visual Basic
和PowerBuilder会不会持续下滑?Java何时会成为霸主?C#又何时会迎头赶上?这些
问题都非常值得观察,因为这不但影响了各程序语言之间势力的消长,也代表着软件
工作市场的需求和变化。
有趣的是,在Windows和.NET平台上,程序语言正以前所未有的生气蓬勃发展,而且
不同的程序语言间互相激荡、相互影响,再产生新的程序语言或是在原有的程序语言
中加入新的机制以符合新的需求。但是在Java平台,却几乎只有Java语言,没有其他
的选择。那么读者是喜欢单一程序语言的单纯,还是喜欢多种语言产生的灿烂火花呢?
我个人是比较喜欢多种语言的,因为我认为,我们可以通过欣赏不同程序语言的设计
精神和思想来吸收更多的知识和技术,通过不同程序语言彼此竞争的结果,可以嗅出
未来程序语言的发展方向,这大概也是因为我从大学时就特别喜欢程序语言和编译器
课程的结果吧。
知己知彼,百战百胜
就让我们以EJB服务器市场这个实际的竞争范例来看看信息产业是如何竞争和演化的
吧。三四年前,当EJB市场开始成长时,许多软件厂商相继投入这个潜力十足的市场。
当时,所有EJB厂商竞争的基准大概都是符合EJB规范、使用最新JDK标准以及执行效
率最良好的EJB服务器。当时竞争的EJB服务器可以用满山满谷来形容,为什么呢?因
为在这个阶段纯粹是以技术为决胜点,这个门槛并不高,拥有技术的软件人才多得是。
因此,这个阶段中有眼光和智慧的厂商便了解到,光凭EJB服务器引擎是无法作为胜
出的要件的,必须想办法增加竞争门槛以阻绝竞争对手持续逼近,或是增加"软件服
务"以提供竞争对手没有的功能。
到了EJB服务器竞争的第2阶段,逐渐胜出的EJB厂商便开始为EJB服务器加入各种服务,
其中一类是以增加商业应用服务为主,例如Portal Service、ERP Service等。而另
外一类则是以技术服务为主,例如分布式交易服务、安全服务等。由于这些软件服务
的加入,在EJB服务器竞争的第2阶段便逐渐产生了EJB服务器的领先群,许多其他的
EJB服务器厂商在眼看竞争无望之下自然地退出了市场,HP就是一个例子。
现在EJB服务器市场又进入了最后厮杀的阶段,因为在领先群中的厂商大都提供了类
似的服务。那么接下来要如何竞争呢?IBM很快就看到了关键点,那就是为WebSphere
加入整合开发平台的能力。通过并购Rational取得Modeling工具和技术,IBM可结合
原有的Java开发工具为WebSphere形成一个关键开发平台,同时吸引企业使用者以及
开发人员为WebSphere形成的企业平台开发更多的客制化服务,以便为WebSphere形成
势力强大的专属力量。这是WebSphere最大竞争对手WebLogic目前没有的优势。
从EJB服务器竞争的过程来看,致胜的关键便是软件人员是否能够看到别人看不到的
优势、并提供额外的服务。对于软件人员的发展,道理也是同样。大部分的软件人员
都只注重在特定的开发工具或是程序语言中精进,但似乎都是随着别人的脚步而前进,
少数软件精英除了在信息技术领域有高人一等的修为外,真正胜出的却是能够为自己
增加附加价值、提供创造力的能力。就像JBuilder的Chief Scientist--Blake Stone,
为什么他能够在年纪轻轻的情形下成为领导者?许多资历、年纪都比Blake Stone
多的研发人员反而只能当工程师呢?很简单,因为Blake Stone更早地看到了JBuilder
的发展趋势和竞争策略,掌握了Java开发工具发展的动脉,能够为JBuilder开发团队
提供更多的价值,再加上坚强的技术实力,终于成为家喻户晓的Java天才。
我一直认为任何软件技术终将被大众所熟知和掌握,就像数年前的主从架构一样,因
此光凭借技术并不能让人领先多久。反而是通过平日不断培养的眼光和趋势、再加上
专业的技术才能够让软件人员保持在领先群中,并且掌握软件趋势的动脉。拥有这种
特质的软件人员能够不时的提供服务,不时地为团队提供持续的创新力,自然也就能
够百战百胜了。
结论
人类对于新事物的害怕,通常都是由于对新事物的无知所引起。同样,软件人员对于
未来的困惑和焦虑则来自不知如何是好,这也是对于未来趋势发展的无知所引起。本
节中,我们通过分析、观察和统计了解了以往、现在和未来软件趋势的发展,当事实
的走向豁然开朗之后,困惑和焦虑不再重要,软件人员反而应该反躬自省地自问:面
对未来,我们准备好了没有?
不管Java和.NET两大平台之间的战争如何,不管哪一个软件组件或是程序语言会获得
最后的胜利,世界对于软件系统快速开发的要求不会因为那一方胜出而改变,软件人
员必须准备好面对这个趋势。想想,JBuilder以每半年一个新版本出现,Java JDK和
.NET也几乎以1年半之间推出两个版本的速度在彼此争战之中,连传统的开发工具现
在也几乎以一年一个版本的速度出现。更夸张的是,Internet/Intranet的技术现在
几乎每3个月就有一番新的面貌,开发人员应该如何自处呢?
机会可能会降临在每一个人的身上,但是只有时时准备好的人才能够把握住机会,不
让它从手缝中溜走。
本文地址:http://com.8s8s.com/it/it34590.htm