简介

  创建敏捷的软件开发团队并不像表面看起来那么容易。很多管理人员和团队主管会雇佣技术合格的人组成团队,扔给他们某种敏捷过程,然后就希望所有事情都像书上说的那样有效。这种方法不仅不现实,而且非常容易失败。本文将会描述成功团队的要素,并说明我们应该如何创建这样的团队。

  成功团队的要素

  成功的敏捷软件开发团队由技能熟练的开发者组成,他们已经确立了团队价值,拥有良好的沟通,并且总是寻找改善的机会。对于成功来说,尽管这些因素并非绝对必要,然而拥有全部因素会为我们铺就一条通往成功的捷径。

  核心原则

  对于想要为团队确立什么样的文化,每个人都有自己的想法。除非管理人员雇佣自己非常熟悉的人,否则就很难将文化的愿景变为现实。我们很早就发现以下重要特征:拥有客户的视角、有效地协作、通过事实管理,以及专注于执行等等。具体执行了这些原则的团队就具备了成功的条件。执行这些核心原则的团队成员会表现出大量良好的行为,诸如向客户提问、像客户那样思考、愿意请求帮助、愿意帮助他人、根据具体的事实而不是个人意见来做决定,以及努力交付完成的代码。

  有效沟通

  有效沟通对成功起着决定性作用。与人面对面交流是最有效沟通的方式之一。当人们聚在一起的时候,就更容易得到好主意。有效沟通另一个决定性因素是专注。如果没有一个定义好的主题能够让参与者集中注意力,那么谈话就不会有好的效果。有效沟通第三个重要因素是让谈话专注于事实和想法。当个人的意见取代了事实和想法,那么谈话很快就会变为为了个人胜负的争辩。

  好的成员

  成功团队最重要的因素就是人。软件开发团队需要有才能的人,需要熟练的开发者来使用新的技术创建复杂的系统。创建这样复杂的系统不可能由一两个人完成,因此一个团队是很必要的。这样,就需要开发者也必须具有良好的团队精神。

  不断提升

  我们知道,当创建新的团队来开发新系统时经常会失败。能否从发生的错误中学习到经验和教训,这就是成功团队和失败团队之间的不同。只有检讨过去的失败并且做必要的改善,团队才能够不断进步。

  创建团队

  关注沟通

  从创建公司开始,我们就关注沟通。我们办公室的物理布局是开放的。开发团队坐在一个大的开放的屋子里。每个开发者都有自己的桌子,并且以方便沟通的方式分组。这个开放的环境使得沟通更加容易,因为人们不会藏在自己的小隔间里面,从而谈话都是“公开的”。(重要的是,每个人都要表现得谦虚和职业化,这样环境才不会变得不可忍受。)

  确立核心原则

  当创建团队的时候,我们就意识到需要确立团队所要表现出来的特征。开始我们认为日常的交互会为团队注入我们所寻找的特征。捕获到这些特征,并将其普及是很重要的,这可以保证所有团队成员都恰当地关注某些价值,而我们认为对成功来说这些价值是很重要的。对我们来说,确立想要团队表现的特征给了我们真实的体会,其中之一是当前某些团队成员不会表现出那些特征。我们和团队一起做了大量工作,以学习并展现这些特征。有些团队成员的反应很积极,而有些则不然。在一些情况下,我们需要让某些人离开团队。我们得到的另一个体会是:我们的面试过程并没有筛选出想要的人。早先的面试过程过于专注于候选者的技术能力。我们的选择过程寻找的是技术最熟练的人。这个标准帮我们得到了非常聪明而且能干的开发者,但是并不能总是为我们带来能够在团队环境中表现出色的人。

  面试过程

  寻找具备足够技术能力并且适应现有文化的人非常困难。一方面,客观衡量候选人的标准能够让我们对所有候选人进行快速筛选。另一方面,纯粹的客观标准不会找到具有“软技能”的人,而这样的能力有助于人们在团队环境中行使职责。我们在如何高效准确地探索这些领域做出了很多努力。当前的面试模型是一个多阶段的过程。过程中的第一步是电话面试。通过电话面试我们可以快速向候选者介绍公司,并且在较高的层次上调查候选者。在电话面试中,我们会涉及一些基本的技术能力、对于敏捷开发的想法和理解,以及某种层次上的个人反省。通过谈及这些方面,我们能够知道某人是否会在我们的环境中发挥作用。如果候选者通过了电话面试,那么我们会为其安排现场面试。该面试被分成三个部分:技术、过程、个人。对于每个部分,我们都会指定至少两个团队成员,从而团队的大多数人都会与候选者交流。面试的技术部分关注的是基本的技术能力,并且包括动手编程练习。过程部分会涉及测试、问题解决以及结对编程方面的思想,还有其他主题。个人部分会查看冲突解决、个人激励以及总体的心理稳定性。我们已经发现这个过程很有效。如果三个部分都完成了,而且我们对候选者的加入没有任何犹豫,那么这个候选者将会在我们团队中很好地工作。

  过程改进

  过程改进对于成功的软件开发团队也是非常重要的。我们不仅从用来编写和部署代码的角度检视过程的改进,而且会检视用于为工作安排优先级和雇佣新员工的过程。“3×3”的复审就是我们用于改进的一种机制。整个团队聚集在一起,每个团队成员都必须提出过去三个月中得到的正面的东西,以及过去三个月得到的负面的东西。然后针对正面组和负面组,每个团队成员都会各得到三张选票。这些选票会投给每个列出的项目。当复审完毕,我们会从高层次的视角看到团队认为哪些是正面的,认为哪些需要做出改进。这个视角有助于让团队与已明确的团队特征保持一致。过程改进的另一个方面是面试的过程。因为对于敏捷开发技术的理解已经成熟,所以我们需要找到的人不仅仅是技术高手,而且要具备很好的团队精神。经过大约十八个月的过程,我们修正了现有的面试过程并使其不断完善,所达到的效果是:难以适应我们的环境的候选者将无法通过。这个改进的过程让我们对雇佣的人更有信心。在执行现有过程和持续提升过程之间,我们已经找到了一个平衡。当过程中存在问题的时候,我们就会花费一些时间来评估它。如果是整体上的问题,我们就会试图找出所能做的增量式的改变来改进过程。如果不是全体的,那么我们通常会先采取观望的态度,然后再做出改变。

  结论

  通过很短的一段时间,我们已经学到了一些对于创建成功的敏捷开发团队很重要的知识。确立团队价值并坚持下去,这帮助我们创立了成功的文化,并且改进了我们的面试过程。促进好的沟通除去了很多团队的阻碍。改进我们的面试过程帮助我们识别合格的开发者,他们会很好地与现有团队融合。复审我们现有的过程帮助我们持续提升团队的水平。

