从软件项目过程的无组织状态谈团队的建设

    我所在的公司是一家从事XX行业软件开发的企业,就其规模和在行业的影响来看,是国内XX行业软件开发最大规模的实体单位,但由于服务行业的特殊性,加上所开发软件的适用面,软件开发的流程和管理的规范性欠缺,从某种意义上来讲,可以划归为“无组织状态的软件项目过程”。本文从笔者自身的工作体会出发,尝试总结归纳出“无组织状态的软件项目过程”的主要表现,进而以软件工程的基本理论为基准,结合业界优秀企业的软件项目管理经验,谈谈处于“无组织状态软件过程”的中小企业如何从无到有逐步建立并培养与企业技术和管理水平现状相适应的有效团队。

    根据我所了解到的情况,目前国内相当数量的中小软件企业,特别是处于信息化应用程度较低行业的软件企业,其在软件过程和软件项目管理的规范性上尤为欠缺。在这样的软件企业里,软件项目的所谓“成功”往往是靠一两个人用汗水换来的,而这样的“成功”背后实际上隐藏着的却是:项目后期的投入远远超出前期的投入、软件质量难以保证、无数的bug、无休止的“救火”、难以通过阅读来理解的代码、程序的可扩展性极差、模块之间的高耦合度导致牵一发而动全身、软件维护工作可谓艰难……。

    本文并不打算就什么是“无组织状态的软件过程”做一番定义,只是通过一些反面的例子来勾勒出这样的缺乏有效管理的企业或团队具备的共同特征。笔者通过亲身的工作体会,分析并总结出软件项目过程的无组织状态主要表现在如下几个方面:

⑴ 软件企业各级主管对软件项目的过程和软件项目的规范化管理没有足够的重视,有些甚至没有相应的理念,认为软件开发根本不需要什么过程,更不懂得如何组建有效的团队进行规范化的开发;

 ⑵ 软件开发是个人行为而非团队行为,更有甚者,在有些企业里软件开发往往变得好像是个人的事,产品或项目没有立项和上马的决策过程,有什么产品大致成型了就卖什么产品,有什么能赚钱的项目就接,而不去思考有没有相应的资源去完成这个项目。产品或项目的成功和失败都归功或归咎于个人;

⑶ 无视需求分析的重要性,认为用户的需求是无法分析的,只能做到哪儿算哪儿,功能的实现不是看用户的需求,而是看基于当前的程序结构能不能实现;这样的软件开发行为常常导致“闭门造车”的后果,做出来的功能与用户的实际需求严重脱节,只能独自欣赏;

⑷ 对软件设计的重要性不够重视,有些几乎没有设计的过程,所有的项目都是从一开始就编码,各级主管跟踪项目进度的时候不是询问软件总体设计方案,而是关注有没有开始编码,这往往造成多次的返工,浪费人力和时间,而且由于缺乏架构的概念,程序完全是由代码堆积而成,最终出来的初始版本仅仅是“just can work”,而将提高、完善的希望寄托于后期通过增加人力来实现;

⑸ 不重视软件的测试工作,认为测试是可有可无的,即使有,也没有规范化的测试流程,没有测试计划,更不会借助于有效的测试工具和测试方法,这样的测试只能称得上是“试”,而没有“测”;更有甚者,有些软件不经过任何有效的测试就投放市场,导致的结果是程序十分不稳定,客户怨声载道,对企业的形象以及今后市场的拓展都会造成很大的负面影响;

⑹ 有些企业虽然有团队的概念,但团队成员之间只有分工,没有协作,各自埋头做各自的工作,工作之间不需要配合或无法配合,彼此之间也就没有沟通,或者团队成员之间虽然有分工,但彼此缺乏凝聚力,不愿意共同为一个目标努力,不能起到1+1等于甚至大于2的作用;

    以上的种种表现说明了一个非常浅显的道理:软件开发在这样的环境中进行只有一个后果,那就是失败。当然,失败的表现形式是多样的,可能最终能出来一个产品,但这个产品bug无数,维护困难,扩展艰难,无法适应快速变化的需求,从软件工程的角度来说就已经失败了。这样的软件企业在高竞争性以及一些信息化应用程度比较高的行业里是无法生存下去的,但对于一些处于信息化应用程度偏低的行业中的企业,加上企业自身的一些有利条件,还是能够勉强支持下去。

    软件行业多年来的理论研究和实践经验总结告诉我们,软件企业要发展,靠的是两个方面的主要因素,一是高素质的人才梯队,二是规范化的流程。传统的软件工程理论强调软件开发的流程,认为流程的规范化对于软件项目的成功有着至关重要的作用,用流程来规范化人的行为,强调团队成员之间清晰化的分工与协作,强调软件开发的阶段性,并且产生了像瀑布模型、喷泉模型、演化模型以及RUP增量迭代模型等表达开发流程阶段性概念的开发模型。而敏捷软件开发的理念则认为,人是软件项目中最重要的因素,应该最大程度地发挥团队成员的主观能动性,良好的流程和有效的工具可以有效地武装开发人员,提高他们的工作效率。无论是哪种理论都强调了上述两个最主要因素的重要性。

    在高素质的人才梯队中,处于底层开发人员不仅要具备完备的软件开发知识,包括程序设计的基本功、对某项或者某类技术的熟悉以及对软件开发过程的了解,还要具备良好的沟通协调能力。如果一个开发人员缺乏基本的与别人交流、沟通以及合作的能力,那么这样的开发人员从根本上来说是不合格的。处于中上层的应该是具备系统分析与架构设计思想、通晓相关技术适用条件和优缺点、经验丰富的系统分析师和架构设计师。在一些特殊领域中,还需要既懂得领域相关知识,又具备足够的计算机软件知识的人才,这样的人能够在软件的需求和设计之间起到较好的桥梁作用。

    开发流程的规范化是软件行业多年来一直研究和实践的内容,经验证明,缺乏规范化的软件开发流程是不可能产出优秀的软件产品的。优秀的软件企业必然有一套适合于自身技术和管理水平现状的软件过程和管理规范。良好的软件过程和管理规范是软件项目的润滑剂,能够为软件项目的成功和高质量产品的产出保驾护航。

    通过以上的分析,我们回过头来再看看软件企业或团队“无组织状态的软件过程”的主要表现,不难总结出其弊病所在,归纳起来有如下几个方面:

