我们每一个程序员都由自己的艺术追求,编程的最大魅力也来自于创造的乐趣,来自于 “不走寻常路”的乐趣,来自于超越的乐趣。如果编程是一件规规矩矩的机械工作,我想很多人都不会走上这条路的。可是这当初驱使我们走上编程之路的乐趣,也许正是导致中国软件业始终无法壮大的本质原因。只有通过纪律把个人编程的艺术整合起来,才能完成软件最大的价值;只有通过程序员的纪律管理,企业才能开发出符合用户需求的产品。
用纪律征服世界的印度软件
我们可以讨论一个现象,《财富》500强企业中约有超过400家企业在印度设立了自己的业务中心,或将部分业务外包给印度技术公司,这是因为印度公司开发出来的代码软件都很美吗?
印度软件业让世界睁大眼睛的主要原因是因为它提供的是客户需要的软件,而非程序员需要的软件。我们清楚的知道,国际化的企业对与提供商交付的软件非常挑剔,而印度的软件服务主要面向出口,如何应对成千上万的客户需求?这就需要一套完整高效的管理方法,因此印度的软件开发公司中很少注重突出个人角色,非常在意团队人员之间的协作,更强调软件编写中的“规矩”。但光有协作是不行的,软件开发人员最欠缺的是可遵循的行业标准,因为西方用户看中的往往也是你的开发流程是否符合某个国际标准,这足以证明你服务的水平和交付的能力。
一个挑剔的用户,决不会考虑你交付给他的是一份艺术品,因为艺术品的实用价值非常低,艺术品的产量也是极低的,用户最需要的是这个软件能否解决企业的实际问题,能否按时交货。印度软件企业的强项在于业务解决方案,在这个领域里,纪律格外重要。软件企业的质量标准就是竞争优势。在印度政府的大力鼓励下,企业按照国际标准制造软件产品,到目前为止,是世界上软件企业获得ISO9000认证最多的国家。另外,为了进一步提高软件业的国际竞争力,印度电子部率先从美国引进了软件能力成熟度模型(CMM),软件公司竞相建立CMM等体系,并严格加以贯彻实行。印度的软件企业为什么如此成功,背后是他的管理体系在支撑,这充分说明了用纪律可以征服世界的可能性。
职业教育与软件标准通行
“美”除了让人欣赏,还能带来金钱,美丽的软件也一样。很多年轻的程序员希望写出漂亮代码,他们学习前辈编写代码的艺术风格,但在寻求美的过程中,这些年轻的编写者都是模仿其中某个方面。如果企业想让他们设计一项希望的功能,他们总是无从下手,因为他们从来都站在自己的角度上去完成交付的工作。如果画布是整个集成开发环境,而你的媒介就是代码,想一想,如何做到离开画布,在3米之外用购买者视角来审视你的作品?
常有人拿中国和印度的软件工程师作比较,而比较的结果非常失望。在中国,程序员把编程当艺术(这很正确,编程就是一门艺术),在印度,程序员不但知道编程是艺术吗?他们不但知道,而且认识到艺术背后还需要有纪律。印度软件企业的成功给人以启迪,那么软件企业希望得到什么样的人才呢?“通过培训掌握技术之后,只要大家能够严格遵守纪律,认真把工作做到位,就能成功”,这便是今天对软件工程师最起码的要求,也是企业实施标准化成功的秘诀。
印度软件人才主要是通过职业教育,而不是高等教育来培养的。印度每年约有50万新生软件人才涌入企业,其中大学毕业的只有7.4万,剩下的几乎全是通过职业教育与培训模式培养出来的,这充分反映了印度软件人才培养模式的职业教育定位。另外印度还大力推进教育标准化进程,以亚洲最大的IT培训机构NIIT为例,关于教学内容,培训中心有严格规定,并在全世界的各个培训分部建立统一标准,使所有培训分中心都能按照ISO管理方式来培训学员,交付给企业。最后的结果也就是印度的软件企业大部分都能按照软件开发的模型(CMM)来要求自己的程序员和项目管理者。培训内容和企业标准完全并轨,这才是印度软件成功的原因所在。
如何做到艺术与纪律兼顾?
印度软件产业的人才优势,得益于他们始终按照软件产业发展的需要,多层次、多渠道地培养人才,从而形成多层次的人才结构。而自20世纪80年代初就开始为此做出不懈努力的NIIT堪称是印度系统的软件职业教育的鼻祖,它也是将标准培训引进中国的第一家印度IT企业。至今为止,NIIT是目前世界最早课程开发方面获得卡内基•梅隆大学软件工程学会CMM 5[1]级的培训企业之一。
对于一个初级入门的软件开发学员,你即使今后成为开发行业的大师,也要从“达•芬奇画鸡蛋”学起。在遵循标准的同时,我们认为,成为有纪律的软件人才,并不是要磨灭你的梦想,摧毁你的艺术细胞。那么如何实现懂艺术又守纪律的人才呢?
实践是NIIT培训的主要方式,即不是按照从基础理论到专业理论,再到实习的路径来展开教学的,而是把传统教学顺序完全颠倒过来,将企业遵循标准的项目直接引进到培训中,先从“做”开始,学生在“做”的过程中如遇到问题,再以此为基础学习专业理论。另外,参加NIIT的培训学员,其逻辑分析能力将得到质的提升。以实用为主旨的人才培养模式使NIIT注重学员在工作态度等非智力因素的培训,这是因为软件人才技能水平并不单纯由工作成绩决定的,其他许多非智力因素对工作成功同样重要。因此,在NIIT特别强调学员的学习态度、表达能力、团队精神等的等非技术素质的培养。
遵循标准设立培训内容,通过实践锻炼学生解决实际问题的内容,这就是NIIT将艺术和纪律两者完美的结合在一起,值得骄傲的地方。