艾伟也谈项目管理,创建敏捷团队相关推荐

  1. 艾伟也谈项目管理,敏捷的坏态度

    虽然所有软件开发的专业人士都会对这篇文章感兴趣,但是经理.CIO以及软件架构师会对它最感兴趣.这个话题可能会引起许多争议,但我写这篇文章是为了让你了解在敏捷运动中看起来正在日益增长的问题. 你为什么在 ...

  2. 艾伟也谈项目管理,在团队中如何推行一项新的实践

    在一个老团队中,推行一项新的实践是非常不易的. 如果要求,每天10点站立会议增强团队成员之间沟通.大家会心里先衡量一下,恩,不就是每天站个十几分钟,自己说几句话,然后听别人说嘛,不难做到. 如果要求, ...

  3. 艾伟也谈项目管理,敏捷教练的工具箱

    学习并不是简简单单的阅读和浏览,而是一个积累的过程,一个通过持续的学习,对自己的知识体系不断丰富.索引的过程.接下来我会从四个方面入手分享我的经验. 高质量的信息源和高效的学习 Google是一个很好 ...

  4. 艾伟也谈项目管理,我是如何带领团队开发项目的

    最近有不少朋友写信问我一些关于团队开发的问题,由于这段时间有些忙,没有回复.今天写一篇这方面的文章向大家介绍一下我是如何带领团队开发工作流项目的 关于团队建设,项目管理的文章网上已经有很多了,在这里我 ...

  5. 艾伟也谈项目管理,关于项目管理的一点体会

    这段时间,一直在负责一个项目的管理与开发.在时间短.任务紧,而团队人员又大部分是没有经验的菜鸟的恶劣情况下,我带领接近40人的团队,终于在客户规定的时间范围内如期交付产品.这其中,经历了需求变更.人员 ...

  6. 艾伟也谈项目管理,IT项目管理的六种错误思维

    错误一:错误的需求调研阶段,导致很多项目永远无法结束! 在软件行业,在界面设计没有正式展现给客户之前,所有的工作都处于需求调研阶段.其实建筑行业已经给我们做好了先例:客户买房子之前是先要看看样板房和模 ...

  7. 艾伟也谈项目管理,如何做一个合格的项目经理

    项目经理这个角色说大不大,说小也不小.在大公司,项目经理这样的角色可能存在不计其数,他们很多都是寄托于项目的存在而生,项目的完成而终:但对于一些小作坊的软件公司,项目经理一职很多时候是一个长期持有的过 ...

  8. 艾伟也谈项目管理,说说我们项目组的考核

    周六又被老板招呼去开会,烦!在会上,老板说要对我们软件部实施绩效考核,并要求我们几个项目经理在一起商量下,把具体的实施细则给敲定下来.结果我们几个经理们在公司会议室一直讨论到晚上八点多才大体弄出个实验 ...

  9. 艾伟也谈项目管理,谈谈如何说“不”

    我曾所在的两个项目组,如果处理不好"不",则会给自己和团队带来很多问题,发生在我身上也有好几次. 项目组A:在不看好项目组开发方法的情况下仍旧敬业工作. 我在项目组A曾经担任过开发 ...

