QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

如何在开发团队中增加新成员

  • 2013-12-08
  • 本文字数:2773 字

    阅读完需:约 9 分钟

在项目开发过程中,团队规模往往不是一成不变的,特别是在项目进度紧张的时候,增加人手也许是一个必要的选择。但是,人员的变动往往会影响到整个团队的建设甚至效率,那么,如何正确地在开发团队中增加新成员呢?T. LAMINE BA 是一位有着丰富团队领导经验的开发者,他分享了自己的心得。

他指出了需要增加人手的一个典型场景:

我——项目的技术领导——和十几个 Java 开发者都知道,这将又是一天漫长的工作。我们已经落后于我们的进度了,而我们的客户不会接受低于他们预期的产品的。尽管我的直觉告诉我,事情已经有点麻烦了,但我依旧尽最大的可能保持冷静、客观,以让我的同事们保持信心。过度的加班已耗尽了开发人员的精力,我也观察到他们的工作效率已经开始下降了。此外,我的计划成本差异分析表表明,我现在最好的选择就是往这个项目上多添加些人力资源。

当软件开发项目停滞时,在开发团队里添加一名新成员看似是一件简单地事情。然后项目经理常常发现添加新成员后他们的处境变的更加艰难。为什么呢?往团队里添加新成员是一件敏感、有危险的事情,项目中所有领导都应该足够关注、关心添加新成员这件事情。

既然提到“团队”,那么团队应该如何来定义?Michael Levin 是位 Java 大牛,也是遍布全世界的多个 Java 用户组的创建者,他曾经这么说:“人力资源就像锋利度不同的刀子。是的,他们都能工作,但是‘锋利度’是不同的。因此诀窍是在正式开工前先测试他们的能力。”这说明找到适合一份工作的人力资源并不是一个简单的任务。因此在解决手上的问题前,我们需要先了解下是什么组成了一个团队。

依据定义,也依据项目管理协会 (Project Management Institute) 的说法,团队包括该项目的利益相关者。在这里,我们只关心开发团队。我们是社会型动物,团队是我们的生存和发展中重要、固有的一部分。为了更好地理解团队的特点,我向大家推荐 Bruce Tuckman,他在 1965 年提出了团队发展的“组成—震荡—正规—执行”(Forming-Storming-Norming-Performing) 模型。Bruce Tuckman 提出,团队的形成往往遵循这四个连续的、可预测的阶段。在“组成”阶段,团队成员对团队的目的尚不清楚,是团队领导在指引方向。在“震荡”阶段,多个想法互相竞争。在“正规”阶段,大家对目标有了共识,大家也有了一个共同的方案。最后,在“执行”阶段,整个团队已经有了清晰的自我认知,并且可以迅速响应外界环境因素的改变,以实现高绩效水平,实现团队目标。

T. LAMINE BA 认为,一个新成员很有可能伤害整个组织。为了避免这种情况的发生,技术领导必须时刻关注团队现在所处的状态。领导必须假设,如果有变化发生,团队将退回“震荡”状态以适应变化。因此,领导要注意到,在某些阶段引进新成员效果好于在其它阶段引入新成员的效果。下面是针对不同阶段的一些建议。

  • “形成”阶段。考虑到大部分利益相关者在这个阶段对项目的目标尚不明确,大多情况下,这个阶段是增加新成员的最好时机。新成员可以很轻松地融入团队,很快为团队做出贡献。
  • “震荡”阶段。在这个阶段,团队成员讨论、提出许多想法。并依据经验、亲和力以及其它特征产生一些子团队。通过自我组织,每个子团队都会产生自己的领袖,而这个领袖在指定的渠道发布正确信息。领袖需要预期到紧张、困难的局势,此外,领袖个人还需要有过硬的软实力,例如良好的谈判能力等。在这个阶段,新成员能否很容易地融入团队往往取决于项目经理的能力。因此,项目经历需要密切关注团队内形成的新的、非正式的等级制度,这个制度对团队成员有重要的意义。此外,项目经理可以明智地向全部团队成员介绍新成员的角色,推动全体成员参与重组。
  • “正规”状态。团队此时已经有了清晰的计划。所以成员都理解这个计划,并且认可这个计划。团队的目标已经取代了个人的目标,工作进展成了各个利益相关者的仪表盘。在这个时候增加新成员是有风险的,其他人可能会拒绝做任何改变,因为他们花费了很大功夫才达到现在的共识。因此,技术领导有必要在团队整合过程中密切关注、引导新成员。这是向各个利益相关者展示业绩图、情景假设、预测模型的最好时机,通过这些展示,领导可以让团队成员认识到团队需要更多的资源这一现状并获得团队成员的支持。团队领导也应该做好团队可能会自然过渡回“震荡”阶段的准备。此外,优秀的谈判技巧可以让团队很快地再变回“正规”状态。
  • “执行”阶段。在执行阶段,团队工作效率很高。团队可以在预计的预算、时间条件下完成所有交付任务。通常,大部分团队成员对工作环境非常满意。这种高效的工作效率不容易达到,也不常达到。而且这种状态持续时间往往不长,团队很可能又折回“震荡”状态。因此在“执行”阶段添加新成员是最糟糕的。尽量保持这种好的工作状态,不要随意重组。不过,如果项目需要立刻加入新资源的话,那么添加过程必须谨慎,必须考虑周到。事实上,在这种形势下,开发者已经可以预期到许多重要的决定,这些决定甚至可能是开发者做出的。换句话说,团队里可能已经有很高的呼声要求引入新资源来帮助他们一起完成团队目标。那么,项目经理就需要密切观察新成员是不是“合得来”,并尽早采用恰当的措施。

