写点什么

如何打造一个高效的分布式研发团队

  • 2019-11-15
  • 本文字数:2694 字

    阅读完需:约 9 分钟

如何打造一个高效的分布式研发团队

开发者群体是个与其他工种不同的群体,他们热爱创造,工作是为了满足自己的创造欲,是完全自驱的;而优秀的开发者,完全不受地理位置限制。


这就是我们要建设分布式研发团队的原因 —— 一个多样化的团队是更好的团队。


我们成功建设了一个分布在中国五个省市的高效研发团队,我们构建的产品,服务全球七个国家和地区的用户。当来自各个地区,拥有不同背景的人联合起来后,极大的拓展了我们的力量。本篇文章将总结我们在建设一个分布式研发团队时所面临的问题和解决方案。


分布式研发团队相比坐在一个办公室里的团队,存在着更多问题,比如工作时间不重叠、团队融合和激励,但实践来看,最需要解决的是以下三个问题:


  1. 协作问题;

  2. 项目管理问题;

  3. 价值观和文化的传递问题。

协作问题

当你和同事坐在同一间办公室时,吼一嗓子就能得到回应。但在一个分布式团队中,经常会出现消息未读、电话没人接的情况,分布式协作是一个自由的环境,这种情况是允许出现的。当然,这种事情并不说明项目会得到延期,因为某个模块的开发者会在其他时间完成该做的事情。但这样的情况往往会使得不到回应的人抓狂,软件系统变复杂后,模块之间往往相互关联,如果没有得到及时回应有可能会导致工程出现问题。


沟通上的另一个问题是团队之间可能没有见过,不过这在开发者群体中不是什么大问题,开发者已经习惯了在 Github 上向陌生人提 Issues 或者帮助陌生人修复 BUG。


从实践中来看,协作主要包含两点:沟通和信息同步。为了保证高效的分布式协作,我们制定了以下基本的协作原则:


  1. 由一个人来起草月计划,其他人一起做修改和补充,周计划围绕月计划进行;

  2. 每周一上午一次视频周会,同步上周的进展和本周的计划;

  3. 每个人以去中心化的方式(非项目组织者统一指挥)制定自己的计划,每个计划必须激进(猛跳能够到的目标)和有明确的 Deadline;

  4. 产品开发允许延期和变动,若有延期或变动,在群内同步原因和后续计划,做到每件事必有 Deadline;

  5. 内部测试不追求完美,若有可预览的进展,及时在群内同步并请大家测试(我们没有专门的 QA,遵循的原则是由非模块开发者来进行测试);

  6. 使用高效的工具做即时推送,对信息进行最大限度的同步;


这需要给每个人一点时间来适应,一旦适应好之后,协作效率会和和同事在一间办公室一样甚至更高。

项目管理问题

分布式协作另一个大的问题是项目管理,我们由开发者自己决定每月每周每天要做什么,并按计划进行,这一点基本上没有什么问题,参与分布式协作的人必须是能够自我管理的人。出问题的环节也不在这里,而是需求质量。


我们出现过至少两次需求不合理导致返工的问题,这对开发者本人和项目本身都是很大的损耗,每当出现这种情况时,团队便会出现抱怨的声音。这类问题往往有如下几种场景:


  1. 产品经理在提需求时没有想清楚,开发者 review 时也没有思考完全,做了一半后发现技术上是不符合逻辑的;

  2. 开发者在写方案时没有将方案对齐到具体的参数、返回结果和报错信息,同时也没有其他人及时留意到这个问题,导致实际使用时需要进行二次修改。


这个问题的解决方案也很简单粗暴,就是由每一个干系人仔细讨论,因此我们制定了一个流程:


  1. 模块负责人在可以在线编写和协作的文档中起草方案;

  2. 相关干系人在文档中评论,提出问题和疑惑,将解决方案对齐;

  3. 所有疑问和边缘条件都解决后,我们将所有需求细化到任务管理工具上并开始开发。


这个流程虽然看上去多了些扯皮的工作,但是能显著提高需求质量。


项目管理上另外一个很重要的点是使用「高效的生产力工具」。你可能会想「生产力工具」本来就是高效的,前面再加个「高效」,是不是重复了。其实不然,生产力工具很多,选择最好用的工具将事半功倍 ——工欲善其事,必先利其器。


我们核心只使用了两款工具:


  1. Tower —— 用来做具体的项目执行;

  2. Lark 飞书 —— 用来做即时沟通、文档协作和 ChatOps。


除了这两款,还有邮箱用来和海外用户交流、Git 用来管理代码,不过这属于基础工具了。


工具链保持简洁很重要。前段时间,我们在 Tower、倍洽、企业微信、Notion、石墨和 Google Docs 之间到处切换,直到有一天团队再也受不了,我们争执了一番后将即时沟通、文档协作和 ChatOps 换到了 Lark 上,Tower 不变依然用来做项目执行。我们本有换掉 Tower 的打算,不过鉴于更换成本,我们还是选择了留在 Tower 上,想换掉 Tower 的原因是 Tower 不提供 API 让我们能在群聊内即时将任务同步到看板中,它只能单向推送,这不符合 ChatOps 的设计理念,有时也会耽误我们的生产效率,因为我们还要在网页和聊天窗口中切换。


Lark 的 Notice Bot 很有用,我们的 ChatOps 都是依赖 Lark 的 Notice Bot,我们在内部打造了一个「推送」的世界。



Git 消息推送



响应时间过长或服务不可用推送



用户反馈推送



小程序反馈推送



SDK 需求推送


