这篇文章事先想好了一个逼格甚高的英文题目,Distributed Asynchronous Collaboration: For a Better World.

缘起是最近这半个月和几个非常棒的朋友们一起合作一个开源项目。半个多月以前我们还互不认识,因为一个中文文本标注工具的共同愿景和一个智能化主动学习算法的技术追求走在一起。项目最开始只有一个模糊的idea和一篇文章,到后来团队越来越壮大,有了前后端全栈、算法专家、软件工程大牛。有了数据与模型的流程示例、思考和画出了架构图、前后端选型、算法插件化和设置模板化的框架、单元测试示例等等,到如今(2017年11月28日)虽然我们还没有跑出demo和发布一个可用的release版本,我们已经有39,046行代码,91次commit,128个star,44次fork,14个issues和12次pull request。

核心团队陆陆续续有了大约10个人。一个开源项目,团队里的童鞋们都认为在做很有意义的事情,在没有任何即时利益的驱动下,主动参与讨论、分享资源、互相学习、实现代码。项目被分成前端与数据库、算法端、主控和用户实例端三个组,组成员开发和提交代码,组长负责review和merge相关部分的代码。

一开始大家沟通主要靠微信和Github,后来又加入了asana项目管理平台。大家在微信上聊天,在Github的issue和docs里面固化想法,在asana上分配和认领任务、设置deadline、同步进度、分享资源和进行针对特定任务的讨论。为了提高沟通和开发流程的效率,项目又增加了Github wiki界面、pytest自动化测试流程、及早自动发现commit bug的持续集成travis-ci系统、每个人都可以加入的鼓励开放沟通的gitter聊天室等等。

Github Wiki

Asana项目管理

Travis-ci持续集成工具

Gitter聊天室

在开始这个项目之前,我也没有想到支持远程协作的工具已经这样完备。

没有强迫式的交流,尽可能不影响本职工作和私人生活,珍贵的大块时间都用来思考和写代码,成员可以把所有消息先行静音忽略,只需要零碎时间再来检查相关消息和回复。项目至今只开过两次微信语音会,每次不超过30分钟。这样的异步沟通很轻松也很高效。之前担心的远程协作=“大家都在放鸽子”根本没有发生,带来的结果反而是团队童鞋深夜的pull request而我在地铁上还在“贪婪地”用手机review和merge代码。这是异步协作的魅力:扁平透明,自发协作,和对人性充分的信任和支持。

这个项目,绝对是一个聪明的、热闹的、高效率的敏捷开发团队。更神奇的是,这10个人分别分布在成都、上海、南京、北京、深圳和香港。我到现在还都不知道他们长什么样子。。。

是否这才是一个更加合理的项目的运作方式?公司减少了昂贵的办公室租金,更可以不局限于地理位置而广罗人才。城市交通少些拥堵和污染,地铁上盖的住宅与CBD的写字楼也不至于贵到离嗮谱,也不再需要千年大计的人口分流。

员工分散在世界各地的沙发、咖啡厅、图书馆或任何一个有良好wifi的地方,省去了无谓的漫长交通,可以选择最舒适的生活居所和工作环境而不是无奈蜗居在大兴区,可以大把时间和自己年幼的孩子在一起而不是送去红黄蓝,可以随时去游泳、买杯咖啡甚至长途旅行而不是日复一日定时去到拥挤的食堂和地铁站。工作的成就感不来自于坐够八个小时的班,也没有无休止和低效率的会。所有人都被默认为被充分信任,况且代码开发的工作较容易被量化,实实在在地认领任务和完成任务,只要任务明确和按时完成,每个人都应该开心和高效。

分布式异步协作的工作方式会让世界更美好,我也坚信这是一些如软件工程这样的行业的未来。

参考资料: