内容


评论专栏

Tony Efremenko:专业认证是提高团队敏捷性的关键因素

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: 评论专栏

敬请期待该系列的后续内容。

此内容是该系列的一部分:评论专栏

敬请期待该系列的后续内容。

为什么(以及如何)提高敏捷性

迫使 IT 提高效率无非就那么几个原因:技术领域的迅速发展以及整个经济形势的改变。面向服务架构(Service Oriented Architecture,SOA)、软件即服务(Software as a Service,SAAS)、云计算和 Web 2.0 正在改变技术世界,更不用说持续的业务压力一直迫使作出变化,要跟上这些步伐非常困难。我们每一个人都在努力工作来最大限度地发挥自己的价值,然而却经常找不到重点。

对于我们中的大多数人而言,这意味着找到最有效的方法。如果我们所接触的是全新的技术、全新的团队,并且这个团队是全球性的,那么需要有一种有效的方法来实现新的软件应用程序的开发和测试,并且所有人都赞同并理解这种方法,不管他们来自哪里或拥有什么样的文化。

当然,从本质上来说,软件开发是一种人类行为。我相信聪明的人们与团队交互并为之作出贡献的方式通常要比所关心的技术更加重要。有许多种技术可供我们选择并获得成功,但是一个组织中的成员的活跃性是最根本的。我们中的很多人都认为敏捷开发方法提供了可以识别并利用这些原理的框架。

您很可能已经听说过敏捷开发,因为它最近得到了大量关注。特别是在当今的商业氛围下,任何开发团队都需要按时交付成功的软件解决方案并能够有效地利用资源。敏捷开发方法强调通过短暂的开发和测试周期构建软件产品,因此非常适合当前环境下的典型开发环境。

我的敏捷开发经验使我相信,要使敏捷流程最有效地工作,一个关键因素就是让团队成员采用专业认证提出的原理,正如 Open Group 之类的专业标准组织所指出的那样。通过坚持专业人士已经认可和确立的标准,专业认证强调了可以完美契合到敏捷环境中的个人行为 —— “人的因素”。毕竟,真正会对项目的成功和失败产生影响的是团队成员以及他们之间的协作方式,使团队遵守专业标准有利于实现成功的敏捷开发。专业认证还可以提供职业发展指导,否则企业就会变成一个单层管理组织。当然,您很可能已经遵从了专业认证中提出的原则并且根据需求采用;如果是这样的话,那么通过获取并实现认证对您的经验进行验证和归档是很有意义的。

在本文中,我将讨论敏捷计划,分享有关它们的一些经验,并介绍在大型环境中使用敏捷方法时遇到的挑战。我还将解释专业认证的含义,介绍一些认证计划,以及我对专业认证计划对敏捷环境产生巨大影响的看法。

敏捷开发定义

您可能已经了解到敏捷开发就是一种遵从 Agile Manifesto 中所描述原则的软件开发,其中强调以下几点:

  • 个人和交互重于流程和工具。
  • 有效的软件重于完整的文档。
  • 客户协作重于合同谈判。
  • 应变重于墨守成规。

我们的目标就是通过关注有效的、经过测试的代码(来自于短期的反复编写代码和测试),从而改进软件开发过程。在敏捷方法中,全速前进(sprint)就是指非常短暂的项目周期(通常为两个星期),而日常的 讨论(scrums)就是指用来在团队之间沟通变化和展开协作的会议。通过一系列这些行为,应用程序被不断改进,直到获得可以进行交付的最终解决方案。

敏捷开发之所以吸引人,是因为它将已知的有效概念封装了起来,这与死板地遵守 “瀑布式” 项目计划完全不同,对于后一种情况,只有在项目的分析阶段对所有的需求和规范进行分析和归类后才能成功完成项目。通常情况下,需求会在项目的生命周期内发生变化,即使没有别的原因,交付项目所需的时间也常常会超出业务修改所需的时间。意识到这一点也仅仅是认识到敏捷方法广受欢迎的其中一个原因。

由于团队需要制定决策并缩短交付的时间线,因此敏捷开发鼓励重用资产。由于需要客户参与到决策制定当中,因此客户对于产品的交付也会产生影响。讨论会议使得通过沟通和协作开发解决方案和构建整个团队的技能形成了一种制度。

敏捷开发的挑战

仅仅因为敏捷开发是一种好的理念并不意味着它总是可以轻松实现。在过去,其他方法受到偏爱也是有其原因的。比如,瀑布式方法通过将项目划分为分析、开发、测试和实现阶段,以装配线的方式开发软件,允许针对每个阶段实现规范化。分析师专门针对需求分析收集,开发人员关注代码编写,测试人员和质量控制人员则主要对产品进行评估,而运营人员关注实现。通过这种方法可以为根据专业组织的环境提供灵活性。瀑布式方法在每个交付阶段的最初和结束时强调客户交互。

在敏捷开发中,会出现更多的角色重叠。开发人员会见客户,测试人员与开发人员进行交流,等等。这非常适合那些拥有所需技能和操作的人员,但是对其他人来说可能是个挑战。比如,对于一个项目,团队成员采用 Myers-Briggs 性格测试来找出最佳协作方法。令人感到讽刺的是,测试结果表明大多数团队成员从独自工作中获得个人的工作动力,与他人的交互被认为是浪费他们的创造力。换句话说,许多开发人员 “只希望编写代码”,不希望卷入客户交互中来收集需求和讨论业务。

当然,关注技术对于软件开发人员来说不是一个糟糕的品质,但是对于那些需要面向客户的分析人员来说,这会造成限制。如果孤立地关注技术问题使团队成员无法意识到驱动项目的来自业务方面的原因,这也会产生问题。

