从简到繁:Instagram iOS 团队如何随着产品一同成长

阅读数:75 2019 年 9 月 21 日 14:54

从简到繁:Instagram iOS团队如何随着产品一同成长

GMTC 北京 2018 大会上,李晨讲师做了《从简到繁:Instagram iOS 团队如何随着产品一同成长》主题演讲,主要内容如下。

演讲简介

随着移动开发团队的扩大和产品功能的增加,代码库也迅速变得臃肿,并带来一系列挑战。代码耦合、代码搜寻和重用变得更难、merge conflict 变得更频繁、编译速度变慢、AB 试验变得繁多。以上种种,都将导致开发效率大幅降低。Instagram iOS 团队为此做了诸多努力,确保工程团队扩大的同时,能产生良好的协同效应。

演讲内容包括:

1、代码模块化解决方案:IGListKit + MVVM。

Instagram 产品设计风格是大量的列表。

(1) 早期大量使用了 iOS 原生 UITableView,方便极少数工程师进行快速开发。

(2) 随着列表变得复杂,Instagram 开发并开源了 IGListKit。

2、大规模 AB 试验:

AB 实验是社交产品快速迭代以及有效测量的核心工具。当团队扩大后,试验数量和相互干扰增多。

(1) Instagram 通过对实验组进行空间(用户组)和时间(先后)的分离,确保试验的独立有效性。

(2) 让工程师、产品经理、数据科学家、设计师等共同参与试验决策,防止出现实验结果解读的主观偏差。

3、加快编译速度:Buck + Focus + Focus Project + Phabricator

代码解耦重用了,试验相互分离了,更多工程师能方便地协作了,代码量也增长更快了。这个时候,编译速度就会变得越来越慢——XCode 不是为大型代码库所设计的。

(1) Buck:通过并行编译和增量编译,加快编译速度。

(2) Focus:随着代码量进一步增加,Buck 编译依然需要大量时间。Focus 的解决思路是,在服务器端预先编译好大量组件,生成 ipa 时直接下载这些组件。工程师只需要专注少量组件的代码,实际操作中只需要编译这部分组件。

(3) Focus Project:每个团队可以定义自己常用的一系列组件,在编译速度和工程师可以快速打开的源代码之间获得平衡。

(4) Focus 解决了编译速度的问题,但工程师通过 XCode 搜寻代码变得困难了。解决方案是采用 Phabricator,代码上云,提供便捷的浏览器搜索、代码历史查看工具。

听众收益:

了解热门社交产品如何应对代码库由小到大的挑战,如何在代码量迅速增加时确保团队开发效率,并有效进行 AB 试验。

讲师介绍

李晨

Instagram iOS 高级工程师

Instagram iOS 高级工程师,负责开发高并发的多媒体聊天工具。专注移动前端与通讯类产品。 前 Apple 员工,负责 Apple Store App 的零售店功能开发。著有《iPad 应用开发实战》一书。 毕业于密歇根理工大学,清华大学,北航,拥有电子工程和核工程的硕士学位。

从简到繁:Instagram iOS团队如何随着产品一同成长

从简到繁:Instagram iOS团队如何随着产品一同成长

从简到繁:Instagram iOS团队如何随着产品一同成长

从简到繁:Instagram iOS团队如何随着产品一同成长

从简到繁:Instagram iOS团队如何随着产品一同成长

从简到繁:Instagram iOS团队如何随着产品一同成长

从简到繁:Instagram iOS团队如何随着产品一同成长

从简到繁:Instagram iOS团队如何随着产品一同成长

从简到繁:Instagram iOS团队如何随着产品一同成长

从简到繁:Instagram iOS团队如何随着产品一同成长

完整演讲 PPT 下载链接

https://gmtc.infoq.cn/2018/beijing/schedule

评论

发布