做者:苏康胜
前言 本人从事软件行业以来,经历了屡次的成功与失败的体验,总以为中国的软件应该能够作得更好些,但结果并非我想象中的那样,许多的项目实际都还只是以假的、虚的面孔而存在,其中起因你们均可以说得出不少不少,但怎么改呢?一些问题的存在只是由于其余问题存在而存在的,因此我想寻找中国软件行业为何不能崛起的根源。 中国人智商不够?那绝对是错的。 中国人不够勤奋?那也绝对是错的。 科技不如其它国家发达?通信如此发达的现代,那不是理由。 中国人作软件的少?那更加不是理由。 ...... 为何呢?中国缺乏高效的软件开发团队吗?这也许是问题的根源。
正文: 喜欢足球的朋友应该很是清楚一件事情,那就是在一场足球赛中假如球员之间缺乏默契的配合或教练的指导思想执行不到位等状况下,那场比赛多半是以失败了结的,由于这支球队并非优秀的球队。开发软件项目就象一场进行中的足球赛,是靠项目管理、系统分析设计、程序编制、测试、市场营销等不一样角色人员共同协做完成的,不一样角色的人执行的工做相互促进和制约着其它角色的人的工做,所以一个高效的软件开发团队是高质量软件项目或产品的保证,可如何才能营造高效软件开发团队呢?从如下几个方面来讲明:
1、 高效软件开发团队的特征 高效的软件开发团队是创建在合理的开发流程及团队成员密切的合做的基础之上的,成员共同的迎接挑战、有效的计划、协调和管理各自的工做以致完成明确的目标,高效的开发团队具备以下特征: 一、 具备明确且有挑战性的共同目标 一个具备明确的并且有挑战性目标的团队比目标不明确或不具备很大的挑战性目标的团队效率高得多,一般技术人员每每会由于完成了某个明确的任务,并且这个任务的完成具备挑战性的意义而感到自豪,反过来团队成员为了获取这种自豪的感受而更加积极的工做从而带来团队开发的高效率,如做为系统设计人员很清楚的知道在何时要作到什么,何时开始作,何时必须完成,为了完成工做必须面临哪些挑战,怎么解决这些困难等为设计出一个高质量的软件项目提供了重要保证,而模模糊糊的去设计一个系统或模模糊糊的就去编写代码是很是危险的,并且会为此付出高昂代价,所以高效的软件开发团队具备挑战性的共同目标。
二、 团队具备很强的凝聚力 在一个高效的软件开发团队中,成员们凝聚为一个总体共同进行工做,他们是相互支持、互相交流、互相尊重的,而不是相互推卸责任、保守、相互指责的,在一些散乱的开发团队中每每存在这样的问题,一些程序员是比较保守的,明明知道另外的模块中须要用到一段与本身已经编写完成但有些难度的程序代码,他也不肯拿出来给其它程序员共享,不肯与系统设计人员交流,这样给项目的进度形成了些不可度量的因素。
三、 具备融洽的交流环境 在一个开发团队中,每一个人行使本身的职责,如需求分析人员制定需求规格说明、系统设计人员作系统概要设计和详细设计、项目经理配置项目开发环境而且制定项目计划等,但每一个人的工做不可能作到完美的,如系统概要设计的文档可能有个别地方词不达意,作详细设计的时候就可能会形成误解,项目经理制定计划时可能忽略了某种风险的存在而形成执行者过于紧张的压力等等状况都须要你们经过交流、反馈的手段而后协商解决的,所以高效的软件开发团队是具备融洽的交流环境的,而不是那种简单的命令执行式的。
四、 具备共同的工做规范和框架 高效软件开发团队具备规范性及共同框架的工做,对于项目管理具备规范的项目开发计划,对于分析设计具备规范和统一框架的文档及审评标准,对于代码具备程序规范条例,对于测试有规范且可推理的测试计划及测试报告等等。而且全部成员都明白本身的职责,知道必须完成什么计划?由谁来完成?何时开始?何时结束?按什么顺序?等,总之一个高效的开发团队不管是工做内容仍是工做流程都具备不一样程度的规范性和标准风格的框架。
五、 采用合理的开发过程 软件的开发不一样于通常商品的研发和生产,开发过程当中会面临着各类难以预测的风险,好比需求的变化、人员的异动、技术的瓶颈、同行的竞争等,高效的软件开发团队每每是采用了合理的开发过程去控制开发过程当中的风险、提升软件的质量、下降开发费用,这样的团队会根据自身的必要程度决定要执行哪些工做?如配置管理、资源管理、版本控制、代码控制等,团队还合理的分划并定义开发过程的里程碑,决定每项活动内容的底线和审评标准,决定各项活动的前后关系或迭代的关系等。总之高效的软件开发团队的开发过程的原则是高效率、高质量、低成本。
2、 目前国内软件开发团队容易存在的问题
因为传统的旧体制下的管理思想的沿袭、大部分中国人传统的思惟习惯及软件行业在中国发展的处于初期阶段等缘由,使国内的许多软件开发团队在领导、合做、质量、参与等方面存在一些问题,具体以下: 一、 领导不力 有效的领导是高效率软件开发团队的基本要求,若是领导不力,工做计划就不必定会合理,团队成员也不必定会投入工做的热情,使团队的凝聚力大打折扣;若是领导不力,就不必定有明确且具备挑战性的目标,团队成员就没法完成高质量的项目产品,没法投入信心和激情。传统的旧体制下的管理思想的沿袭,是部分领导还具备老大爷的心态,因而贪功、推卸责任、明则保身等一系列现象也相继而生;若是领导不力,就没法营造融洽的交流环境,团队的工做即是死板的没有生气的;若是领导不力,就不知道采用什么样的开发过程是合理的,就不可能高效率、高质量的完成软件项目。领导不力还可能致使其它问题的出现。
二、 缺乏必要的信心和激情 也许你会发现周围的一些同事仅仅是为了薪水而工做,在执行工做的时候即便发现了上层领导忽略的问题依然照糊涂画瓢也不反馈问题所在,即使他是个天才,但成功不会属于他的,由于成功垂青于有激情的人才,其实这些同事并非一开始就缺乏激情的,缘由也许是失去了信心,而暂时作糊涂人而已,不管如何,缺乏信心和激情的团队,只会是人心涣散。
三、 软件质量的价值观念模糊 软件质量这个问题已是老调老谈了,但质量的标准是如何?是否在团队中有明确的评价标准?目前国内的许多软件开发团队都很难给出正确的答案,许多的项目最终仅仅是以能够交差、收到钱、套概念、圈钱等市场行为作为标准。目前流行的许多开发过程、质量体系如:RUP、XP、CMM、ISO9000、SEI等真正应用的又有多少?一些公司仅仅是用来提高公司形象而已。缺乏正确的软件质量价值观念的软件开发团队是不可能有明确目标的,不可能会采用合理的开发过程,也不可能有共同的工做规范和框架的。
五、 无效的内耗占据了开发过程的主体 也许是一些不良的传统观念和思想的沿袭,一些软件开发团队出现了排挤其它有异议的成员、推卸责任、相互指责、贪功等,这种状况是最坏的,但却事实存在。没有凝聚力的团队是不可能作得很好的。
六、 模糊不清的角色职责定义 软件开发是由不一样角色的成员共同协做完成的,但目前国内的一些开发团队却没有对各类角色成员的职责作出明确的定义,成员就没法明确知道本身的目标,很简单的道理,都不知道要作的是什么,能按时准确的完成吗?若是每人都按本身想象中的职责去工做,那么有多少工做冲突、多少遗漏,谁能给出正确的估计?没有明确的职责定义人力资源的安排可能合理吗?结果多是找了个资格较老的程序员作了项目经理,找了个没有理会对象概念的人去作面向对象的系统分析,找个不顾网络安全、网络流量、事务特性、运行费用的人去设计一个分布式系统。。。有才华的人也许只能跺在被窝里激呼怀才不遇或许能作个好梦安慰本身。
3、 营造高效软件开发团队的关键因素
若是作到了高效软件开发团队的特征,那么这个团队确定是高效的团队,但是如何才能营造这样的一个团队呢?上面分析了国内软件开发团队容易出现的一些问题,解决这些问题及避免这些问题的出现是营造高效软件开发团队的出发点,但一些问题产生的缘由是其它问题的存在,关键是解决问题的根源,因此营造高效软件开发团队的因素是如下几点: 一、 选拔或培养适合角色职责的人才 软件项目是由不一样角色的人共同协做完成的,每种角色都必须有明确的职责定义,所以选拔和培养适合角色职责的人才是首要的因素,如:选拔软件项目开发经理必定要注意,这人要熟悉各类设计方法,愿意听取其余人的意见而且客观上和逻辑上把本身的思想与其它人意见相比,掌握激发团队成员的积极性的方法等;选拔系统分析员,必定要注意,这人要熟悉须要的设计方法,掌握系统分析和设计的原则,拥有完成职责所需技能和丰富经验等。选拔或培养适合角色职责的人才,特别是合适的软件开发经理是营造高效软件开发团队的最重要的因素。
三、 自我管理 做为团队的成员,应该以开发经理为首坚持管理自我,对工做负责,与同事友好合做,遵照工做纪律、自我技能培训等。
四、 学习国外成功经验 学习国外的一些成功开发过程、分析方法、设计思想、体系结构、设计模式等,如学习合理统一开发过程(RUP)的一些实践,概括适合本身的合理开发过程;学习先进的系统分析、设计的思想力求完成更高质量要求的软件项目;学习各类体系结构优缺点及适应状况,设计出知足系统需求的软件体系结构;学习国外成功设计模式,使代码的编写知足更高质量的需求。程序员