由于 “敏捷性” 意味着需求可以在迭代周期内改变,并且由于存在许多这样的周期,因此判断项目在这些环境下如何进展就成为了一个难题。例如,您可能需要知道:sprint 的 Iteration 3 意味着项目的进度是 60% 还是 80%?或者 对需求的最新修改产生的影响是什么?以及这些对于预算意味着什么?可以对敏捷开发作出这些重要的评估,但是这种思考方式与您在瀑布式方法中的思考方式不同。

最后,如果团队分布在不同的地理位置该怎么办?如何与位于印度的开发人员、位于巴西的测试人员和位于德国的业务专家保持密切协作?要在这些人员之间展开良好的合作,有效的协作技术必不可少。

IBM 的敏捷开发

IBM 在敏捷开发方面已经积累了多年的经验。有大量的 IBM 网站致力于这方面,并且许多文章都与此相关(见 参考资料)。就我个人而言,我经常参与过许多使用敏捷开发的内部项目,并且自 2007 年起我就已经开始使用敏捷方法。作为敏捷开发的支持者,IBM 一直在为敏捷方法的发展做出贡献:IBM Rational® Unified Process 现在使用了敏捷流程,许多 IBM 内部项目专注于协作和重用资产,而许多方法都描述了使用业务建模和客户来增进理解。IBM 甚至开始在其工具中实现这些概念。IBM Rational 发布了 Jazz™ 平台和 IBM Rational Team Concert,其中协作工具被直接嵌入。从内部来讲,IBM 支持大量协作工具,比如 IBM Lotus® Sametime® 和 Beehive 社交性网络,并鼓励通过评估和讨论来实现资产重用。

专业认证解释

为了响应客户的需求让高技能专家参与完成服务,IBM 在很早以前就采用了专业认证的理念,即确保具有技能和经验的人员通过一致质的量标准考核。正如我们所说,人们执行一项 “任务”,但是他们通过他们的职业发展实现其抱负,这是由他们所选择的专业进行检验的。

IBM 在四个领域实现了专业认证:IT 架构师、IT 专家、IT 顾问和项目管理。IT 架构师和 IT 专家在 Open Group 中也得到了实现,这是一个保持供应商和技术中立的组织,专注于开放标准和全球互操作性。认证的标准被包含到一个认证包中,由获取认证的人来准备,它需要展示以下领域的技能和经验:

  • 客户关注
  • 技术关注(专业)
  • 持续培训
  • 取得的成绩(包括专利、发表作品和演示,特别强调顾问指导)
  • 项目简介(由认证者描述如何应用以上内容)

完成了认证包之后,认证者将由三个已经通过认证的从业者进行面试。最后,如果认证者满足这些标准,那么就会为认证者颁发证书。

专业认证是一个漫长、严肃的过程,它将对这些重要的行为进行确认。当我查看认证包时,我寻找一种使用了最佳方法的严格的专业方法。在我看来,认证者仅仅拥有精深的技能是不够的;我希望知道该认证者会继续参加培训,使用某种方法来解决问题,并且将他学到的经验反馈给社区。

专业认证不能与产品 认证混淆,对于后者,将针对某种特定的产品或技术认证某人的技能。与之形成对比的是,专业认证考虑到了认证者的整个职业,而不仅仅是关注某种特定的产品。产品和技术认证构成了专业认证的重要部分,因为产品认证证明了某个给定领域的技术知识,这对于客户来说非常重要,因此会影响到专业价值。

为什么专业认证有助于敏捷开发

敏捷开发所需的客户业务和协作行为被反映到专业认证的基本核心价值观中。专业认证定义了这些因素的重要性,并提供了一个严格的框架,供某个个体证明他拥有这些价值观。

例如,如果一个开发人员只喜欢编写代码,而不希望与业务分析师展开协作,那么另一个具有(或正在获取)专业认证的开发人员将积极主动地追求这种交互,因为这种性质的行为正是专业标准所需要的。

专业认证还鼓励使用成功的方法和软件框架,以及重用资产。经过认证的专业人员必须参与最新的培训并能够演示新技能的应用。这种与 “重头构建” 的观点完全不同,可以很好地与敏捷方法相结合。

虽然敏捷开发的重点是经过测试的软件交付,但是交付的其他方面仍然非常重要,即使它们并不属于强调的重点。专业认证指导要求您必须通过培训、生成智力资本(比如出版)、发明创造(即获取专利)和其他可行的任务来对这一过程进行投入,从而提高团队的技能和能力,进而提高专业能力。这有助于确保与过程相关的可交付内容不被遗漏。

最后,专业认证还提供了一个开发路线图,可用于构建个人的职业规划。认证本身可以证明专业技能的提升,因此常常被看作是晋升的条件。

结束语

敏捷开发是指开发人员以良好的方式实际应用最佳实践,它帮助众多行业的企业(包括 IBM)获得了成功。专业认证要求具备驱动敏捷开发的专业行为和整体性,我相信它是最大程度地提高敏捷开发效率的最重要因素。

我希望通过这篇文章鼓励您考虑使用敏捷开发流程,并使您意识到需要转变过去考察某些项目角色的传统方式。我还希望您可以了解到专业认证如何更轻松地促进敏捷开发,增强您的专业知识并帮助您的团队获得成功。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere, Rational
ArticleID=413178
ArticleTitle=评论专栏: Tony Efremenko:专业认证是提高团队敏捷性的关键因素
publish-date=07222009