最新文章

  1. php-fpm 参数及配置详解
  2. RabbitMQ系列之三:publish subscribe
  3. 【centos6.5 安装 node.js + npm】
  4. php无法连接mysql_php无法连接数据库
  5. mac 连接百度云服务器地址,教你怎么在 Mac 下把百度网盘映射到另一个文件夹
  6. 三星java手机播放器下载_8k视频播放器软件下载安卓-三星8k视频播放器KMPlayer下载v30.10.231 内置提取版-西西软件下载...
  7. 骗分技巧————《OI骗分导论》
  8. 解决Chrome谷歌浏览器Flash插件已被屏蔽
  9. 基于数据安全的风险评估-数据资产识别
  10. HTML5游戏引擎(八)-矢量绘图——绘制矩形-drawRect 绘制圆形-drawCircle 绘制直线-moveTo和 lineTo
  11. Hadoop-统计红楼梦里出现名字的次数(MapReduce学习)
  12. Swift - 去处图片的白色、黑色背景(使UIImage背景透明)
  13. 安装kalibr踩坑5:E: Package ‘python-software-properties‘ has no installation candidate
  14. KICAD批量修改原理图(.sch)中的字段
  15. c编程语言外文翻译及原文,面向对象和C语言-外文文献译文-Object-Orientation and C语言编程外文文献及中文翻译...
  16. 日本准备推行AI婚配,年轻人会为“爱情算法”买单吗?
  17. WQ7033开发指南(基础篇)之1.0 开发环境搭建和编译
  18. lua 之 全局变量
  19. 【STM32Cube】学习笔记(五):红外避障传感器
  20. Postgres SQL 远程连接数据库

热门文章

  1. g++来进行编译的头文件路径问题
  2. 美国校园最in俗语大全
  3. 微信小程序:新功能WXS解读(2017.08.30新增)
  4. 金蝶K3检验单导入导出的修改
  5. ker矩阵是什么意思_变换矩阵与投影
  6. Matlab:创建并计算多项式
  7. 前端低代码-少写代码实现灵活需求
  8. 测试开发之Python核心笔记(7):输入与输出
  9. 【Pytest篇】pytest的parametrize之ids参数正文编码问题
  10. 最新整理:传智播客springboot