阿里内贸团队敏捷实践(一)如何打造合作型团队

简介:

本文中,来自阿里内贸团队的工程师分享了所在团队打造合作型“精英”小团队的敏捷实践方法,同时讲述了实践的效果,旨在给大家一些启发,以供参考和借鉴。

能打造出Facebook里所提倡的“精英团队”固然非常好,但这样会对团队中的每位成员都有较高的要求。我所在的团队希望通过将团队合 作精神运用在项目的各个阶段来打造出一支强有力的合作型小团队,并且取得了很不错的战绩:每两周发布一个版本,完成了几次零Bug的项目,实现了一年线上 零故障。

我们团队由2名产品经理、6名开发人员和2名QA组成,并根据团队特点量身定制了一套敏捷的开发方式。本文主要分享在需求、设计、开发和总结等阶段中如何提高团队成员的合作意识,从而形成团队合力的最佳实践。

需求串讲评审

提倡需求串讲。上游的质量决定了下游的质量。在软件开发中需求文档属于最上游的输出,所以我们格外重视需求评审。为了让团队成员能充分理解需求,并 提高团队 成员的参与度,项目需求不能总由产品经理来讲解,而应采用轮流讲解的方式,每次迭代由不同的人员讲解。需求文档会提前发给所有团队成员,请大家消化和准 备。在进行需求评审时选某一名成员上台讲解需求。虽然需求评审最核心的任务是在“评”上,但如果团队成员都不能很好地理解需求或者不能很好地参与到需求评 审上,是很难做好需求评审的。

全员参与设计

为了提高设计和评审的效率,并且能够让全员充分参与到设计和评审中,我们团队提倡结对设计、简单设计、交叉设计和全员参与设计评审。

  • 提倡结对设计。需求评审完之后,会让团队成员一起来认领任务,但每个任务必须由两名成员认领,这两名成员分别是这个任务的主Owner和辅Owner,并结对设计这个任务。
  • 提倡简单设计。第一是设计快并易懂,第二是只做必要的设计。在设计评审前做的设计只能算设计草稿,用Visio等软件做设计比较费时间,在设计评 审后还要 修改,如此反复很浪费时间。而事实上一支笔和一张纸足以完成一次设计,先在纸上画出自己的设计思路,然后同结对的成员进行讨论,最后评审完之后将设计图拍 照提交到文档库。对于互联网产品的开发,提倡只做必要的设计,需要时再重构。因为根据以往的经验,扩展性良好的业务设计通常会有三个问题:第一,设计和开 发时间比较长;第二,代码不易读;第三,大部分扩展以后都不会用到。
  • 提倡交叉设计。为了让团队中每个人都能充分了解各个模块,所以在不同的项目中每个人负责的模块会不一样。项目1中设计A模块的人,可能会在项目2中设计B模块。
  • 全员参与设计评审。为了全体成员都能充分参与到设计评审中,我们制定了几个固定的策略。

评审时间要短。因为大部分人在会议中只能专注20分钟,所以设计评审要在40分钟内结束,设计者可使用PPT或直接在黑板上画出设计思路。让参与者 充分了解设计的模块。如果是对已有功能的修改,设计者必须先讲这块功能原来什么样,现在需要修改成什么样,涉及哪些修改点,是如何设计的。这能让其他模块 的设计者更了解这个模块,参与到这个模块的设计评审中。

如果设计方案审批没通过,则需要设计者返工。为了提高效率,不需要再开一次会议评审重新设计的方案,将相关人叫到座位旁边确认就可以。

结对Code Review

  • 提倡结对Code Review。如果模块是由一个人设计的,那么Code Review时审查者只能帮助队友Review出代码中是否有坏味道,却很难Review业务逻辑是否完全正确。因此,提倡结对Code Review,每个模块由两个人设计,然后分开开发,最后交叉Code Review,这样能Review对方代码中的业务逻辑是否正确。
  • 提倡主动Code Review。结对的成员相互Review代码会存在一定局限性,所以项目经理要对核心功能进行Review。如果团队中有人提前完成功能,也提倡他们主动帮其他人Review代码。
  • 代码审查的时间。在时间充裕时,提倡每天进行一次Code Review,好处是修改成本低。通常情况下,在提交测试前2天开始做Code Review,但如果时间比较紧,也会在项目结束后做Code Review。

寻求帮助的晨会

晨会通常用于汇报工作进度,而我们希望将打造成寻求团队合作的会议。很多时候,项目质量低下主要是因为团队成员开发时间不够。如果某位成员实现某个 功能发生 了延迟,那么他肯定没时间写单元测试,更没有时间帮别人做Code Review。此时,就应该在晨会上将这个问题告知团队其他成员。我们不会因某名成员实现功能延迟而责怪他,更不会让他加班追赶进度,而是在晨会时请其他 团队成员帮他完成单元测试和Code Review。我们是一个团队,有问题绝对不会让团队的某名成员独立承担。