⑴ 人才缺乏,形不成高素质的人才梯队,更难以组建有效的团队;

⑵ 有一小部分高素质的开发人员,但缺少能够将其形成有效团队的人,追根溯源,是企业的管理层没有这样的观念和意识;

⑶ 不重视流程和标准的建立,软件开发过程的可重复度不强,适合于企业和团队自身的好的开发技术和管理经验难以有效的积累,从而难以形成规范和制度;

⑷ 从企业文化角度分析,企业缺乏对员工的有效激励机制、技能培训与拓展机制以及良好的用人理念,导致难以留住优秀的人才,再加上流程和制度的不规范性,人员流动给企业造成的核心技术和客户资源流失情况相当严重。

    软件产品的质量是软件企业的第一生命线,是企业参与市场竞争的最核心的要素,而高质量的软件依赖于高素质的开发人员,需要有效的规范化流程来推动。建立一支有效的团队,并努力打造成高效的、优秀的团队,对于软件企业来说至关重要。对于还处于“无组织状态的软件过程”的软件企业来说,要想从根本上改变目前的现状,跳出恶性循环,首要的任务是需要从零开始组建与企业技术和管理水平现状相适应的软件开发团队。

    组建有效的团队需要几个重要的基本要素,首要的是需要人,如果企业针对某个部门或者某个项目团队没有足够的人力,又不愿加大投入引进人才,那组建团队乃至改变现状都是空谈。当一个企业的主管对于企业自身目前的现状束手无策,甚至全然不知,只知道通过不断地压制员工来获得臆想中的企业发展,那么这样的企业是没有任何生命力的。组建有效团队的第二个基本要素是需要好的管理体制和企业文化,软件企业想发展必须靠创新,而创新则需要相应的管理体制和企业文化来支撑。如果一个企业内部墨守成规,不愿意为创新付出,害怕变革,那么无论从战略发展还是核心技术方面都会远远落后于竞争对手,在激烈的市场竞争环境中迟早要淘汰出局。良好管理体制和企业文化的软件企业内部应该鼓励创新,并且应该为员工积极营造一个能够展现自身能力的平台,让员工对未来充满希望,这其中包括与员工自身能力相适应的薪资水平、升职转型的机会以及在技术水平上不断进阶的机会等。

    纵观业界优秀的企业,总是在软件过程及软件项目管理的理论和实践中积累了大量的宝贵经验,始终保持着一种积极、创新、进取的精神,并且更重要的是,他们都拥有着一支支充满激情和创造力的优秀团队。大多数成功的软件企业都通过CMM/CMMI相应等级的认证,在获得行业管理标准肯定的同时也给企业自身带来了效益。当敏捷软件开发理念逐步渗入人心时,国内各行业中优秀的软件产品和服务提供商,如腾讯、华为等公司都积极地变革原先的软件开发流程,探索并实践着适合自身的敏捷软件开发方法和理念。优秀的团队是由高素质的人才梯队在规范化的开发流程指引下逐步磨练打造而成,规范化的流程除了能够显著地提高团队成员的工作效率意外,更能够有助于帮助团队积累开发经验。优秀的团队应该是自组织的,当团队结构变动时,不致因一两个核心人员的流动而发生根本性的变化。

    有效团队的组建就是将合格的人才放到适合的位置上,通过有效的规范化的开发流程、管理制度,并辅以相应的企业文化熏陶,以达到软件过程和软件管理规范化标准化的目的。处于无组织状态的软件过程的中小企业应该尽快从无组织状态的恶性循环中跳出来,着手大胆的变革和创新,突破既有的管理机制和企业文化,努力寻求适合自身具体情况的改革发展之路。笔者在这里对这些中小企业如何突破无组织状态的软件过程给出一些建议:

⑴ 树立起建立有效团队对软件项目的成功起到至关重要作用的基本理念,变软件开发的个人行为为团队行为;

⑵ 通过招聘或人才引进的方式吸引到满足团队组建数目要求的合格人员,获得团队组建最基本的要素,并且需要注意人员的知识和能力结构,做到技能互补;

⑶ 完善团队的分工与协助体制,加强团队成员之间的交流与沟通,营造一种积极向上、共同进步的团队文化;

⑷ 逐步建立起团队的基础技术规范和制度,包括职责的分工、编码规范、开发流程步骤以及需求分析、设计和测试等阶段的文档规范等等,同时要努力实践并补充完善规范和制度;

⑸ 团队的核心主管必须由懂技术、会管理、经验丰富、有技术魅力的人担任,从零开始的团队建设非常需要能够让团队其他成员信服和尊重的团队领导者,如果团队的领导者连最基本的人际关系都难以处理,那么即使他个人水平再高也难以带领好一个团队;

⑹ 让团队的所有成员都非常清楚团队的共同目标,并且通过一系列的管理技术和方法来引导团队成员甘愿为团队的共同目标去努力,和其他成员分享自己的技能知识和经验技巧,从而达到团队成员的共同成长,这样的团队才称得上是有效的团队。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值