之前实习是在小团队,现在工作是在大团队,体验完全不同,简单水篇文章~
概念定义
- 小团队:开发团队在10人左右,最好是5人以内;没有明显的规章制度;包括独立开发者(一人公司)
- 大团队:一看就感觉很像“公司”,规章制度明显。(即使组内只有3个人,但是整个公司是个大公司,制度在这个团队也生效,那也算大团队)
产品模式
- 小团队:
- 整体:更加自驱,拥有对产品的较强的把握权,能关注到整个产品的生命周期,代入到各个角色中。
- 迭代效率:快速试错
- 大团队
- 整体:归属感不强,没有打造自己的作品的感觉。
- 迭代效率:迭代慢、看重ROI、但又短视
编码关注点
- 小团队:
- 整体:做小而美的产品本身,写代码会比较爽,更注重实现功能细节。
- 架构、创新:敢于使用最新的技术、热衷于用新框架、设计架构
- 大团队:
- 整体:做一个极度工业化的产品,开发战战兢兢
- 细节:
- 大规模场景:预估接口QPS、与上下游制定SLA、慢SQL分析优化、锁优化等等
- 可观测性:多打日志(因为排查问题不方便直接看线上库)、埋点、灰度等等
- 边界:各种极端case不崩、不影响历史已有逻辑
产品生命周期
- 小团队:
- 时间线安排:灵活随意
- 需求确定:提出方相对随意,也不一定会有原型+设计稿
- 开发阶段:几乎无技术评审、单测比较随意
- 集成测试:一般是研发自测;自动化测试会有一些,但不多
- DevOps:讲究快速,一键运行,比如点了合并代码后,一次性完成所有部署
- 大团队:
- 时间线安排:需求倒排,哪个时间开发完、哪个时间测试完、哪个时间上线都提前明确(所以很累)
- 需求确定:大部分时候是产品提、研发把关
- 开发阶段:基本都要先技术评审写文档、单测一定要写
- 集成测试:研发自测+专门测试+非常多的自动化测试
- DevOps:平台化+讲究稳定可靠(慢)。每个环节都有卡点,人工审批多,各种小流量+灰度+多环境发布,要求可快速回滚。
总结:
- 小团队:充分发挥人的主观能动性
- 大团队:通过制度保证体系能够运行,默认人是不可信的,最大程度规避人员交接带来的系统崩溃