不断精进的项目总结

这些方法不是团队创建之初就有的,是通过每次项目总结和下个项目实践不断精进出来的。在做项目总结时,所有成员都要针对本次项目的不足提出下个项目需要改善的地方,定出下个项目中可尝试的实践,并确定一位负责人和完成时间。

根据经验,如果不确定负责人和完成时间,任何实践基本都很难完成。另外,我们通常只定一个实践在下个项目中执行,定多了也很难完成。而且为了让大家能够在项目总结会议中畅所欲言,通常会将项目总结会议办成一个茶话会的形式。

为团队质量而赌

在项目开始前,开发人员和QA会轮流坐庄,赌本项目的Bug数会是多少个,输的一方要给赢的一方买饮料喝。这么做主要是为了在提高项目质量的同时培 养团队合 作意识。如果开发要想获胜,那么团队中的每名开发人员都尽量不要产生Bug,避免拖累整个团队,而团队的其他成员为了实现目标会更加主动地帮助同学做 Code Review。但这个目标必须定得非常合理,如果项目中涉及到大量的前端开发,则Bug数会更多,目标要定低一点。在本次项目目标达成之后,下一个项目会 定更高的目标。


文章转自 并发编程网-ifeve.com

相关文章
|
缓存 运维 测试技术
带团队后的日常思考(九)
带团队后的日常思考(九)
|
敏捷开发 机器学习/深度学习 搜索推荐
如何做好创业公司研发团队的项目管理?
探讨创业公司中的软件研发项目管理问题: 大部创业公司的软件研发管理处于什么阶段? 如何改善软件研发过程和提高效率? 软件研发过程会涉及哪些工程理论和方法?
369 0
如何做好创业公司研发团队的项目管理?
|
监控 NoSQL 前端开发
带团队后的日常思考(三)
  参与制订业务方的BUG规范,业务方最近投诉我们技术部,在飞书群中提出BUG后,技术部没有人响应,认为我们的态度太冷漠。   后面我就提出任何看到的人,只要知道是谁负责的,就@那个人,大家都不要客气,这是第一步。
带团队后的日常思考(三)
|
存储 数据采集 SQL
为什么你成为不了团队核心成员
为什么你成为不了团队核心成员
120 0
|
运维 监控 NoSQL
带团队后的日常思考(一)
  由于公司规模并不大,因此一有事情就会拉个会议,例如需要大会、技术评审、汇报周会、突发会议等。一周中大概有20%~30%的时间会花在大大小小的会议上。
带团队后的日常思考(一)
|
存储 缓存 移动开发
带团队后的日常思考(四)
  这次公司有个五周年的庆典活动,但正好碰到两个APP的版本发布,以及三个测试老员工离职,只进来了两个新成员,其中一个恰好要休陪产假,那么测试组资源异常紧张。   虽然我们提前了整整一周提测,但一直到周五还有很多点没测到。测试组甚至想到了阶段测试,因为多个活动的上线时间不同,所以可以先测最先上线的活动,后面的再往后推,延迟测试,这是他们组的一个对策。
带团队后的日常思考(四)
盖洛普Q12在团队中的应用
周五给大家做了个盖洛普Q12的分享。
盖洛普Q12在团队中的应用
|
移动开发 自然语言处理 前端开发
带团队后的日常思考(五)
  他们组没有一个正式的组长,只有一个临时的代理组长,这种情况从我进公司到现在一直是这种情况,也是蛮奇怪的。   前几天,这个代理组长和其中的一个组员爆发了点冲突,我从旁观者对他们对话的理解就是,组员觉得他瞎指挥,他觉得组员无担当。
|
缓存 前端开发 JavaScript
带团队后的日常思考(六)
  当前我们组管理着一套审核系统,除了数据源是服务端提供的,其余后台管理都是由我们组在维护。   这个系统就是将APP中的各类社交信息送到后台,然后有专门的审核人员来判断信息是否合规,当然在送到后台之前已经让机器审核了一遍。
|
缓存 运维 前端开发
带团队后的日常思考(八)
  最近有个活动,在提测后的第二天,大家才得知上线时间是后天。但是问各个技术,大家都不知道这个时间,而产品是知道的,运营也知道这个时间。   那这就有点诡异了,为何会出现这个情况呢,进一步了解后,才发现原来在一次会议上,口头说了下上线时间和提测时间。   在那次会议上,大家都说了自己的开发时间,但是,对于提测时间,开发和运营却有不同理解。我的提测时间是11或12,但运营的提测时间是10号,以后对于这种时间截点还是要更敏感一点。   UI给到我们设计稿的时间,晚了一天,其实如果不晚的话,即使我们不知道上线时间,也会按预期进行。