前言
从事客户端开发已经有不少时间,期间经历过小规模的创业公司和大规模的成熟公司,对于客户端也有了更深的感受,也积累了一些App研发体系的建设经验,这里来分享下过去一段时间所做技术建设的思路和做法。
正文
作为客户端开发工程师,最重要的事情就是做产品需求。但是,这个岗位又不能只着眼于完成产品需求:一方面完成60分也是完成,完成80分、90分也是完成,不同交付标准带来的参差不齐的质量问题;另外一方面随着业务发展,逻辑必然会逐渐复杂,效率也会逐步下降。 所以除了需要参与产品迭代流程、跟进用户反馈和关注线上问题,还要做好技术方案、维护好稳定高效的App架构、处理安全合规问题、追赶竞品体验和探索新技术等等。这么多事情如果没有一定的推进思路,那么很容易就顾此失彼。 首先明确我们最终的目标是为了更好服务于业务迭代,那么上述的事情可以拆分为研发质量、研发效率和技术实践这三大方面。
研发质量
质量建设
质量建设的思路是交付可靠的产品质量,搭建完善质量保障体系。 首先是要持续做好指标优化,针对crash/OOM/卡死/卡顿的头部问题进行解决,也要及时跟进新增问题; 然后要建立质量监控体系,搭建异常告警、事件监控和消费机制,及时发现和解决异常; 也要做好稳定性保障,储备热修能力,安全模式保留修复空间,特定场景防御性编程。
很多公司都会有APM的基建,这个可以用来作为质量监控体系的基础。基于此先针对头部问题进行处理,拿到短期收益;然后再建立好告警和消费机制,及时发现问题同时做好防劣化;最后是针对各种异常情况的动态处理能力。
架构优化
架构优化的思路是提供稳定、高效的工程架构,支持业务快速迭代。 App框架持续维护和拓展是做好工程架构优化的第一步,从App层面来提供工程维度的设计与优化,组件化、容器化、平台化一步步建设。 各个业务模块内部的优化也要与时俱进,随着业务发展持续做好业务实现层的梳理,让各业务模块逐渐解耦,同时根据业务复杂度适当进行逻辑优化和实现重构。 同时技术规范统一也很重要,技术规范统一既包括代码规范完善,也要建立合适Review机制,让整个团队的技术风格保持一致从而降低理解和交流成本。
工程架构一定要和业务发展相匹配,在稳定和效率之间做好平衡。思路同样是从当前问题开始,一方面是追溯问题的源头,做好劣化源头的问题发现和治理;另外一方面是理解熵增原理,知道复杂度增加的必然性,尽量保证清晰的骨架,而把复杂度的增加表现在内部细节。
安全合规
安全合规的思路是保障APP符合各种安全合规要求。 随着互联网对信息安全和个人隐私重视力度加大,客户端开发需要重点关注安全合规——合规无小事。对于公司和官方的检测,要高度重视,及时完成合规整改,支持必要的合规功能包括基础功能模式、青少年模式等。 同时需要建设自动化检测能力,比如说合码pipeline检查和发布敏感词检查,在上线前发现问题。 最后也要做好业务安全,及时处理黑灰产对抗问题,也要注意漏洞修复避免安全隐患。
除了不断强调各种合规安全规范,更高效做法是将这些要求在流程中就体现出来。建设各类自动化发现合规质量问题,在上线前去动态发现。但是在做的时候,也要考虑投入产出比,必要时适当用人工介入。
研发效率
中台建设
中台建设的思路是多App能力复用提高研发效率。 App核心能力做好抽象设计和实现,在自己业务验证功能完备性和品质稳定性,最终将核心能力封装成SDK供多App复用。 一方面是方便对核心功能持续做质量建设和品质建设,另外一方面也是扩大团队的影响力。
SDK化其实就是强制做代码隔离,平时在做业务逻辑时,就必须分隔开业务具体细节和SDK具体逻辑。除了核心功能,一些功能性的组件其实也有很高的复用潜力。
流程与效率
流程与效率的思路是优化版本流程和研发流程,提升迭代效率。 成熟团队都会有逐渐建立起相应版本发布流程,比如说BM轮值发布制度,流程化的版本发布步骤,合适的灰度问题发现机制和数据统计以及准出,线上问题处理机制,合理patch发布流程。 研发环节也是重点优化对象,包括研发流程优化和研发效率提升。研发流程优化是完善需求迭代流程,推行和完善包括需求拆解、方案设计、技术评审和代码Review的需求迭代流程。 研发效率提升是从开发工具、编译优化、合码优化和pipeline处理,多方面提升研发整体研发效率。
研发流程需要随着业务迭代不断调整,固定版本、大小版本交替、双周版、单周版等,没有绝对优越的版本节奏。流程沉淀更是一种团队能力的体现,一个好的团队是不会不断去优化自身的迭代方式。
技术实践
品质优化
品质优化的思路是核心功能不断优化,赶超竞品体验。 品质优化是客户端开发绕不过去的坎,可以拆分为基础指标优化、功能体验优化和品质防劣化。 基础指标优化是启动速度、包大小、磁盘占用等基础指标优化,提升用户使用App的基础体验; 功能体验优化是对业务各个核心场景优化,提升关键场景的打开速度和使用流畅度; 品质防劣化是搭建核心品质监控看板,完善监控告警能力。
技术实践也叫技术赋能,其实就是把技术和业务结合在一起。品质优化是其中最直接的一步,能够把体验做到极致,这就是团队技术能力的体现。
技术探索
技术探索的思路是为业务迭代提供更多可能性。 技术贴近具体实现,也能接触到更多的新feature,比如说Push新特性、卸载挽留等。 同时技术也可以探索更丰富的实现手段,比如说动态化能力,在内容分发、电商、活动宣发等场景去做尝试,为业务迭代提供更多可能性。又比如说新新业务场景尝试,通过快速适配iPad、CarPlay来更好支扩展业务的使用场景。还有随着手机性能逐渐提升,端智能也走进了客户端开发的视野,通过端智能可以辅助各业务场景更好做出更好判断。
不要盲目引入技术,而是看这个技术能给业务带来的可能性,评估是否有和业务结合的价值。
总结
将各个模块划分进行汇总,可以得到技术建设的大致蓝图。 技术建设除了要做好规划,在具体落地过程中的还会有各种挑战:既要解决技术中遇到的难题,也要平衡好业务迭代与技术建设。但是做好技术建设,于业务而言能够更加高效迭代,于团队而言能够不断进步,于自己而言能够收获好的沉淀。
以上是自己的经验之谈,希望对你有所帮助。