UML软件工程组织

 

 

如何领军开发团队
 
作者:Angus Kidman 出处:网络
 

软件开发很少是个人的行为,所以一个团结的小组是任何重大项目取得成功的至关重要的因素。在本文里,我们将探讨一些用来确保开发人员积极高效工作的过程和工具。

说得客气一点,软件开发人员在按时交付工作上的名声不太好。造成这一状况的一个重要原因除了各个开发人员的“贡献”之外,还有小组管理过程的懈怠。在合同制开发员工增加和更多地利用海外开发公司的情况下,小组的团结变得更具挑战性。

因而要在预算范围内按期交付符合规范的软件,小组的有效管理成为了最重要的因素。

专家同意说建立小组最重要的一个元素是沟通。“沟通对于满足业务目标是绝对重要的,”IBM ANZ的Rational技术主管Richard Dowling说。除了每天的信息,开发人员必须清楚地了解整体的目标。

“一个高效的开发小组朝着一个共同的目标携手努力,为了让员工理解和共同分担业务目标,主管们需要就业务的方向进行沟通,并解释每个个人如何为(公司)更大的前景贡献力量,”冠群(Computer Associates)澳大利亚分公司负责研究和开发的副总裁Eugene Dozortsev博士说。

这并不总是一项轻松的任务。“在软件生产商的商业要求和开发人员的创造力和质量之间取得平衡是一件相当棘手的事情,”Altiris公司亚太区副总裁Geoff Masters说。这家公司还在美国和澳大利亚开发系统管理软件。“开发小组很容易偏离目标,并且很轻易就陷到技术里而不是最终目标上。

在这一方面打破平衡也很重要。“过多的小组参与反而降低生产效率,并导致多数人都同意一个没有明确目标的设计,”Masters警告说。“这就增加了无法交付所需产品或者交付延期的风险。两者对于业务和员工士气都是有害无益的。”

一旦具体的技术开发规划开始之后,沟通变得更为重要。“开发小组内部共同达成一致的过程对小组的动态和表现的影响与该一致本身同样重要,”Internet发展代理公司Red Square的高级分析师Steve Baty说。“让项目小组成员参与到开发项目的策划和规范制定阶段里来是激发其动力实现项目成功的好方法,这将促使生产效率和成员责任感的增加。”

一旦工作分派下去,你要如何确保员工取得最好的结果呢?一种可能性是任务的高度具体分化。“我们的软件是模块化的,这意味着我们具有给具体模块分配单独的程序员的优势,”Debra Asciak说,他是消息发送解决方案开发商System Solutions澳大利亚分公司负责技术服务的主管。“这些程序员在为我们工作期间专门为这一模块服务,因此他们对其操作和错误的清除负有完全的责任。通过把任务变成个人的任务,我们发现编写优秀的、可靠的代码成为了他们自己的利益所在。”

在这样一个分割化了的环境里,建立一个高效的小组需要技巧和关心。一个很重要的考虑因素是创造一个轻松和灵活的工作环境。

“对内对外沟通良好、交往融洽的开发小组往往在工作上很容易实现轻松和高效,”Masters说。“像小组所处的位置这样的小事情也会带来巨大的差异。如果你有两队密切合作的小组,比如开发小组和组件测试小组,那么安置他们的最佳位置是大楼里相邻的两间办公室里。有些人可能会觉得这样会分散人的注意力,但是如果你有好的员工,信息交流的增加和通过相互渗透的学习所带来的好处会超过其负面影响。”

评估小组成员的个性和发现可能存在的问题来源也十分重要。“让小组里充满不同的个性也很重要——你需要至少一个‘角色’来给小组带来士气,但是这个人仍然是小组的一分子和动力十足的工作者,这一点很重要,”系统集成商Attain IT的技术主管Robert Silver如是说。

“小组不团结的一个最大原因是某个个人没有贡献自己的力量或者没有按规则办事,”Silver说。“尽管无伤大雅的玩笑和争论以及偶尔出现的不一致对于小组来说是很好的,但是当小组里的某个个人失去了对小组其他成员应有的尊重时,将它从小组里清除出去就是很重要的。”

合同制的挑战

开发项目里合同制员工的增加为管理增加了另外一种挑战。“对于固定的员工,你正在花时间致力于建立一种文化、培养这些员工、发展开发人员之间的关系,以帮助推动协作和小组工作,”Avaya澳大利亚实验室的主任Quentin Goldfinch说。“而对于合同制员工,这种关系的构建在优先列表上的位置就没有原来高了,因为它们更换的速度相当快。”