他特别强调,当添加新成员时,政策和文化也是要考虑的重要方面。作为技术领袖,密切关注、深入理解团队互动方式并将这些信息分享给新团队成员是十分重要的,这有助于新成员融入团队。例如,这个团队可能喜欢安静的工作环境,或者喜欢在一天中特定的时间碰面(例如说早上),或者倾向于图形化的展示方式而不是文字化的展示方式。最终,大部分趋势(从企业文化的角度)应由项目经理控制或在某些程度上由项目经理主导。此外,项目经理不应当期望新成员依靠自己学会团队的各种“制度”。花些时间辅导新成员将缩短他们的学习时间。

另外,T. LAMINE BA 建议利用良好的面向对象设计实践来帮助团队里的新成员:

墨菲定律说:“任何可能出错的,都将会出错。”当你的组织发生变化时,遵循优秀的面向对象设计实践非常有帮助。例如,Java 中的继承让一个类具有了扩展或重写另一个类的功能。通过继承功能,新来的程序员可以只修改代码库中的部分代码,这种优势加快了新程序员团队的整合过程。程序员也可以重新使用被测试过、被认可的模块,可以在模块上试验自己的应用程序。此外,使用多态性的方法还有很多益处。多态性让一个对象有包含其它对象(也可以是它自己)的能力。通过这种方法,程序员可以在同一个对象上实施多种不同的行为。打个比方说,开发团队可以创建一个名为“动物”的对象,如果是只鸭子,它就有“嘎嘎叫”的能力,如果是只狗,他就有“咆哮”的能力。通过这种代码组织,新成员可以通过学习和修改整个系统中的一部分就完成他们的任务,从而成为有作用、有贡献的团队成员。还是刚才那个例子,假设新来了一个成员,他负责的是“动物”类中咆哮的行为,我们可以只把他分配给那些实现了“咆哮”行为的类。

2013-12-08 08:382196
用户头像

发布了 501 篇内容, 共 259.9 次阅读, 收获喜欢 61 次。

关注

评论

发布
暂无评论
发现更多内容

第十一周学习心得

cc

产品训练营第四章作业(一)

Arnold

week11-homework

J

LeetCode题解:33. 搜索旋转排序数组,二分查找,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

Linux Lab 进阶: Qemu 模拟器 & Toolchain 工具链

贾献华

Linux Tool Linux Kenel qemu Toolchain

中国移动工程师浅析:KubeEdge在国家工业互联网大数据中心的架构设计与应用

华为云开发者联盟

大数据 数据采集 工业智能体 边缘数据中心管理 EDCM

民办二本程序员阿里、百度、平安等五厂面经,5份offer(含真题)

Java 编程 面试

架构师训练营大作业(二)

花果山

架构师训练营第2期

第6周课后练习-技术选型二

潘涛

架构师训练营 4 期

MyBatis专栏 - 一级缓存

小马哥

Java mybatis 七日更 2月春节不断更

架构师训练营第2期大作业(二)

月下独酌

架构师训练营第2期

架构师训练营-架构大作业(一)

花果山

架构师训练营第2期

架构师训练营第2期 大作业 (一)

月下独酌

架构师训练营第2期

一文总结GaussDB通信原理知识

华为云开发者联盟

数据库 通信 框架 GaussDB 计算

WiFi 空口抓包工具 --- OmniPeek

日记 2021年2月6日(周六)

Changing Lin

个人感悟 2月春节不断更

翻译:《实用的Python编程》01_01_Python

codists

Python

Android 完全符合规则但很头疼的Json映射成一个树结构且可折叠的列表?

第三女神程忆难

Java android kotlin 安卓

VoltDB让Kafka支持复杂数据流驱动的实时业务决策

VoltDB

数据库 kafka 分布式系统 VoltDB

2. 无门槛学会数据类型与输入、输出函数,滚雪球学 Python

梦想橡皮擦

Python python 爬虫 2月春节不断更 python入门

【LeetCode】可获得的最大点数

Albert

算法 LeetCode 2月春节不断更

并发编程系列:并发编程基础

程序员架构进阶

架构 JVM 七日更 28天写作 2月春节不断更

从云数据迁移服务看MySQL大表抽取模式

华为云开发者联盟

MySQL JVM JDBC 数据迁移

week11-conclusion

J

Elasticsearch 分页搜索以及 deep paging 性能问题

escray

elastic 七日更 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

Ebean ORM框架介绍-1.增强注解

Barry的异想世界

Spring Boot jpa ORM Ebean

2 期架构师训练营 - 大作业(一)

云飞扬

架构师训练营第2期

机器学习笔记之:

Nydia

大作业二-请用思维导图画出架构师训练营所有技术知识点

未来已来

做事情时,脑袋中一次只装一件事

熊斌

读书笔记 2月春节不断更

上古神器 sed 教程详解,小白也能看得懂

鞋子特大号

Linux sed

如何在开发团队中增加新成员_语言 & 开发_崔康_InfoQ精选文章