本文约2.3k字,阅读大约10分钟。
本来写了一份更详细的总结的,但是涉及到了一些技术细节和公司业务,所以改了一份简版的出来,毕竟之前立过“每Q一次总结”的flag。
本文以时间线方式回顾今年各阶段做的一些事情和从中的收获及不足(主要是技术,不含公司业务)。
时间线 | 项目 |
---|---|
1月-2月 | 资源冲突检测插件 |
3月 | 321大促 |
4月-5月 | 新图片加载库、全站弹窗配置平台优化、图墙动态能力&Tangram调研、写博客 |
6月-8月 | 晋升、csslayout实时预览工具开发、Lifecycle落地收敛XXX的生命周期回调、时光机优化、通用图墙一期 |
9月-12月 | 通用图墙二期 |
时间线
1月-2月
资源冲突检测插件
背景:
内容、直播、电商三侧业务愈发融合,资源冲突问题愈发明显。
过程&结果:
调研业内技术方案,在无线部门协助下,引入并完善落地,帮助电商、直播两侧优化了冲突资源。
详见「资源冲突覆盖的一些思考」。
收获:
初尝脚本开发和接入、和无线部门的合作、了解内部打包流程。
亮点:
用迷你壳工程解决gradle版本问题(后来团队进行了gradle升级和各插件兼容性开发,gradle版本问题没了)。
资源冲突报表支持icon、颜色资源的预览,更直观。
通过图片相似度检测过滤掉大量相似icon来简化报表(如果两个icon冲突了,但足够相似,比如只是宽高差了1px,那是可以先忽略的)。
不足:
项目流程不够规范,走一步是一步。
后续没有持续跟进(gradle升级后没有去掉迷你壳工程,只能说优先级不高,还没人力去投入)。
3月
321大促
背景:
常规大促,电商行业一般都有321、618、916、双11双12等大促,以及一些节日里的小促。
过程&结果:
在同事协助下,负责跟进321大促客户端商城侧的整体流程,从UI可行性评估、App目标版本确认、商城模板兼容性开发、预演、到最终验收,保障大促商城业务顺利进行。关于商城大促可参考「动态页面之路 - 需求背景」系列文章。
收获:
初次跟进整场大促的各个环节,对大促有了更深的理解。
4月-5月
新图片加载库
背景:
App跑了将近7年,图库历史包袱重,也无法满足当前需求(从静态图到越来越多的动图),需进行图库替换。
过程&结果:
5个阶段:需求调研、方案选型、框架设计、性能中心验收、业务方接入。
主要负责:
选型阶段:接入XXX项目,进行多场景跑分,最终确定选型。
框架设计阶段:进行兼容层开发,保证最小的接入成本和改造风险。
接入阶段:用脚本收集历史遗留的不合理的裸调用代码(当基础库缺少某个能力时,个别业务需快速上线,业务方等不及就自己实现这个能力,从而导致的裸调用),整理成文档给各业务团队参考修改。
收获:
这个项目是组长牵头的,从中接触了更加规范的技术改造流程,进行了方案选型,分工合作,学会了从更完整的角度进行技术改造,如ROI、扩展性、可替换性、迁移成本、排期和风险等。
亮点:
从全局的角度观察到了App代码的“演变史”(业务快速迭代,大家都有着或多或少的技术债)。
学会协调多方力量推进项目,感谢无线部门的性能中心、脚本工具提供的支持和业务侧给予的配合。
不足:
在框架设计阶段主要是兼容层开发,没有太大参与度,成长有限。
全站弹窗配置平台优化
背景:
全站弹窗属于大促型需求,可以在任意页面下发指定弹窗(如优惠券、红包雨等),是客户端项目,不过配置平台也是客户端前同事负责的,所以我们也接过来了,刚好有个不错的机会进行后端开发的尝试。
过程&结果:
深度体验配置平台,发掘问题确定优化点,在后端同事协助下摸清后端开发和发布流程,进行接口和sql开发。让平台获得更好的使用体验、减少配置成本。
收获:
初尝企业的后端开发,为后续摸清业务链条提供了技术储备。对后端的服务化、RPC、远程调试建立起初步认知。
亮点:
独立主导并推进,在此感谢后端同事的倾力相助。(上价值观:最好的关系,是相互成就)
不足:
当然只是简单的CRUD开发罢了,成长有限,更多的是开阔视野和技术储备。
图墙动态能力&Tangram调研
背景:
随着商品图墙更高的页面覆盖率、以及内容和直播部门的更多曝光引流需求,对图墙提出了更多考验(有关图墙会在后面通用图墙的一期和二期提到),也是在这个时候,进行了对天猫Tangram项目的调研。可参考「动态页面之路 - 需求背景」系列文章。
写博客
开始写博客了,截止目前大概可以归纳这么几个阶段吧:
- 学习Jetpack、调研天猫Tangram项目(刚开始写,有点记笔记的感觉)
- 晋升总结、业务思考(写的还行,开始考虑从读者角度来写)
- 开源项目(如Glide、okhttp、retrofit)、一些踩坑经历(反馈还不错,易读)
- 开始入坑framework(可见「写作调整」)
收获:
养成了总结的习惯、明确了接下来的成长路线、能收到一些外部的认可和建议。
不足:
不够体系,需持续改进。后面会以自底向上的方式来写framework,同时考虑更多媒介,比如视频(时间允许的情况下)。
6月-8月
晋升
做了个总结,见「技术人如何做好晋升准备」。
前前后后准备了挺长时间,结果还是顺利的。
csslayout实时预览工具开发
关于csslayout可参考「Tangram动态页面之路(七)硬核的Virtualview」。
基本就是参考Virtualview的方案,实现一个内部的实时预览工具,进行提效。
Lifecycle落地收敛XXX的生命周期回调
比较简单,没啥好说的,不过这也是首次对Jetpack进行落地,留个纪念(Jetpack体系挺大的,但对于古老而庞大的App而言,能真正落地的技术不多)。
时光机优化
大促需要预演,需要提前穿越到大促当天来测试,这里主要是对工具的优化,进行提效(支持测试和运营的批量操作)。
通用图墙一期
背景:
图墙从单纯的电商侧业务,吸纳了内容和直播侧的业务。
过程&结果:
聚合三侧的样式,支持动态样式的下发,支持动态配置打点字段。
收获:
业务感知更强烈,能对未来业务发展所需的能力进行预埋。
9月-12月
通用图墙二期
主要是更智能,比如要做到电商同学写一个view和data类型,这个view就能在所有图墙里展示出来(自动注册)。
项目还在进行中…
总结
就写一些心得吧:
要清楚自己的业务链路,不要只从客户端的角度“单点发力”。
对产品提过来的需求,不要一味去实现,可以结合目前App能力来给产品提自己的方案,这样能让业务更快落地、更快实验,即不要停留在产品功能表面,而是搞懂背后的业务诉求(如果产品认可我们的方案,那岂不是又砍了一个需求)。
凡事考虑两面性、学会持续暴露问题和迭代自己,这应该是今年最大的收获了!