这并不是一种感性的方法。“那些雇用合同制员工的公司也可以从他们身上学到很多东西,”Goldfinch补充说。“合同制员工常常会因为其工作的性质而在工作的过程中学习到宝贵的经验,并能接触到更大的工作环境、流程和技术。”

让合同制员工融入进来仍然很困难。“当合同制员工在专业上比不上相应的固定员工时,对他们的不满情绪就会四处弥漫起来,”Attain IT公司的Silver反复强调。“有一种看法认为他们拿的报酬要比固定员工的多,但是相应工作成效却不成比例。”

下面几个步骤可以帮助减轻这些问题。“如果不是万不得已,就一定要避免引入合同制员工,尤其是在固定员工很早就介入开发过程的时候,”Baty说。“否则只会增加小组里‘他们’和‘我们’之间的分化,并在项目过程中导致生产效率的下降。”

“公平地对待每个人。如果必须要在晚上或者周末加班,让所有人都留下来工作,而不是某一工种的员工。这种类型的区分对于精简预算来说有用,但是有可能在项目过程中给你带来错误的经济利益。”

来自海外的挑战

除了应付合同制员工,项目的管理者现在必须应付处在不同地理位置以及越来越的多处于不同国家的开发小组。“如果程序员在地理上位于一个所有测试设施和最新代码都可获得的中心位置,这肯定是非常好的,但是实际情况往往不是这样,各个人的工作地点可能总是不一样,”System Solutions公司的Asciak说。

在这样的情形下,可能会发生一些重要的问题。“每当小组被按照地理位置分开的时候,我们似乎就会发现在意识上形成‘我们和他们’的概念。在我工作过的其它组织里,我看到过很多次,很难阻止这种思想的蔓延,”Silver说。

对于海外员工的细致规划变得更为重要。“如果项目被分配给一个外地的办事处,这个办事处就需要完整独立且组织良好,”Altiris公司的Masters说。“如果不是这样的,外包或者海外工程的好处就会被额外的管理和集成成本所抵消。”

建立初期的个人联系也很有价值。“一个好的方法是尝试让整个小组的成员在一开始至少进行一次面对面的见面会,”Baty说。

即使做到了这些步骤,每天的挑战还是存在的。“在某些方面,你几乎不得不培养出一套完全不同的方法,来应对处于与自己不同地理位置的小组成员,因为沟通的主要方式还是通过电话或者电子邮,而无法直接到它们的办公桌前或者办公室去沟通,”Avaya公司的Goldfinch说。

技能和工具

造成小组内部起冲突的一个常见原因是经过认证(但是常常经验不多)的员工与老员工(缺少正式的认证,但有多年的工作经验来弥补)之间的冲突。有些开发商可能更喜欢后者。“认证只与技术支持人员相关,他们需要用已知的典型方式来集成系统,这就需要学习文档和培训,”Asciak说。“但是我们的开发人员常常都在使用新的生产软件,有的时候还是测试版的,文档工作常常也很糟糕,他们的目标是随时变化的目标。他们需要具备适应能力、显示出进取心,并理解广阔的前景。以我们看来,在计算机科学或者工程方面的学位、正确的工作态度,以及合适的工作经验要比认证证书有用得多。”

认证确实有其用处。“我们珍惜个人通过认证所获得的亲身经验和能力,但是有的人在取得认证上存在问题,但是他们具有超凡的能力和经验以及高度的进取心,”Silver说。

然而,很多认证缺乏灵活性,这对开发环境是一个挑战。“认证,如果太离谱了,可能会培育出一种单一的文化,”Goldfinch说。现在市面上有很多软件工具能够每天帮助完成融合小组的任务。冠群公司使用一个门户软件来跟踪重要的任务。Silver主张使用即时消息来培养小组精神。

但是,多数人都同意流程和清晰的计划要比技术更重要。“不要把精力过多地放在软件或者特定的工具上,而是要放在适合于你所处的环境、小组规模的东西上,放在你在成长循环中所处的位置上,”Masters说。“对于某些小组来说,有项目计划和跟踪工具可能是相当完美的。但是对于处于不确定环境下的小规模小组,项目管理工具的实现和使用都太贵了

 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号