《从简到繁-Instagram iOS团队如何随着产品一同成长.pdf》由会员分享,可在线阅读,更多相关《从简到繁-Instagram iOS团队如何随着产品一同成长.pdf(36页珍藏版)》请在三个皮匠报告上搜索。
1、成长的烦恼:INSTAGRAM IOS 团队如何随着产品成长成长的烦恼Instagram月活和产品线迅速发展-从14年开始,每7个月增加1亿月活-已突破10亿月活-信息流,私信,Stories,IGTV?2成长的烦恼-复杂的列表-大量实验相互干扰-编译时间越来越长 iOS工程团队如何迎接挑战演讲内容?31复杂列表的解决方案:IGListKit+MVVM2大规模对照试验3加快编译速度:Buck+Focus+Focus Project长列表:UICollectionView:-高度可定制-业务逻辑和UI代码分离 听上去很美好?4UICollectionView图片信息流:基础代码?5图片信息流:添
2、加点赞数?6图片信息流:添加点赞数?7用户增长组:添加关注组件?8用户增长组:添加关注组件?9长列表:分散的逻辑UICollectionView:-高度可定制-业务逻辑和UI代码分离 理想很美好?10现实很残酷-几十个工程师在同样几个函数上反复添加逻辑-业务逻辑和设计需求耦合-代码可读性、可维护性下降-添加一个新UI需要修改多个团队的代码-臃肿的ViewController代码长列表:寻找成长性好的框架?11用户增长团队信息流团队寻找一个框架-减少团队间的代码耦合-让业务逻辑和设计需求分离开来长列表:IGLISTKIT起源于列表设计 增加一层SectionController,分拆业务逻辑 鼓
3、励代码重用 高效列表刷新机制 https:/ 尺寸、颜色、字号-只包含必要信息UserHeaderCellPhotoCellUserRecommendationCellCell-展示数据信息流团队用户增长团队长列表:IGLISTKIT优化后?14用户增长团队Data Model-View Model信息流团队?15长列表:SECTIONCONTROLLER由具体一个团队来维护,和其它团队代码解耦 专注于业务逻辑 设计需求已经在ViewModel和Cell当中,和业务逻辑充分解耦演讲内容?161复杂列表的解决方案:IGListKit+MVVM2大规模对照试验3加快编译速度:Buck+Focus+
4、Focus Project对照实验:快速迭代的核心工具通过随机抽样实验,来选择出相对较好的产品方案 核心优势:无需理解和争论复杂的用户行为逻辑,直接告知结果 Instagram等社交类产品面临着复杂的用户心理,需要一个客观有效的工具来指导产品决策;对照实验就是社交类产品快速迭代的核心工具 良好的副产品:用于发现代码中的bug 缺点:用户规模要求高,实验到决策时间较长?17对照试验:案例添加关注组件:-对用户留存有帮助吗?有多少帮助?-对信息流展示量有负面影响吗?有多大影响?对照组:-控制组:不显示关注组件-实验组:显示关注组件对照试验:案例用户来到页面时做曝光记录:if(_experiment
5、sManager.logAndGetResult(“关注组件”)/显示关注组件 查看结果:(7天后)-实验组的用户留存率提升1%-实验组的用户信息流展示量下降0.2%对照试验:确保实验方案连续性目标:用户在同一次App使用体验中,其所处的实验组应当是一致的避免:启动App时处于控制组,过了几秒钟处于实验组 难点:App启动的一瞬间,很多实验就要开始运行了;用户所处的实验组信息是通过服务器端控制和改变的,几秒钟后才获得最新的实验方案?20对照试验:确保实验方案连续性解决方案:启动App以后,一直使用之前的实验方案;最新的实验方案在下一次App启动时才开始使用/用户启动App时_experimen
6、tsManager.applyOldPlanFromClientCache();_experimentsFetcher.fetchNewPlan(experiments)/保存实验方案,供下次使用 DiskCache.cacheExperiments(experiments);/用户关闭App时if(_diskCache.experimentsChanged()/强制关闭App,确保下次启动为冷启动?21大规模对照试验:实验的相互干扰一个页面进行多个试验时,容易出现这种实验叠加的状况:if(_experimentsManager.logAndGetRes