这些都属于一个研发团队中比较基础的操作,但当你处于一个分布式协作团队中时,因为看不到彼此在干什么,因此当所有信息即时推送、即时同步时,会让团队每个人都有安全感。我们的研发团队是一个紧密型小组,我们紧密合作,构建并交付解决方案。这种推送让分散的小组对他们正在构建的东西、什么能提高效率有清晰的认识,并具有主人翁精神,这让它非常适合于团队的分布式性质。

价值观和文化的传递问题

最后一个问题是价值观和文化的传递问题,这是最难的问题。无论是沟通问题还是项目管理问题都能用流程和工具来解决,而价值观光和文化只靠这些是不够的。


首先说一下我们团队的组建过程,早期的开发者是大学同学,后来有从用户转化过来的开发者,我们的用户爱我们的产品,从用户变成了这款产品的创造者和维护者。此外,所有不涉及商业核心的代码,我们都是开源的,由此也吸引了一批开发者为我们维护各语言的 SDK。


当然,我们还是要依靠一些现代工具。


首先是视频会议,我们使用的 Lark 会同步每个人的日历(我们希望每个人都能将自己的日程信息化,这样会非常便于管理),这样会议协调会很容易,同时我们保证每次会议大家都能露脸,这让每个人都能见到其他人的神情、动作,虽然隔着屏幕,也比看着聊天框里的文字和表情要亲近一些。


除了这样的工具外,就是每天的具体细节。尊重和信任是对人最大的激励、鼓励每个人分享的团队文化才是正向的。同时还要鼓励每个人把自己的能力贡献给项目和组织,并获得事业上的发展。鼓励每个人互帮互助,没有等级,团队的工程师可以直接开喷领导者(我不是说开喷是好事,而是允许这种情况发生)。


这些都是通过线上交流获得的,线下活动也是必不可少的。比如每个月邀请大家聚到一起娱乐、一起喝酒、一起打游戏、每个节日互送礼物。


总之,让大家成功,让项目成功,是构建组织文化和价值观的根本目标。

原文链接

如何打造一个高效的分布式研发团队


2019-11-15 15:573076

评论

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

堡垒机品牌就认行云管家!为什么呢?

行云管家

云计算 系统运维 堡垒机 IT运维 云计算运维

牛客网论坛最具争议的Java面试成神笔记,GitHub已下载量已过百万

Java~~~

Java 架构 面试 算法 架构师

腾讯WeTest零售行业质量解决方案

WeTest

“区块链”赋能智慧社区,多维度提升管理质效

旺链科技

区块链 智慧社区

容器化 | ClickHouse on K8s 基础篇

RadonDB

数据库 Kubernetes Clickhouse

基于KubeEdge实现中国移动10086客服云边协同平台

华为云原生团队

云计算 开源 运维 边缘计算 边缘技术

多张图片的形式

冇先生

多线程、分布式、高并发都不懂?你拿什么跳槽?

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

二本渣渣5面阿里,从准备简历到“直怼”面试官,经历了什么?

Java 程序员 架构 面试 计算机

架构师训练营-毕业设计

俞立夫

云原生 | 混沌工程工具 ChaosBlade Operator Node 篇

RadonDB

数据库 云原生 混沌工程

工具 | 使用 CLion 编译调试 MySQL 8.0

RadonDB

MySQL 数据库

容器化 | ClickHouse on K8s 部署篇【建议收藏】

RadonDB

数据库 Kubernetes Clickhouse

底层即真理!Netty+Redis+ZooKeeper解读高并发架构

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

太为难我了,阿里面试了7轮(5年经验,拿下P7岗offer)

Java 编程 程序员 架构 面试

银行小程序隐私安全如何做?诊疗一体,一步到位

WeTest

云时代的到来会淘汰运维人员吗?运维工作可以一直做吗?

行云管家

云计算 运维 云服务 IT运维 云时代

阿里这份15w字Java核心面试笔记!GitHub凭借百万下载量位居榜首

Java~~~

Java 架构 面试 微服务 多线程

八家知名大厂联合手写的Java面试手册刚上线!竟就到达巅峰?

Java~~~

Java 架构 面试 JVM 多线程

给Arm生态添把火,腾讯Kona JDK Arm架构优化实践

腾源会

开源 腾讯 jdk 腾讯开源 KonaJDK

终于有人把TCP协议与UDP协议给搞明白了

编程菌

Java 编程 程序员 计算机 java技术宅

EMQ 映云科技成为开源项目 Vue.js 定期捐赠者

EMQ映云科技

Java 开源 大前端 emq

机会!痛点!难点!中国游戏泛娱乐企业出海攻略全解析

环信

游戏出海 直播 社交APP出海 泛娱乐社交

业界良心啊!第五次更新的Spring Cloud Alibaba升级太多内容

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

去哪儿网数据同步平台技术演进与实践

Qunar技术沙龙

数据库 数据中台 ES 数据同步 Kafk

好评如潮,PerfDog两年迭代正式启动商业化探索

WeTest

IM开发技术学习:揭秘微信朋友圈这种信息推流背后的系统设计

JackJiang

即时通讯 IM 微信朋友圈

Fil今日价格行情?Fil未来多少钱一枚?

区块链 分布式存储 IPFS fil价格 fil行情

经济学人:若比特币价格清零会怎样?

CECBC

金融助力补链强链 科技发挥关键作用

CECBC

架构实战营毕业总结

俞立夫

架构实战营

如何打造一个高效的分布式研发团队_文化 & 方法_谢扬_InfoQ精选文章