NingG +

制定技术规划

主要弄清楚几个问题:

  1. 什么是技术规划?
  2. 如何做技术规划?
  3. 常见的问题

背景

目前从业人员普遍存在的几个共性问题:

  1. 想得少:知道做的是什么,但是为什么要做这个方向的业务或者技术,不清楚为什么,就是想的少
  2. 闭门造车:拿出一个技术方案能够 work,没有跟其他团队和其他公司的方案做对比
  3. 不会做规划
  4. 不知道怎么带人
  5. 不会讲

做规划以及规划落地,一般有几个方面要考虑:

  1. 目标制定
  2. 风险控制
  3. 目标的周期?长期、短期?

技术规划,是什么?

技术规划,是什么呢?

  1. 融合多因素的发展愿景
  2. 对未来整体性长期性基本性问题的思考
  3. 设计全面长远的发展计划行动方案

规划 vs. 计划:

  1. 前瞻性
  2. 全局性
  3. 战略性
  4. 方向性

技术规划,为什么?

为什么要做技术规划?

  1. 灯塔、前进方向,把大家的注意力集中起来:有的团队喜欢做重构,随着业务的发展,多次进行重构
  2. 大处着眼、小处着手:无论是否在做全局的事情,都要让团队看到全局
  3. 做有积累的事情

有一个整体方向,朝着这个方向去解决途中遇到的问题,最后的整体方向更有可能达成。

技术规划,如何做?

目的和目标

做事情,一定要目的和目标:

  1. 目的:要做什么事情,例如:提升性能、分库分表等,都是目的,要达到可量化的什么目标呢?
  2. 目标:做到什么程度,例如:性能优化 50% 等等可量化的结果

目的

关于目的,从浅到深,几个思考层次:

  1. 解决现有问题:遇到一个业务问题、性能问题,要解决一下
  2. 抽象需求:现在迭代一个版本需要 1 个月,太慢,要改变一下,之后,需要具体分析是研发的效率问题、PM 的节奏问题、还是团队合作效率问题,最后才能改进
  3. 理想情况:要达到一个关键的业务指标提升,实现业务目标

目标

目标的几个层次

关于目标,从浅到深,几个思考层次:

  1. 系统性:是否从整体系统的考虑这个问题
  2. 方向性:想到的解决方案或者说业务方向,是否能够确定一个整体的方向,持续的去做
  3. 前瞻性:能够满足未来多长时间的发展需要,例如,要做分库分表、服务化拆分,要确定,未来能够支持的业务高峰是多少
目标因素

如何制定目标,需要考虑目标因素:

  1. 收益
  2. 技术
  3. 团队

收益,3 个维度来考虑:

  1. 收入:为公司带来的收入
  2. 效率:研发的效率、迭代的效率
  3. 体验:可靠性、用户操作流畅度

技术,3 个层次:

  1. 现有系统的扩展性:新增业务模块
  2. 新方向探索:新技术、新的业务的突破
  3. 趋势的判断:未来业务发展,对当前系统的影响,提前准备

团队,2 个维度:

  1. 人力成本:能够节省 10% 的人力成本
  2. 梯队能力:业务发展过程中,能够改善不同梯队人员占比

绘制全景图

全景图:

  1. 系统性的描述规划,执行者清楚不同角色的位置
  2. Excel 表 –> 脑图 –> 架构图(功能模块、开发模块):推荐架构图 + 脑图(补充)
  3. 五视图,勾勒出架构图:
    1. 逻辑架构*:流程图(业务模型) + 业务功能拆分
    2. 开发架构*:模块交互图
    3. 运行架构
    4. 物理架构
    5. 数据架构

方向划分:

  1. 水平分层:层次调用关系,上面调用下面,单向依赖
  2. 功能树:垂直画在一起,并列的 2 个业务

任务分解:

常见问题:

  1. 如果越画越复杂,怎么办?

Re:可以先画一个详细的,然后向上抽象,指导团队成员能够理解位置;也可以先画抽象的,再向下细化。

设定里程碑

执行计划,设置全面、可控、长远的执行计划:

  1. 目标、风险、收益
  2. 优先级、人力资源
  3. 合作
  4. 子任务
  5. 里程碑:可检查的阶段性点

关于里程碑的设定,目的是完整的项目阶段可 check,保证项目风险可控:

  1. 子方向 A:一期、二期、三期
  2. 子方向 B:一期、二期、三期
  3. 子方向 C:一期、二期、三期

在所有子方向的一期前后,做一个里程碑 A,二期前后,做里程碑 B,以此类推。

风险控制

高风险的项目:

  1. 之前没有人做过的项目,相关经验不足的项目,就是高风险的项目。
  2. 小步快跑,前期就分阶段快速出成果:demo –> 尝试(验证) –> 应用
  3. 关于尝试的补充说明:一定要先分析,后尝试,跟现有方案的对比,跟当前业务场景的契合程度,预期有收益,就进行尝试,避免别人说好,自己模棱两可就贸然在线上尝试
  4. 基于时间的设定:第一个月细化到周,三个月内细化到月

风险的评估:

  1. 技术风险:新的开发语言,团队积累
  2. 管理风险:是否需要其他配合,团队内部研发人力是否充足

Note:

千万不要被颠覆性的想法,冲昏头脑。

执行

贯彻执行:

  1. 定期总结
  2. 及时调整

Note:

规划是为了更好的适应明天的变化

小结

技术规划,关键点:

  1. 明确目标
  2. 全景图
  3. 里程碑
  4. 风险
  5. 调整

技术规划,具体需要进行的工作:

  1. 确定目标:
    1. 了解需求
    2. 明确方向
  2. 任务拆解
    1. 方向划分
    2. 全景图
  3. 执行计划
    1. 优先级
    2. 人力排期
    3. 里程碑
  4. 风险评估
    1. 技术风险
    2. 管理风险
  5. 贯彻执行
    1. 定期总结
    2. 及时调整

常见问题

问题 1:规划 = 计划

特点:

  1. 没有明确的计划、不成解决方案
  2. 多个目标、无所适从
  3. 规划 = 项目集合

解决办法:

  1. 区分技术方向和产品功能
  2. 寻求高阶指导
  3. 方向细分,多个规划

基本原则:

  1. 规划不求大,不求全
  2. 规划一定要清晰、可执行

问题 2:目标=实现系统

例如:实现一个工具链,提升研发效率

特点:

  1. 目标清晰
  2. 子系统分解,任务明确
  3. 分解后,无法 check 目标

解决办法:

  1. 里程碑的设定
  2. 寻求可量化
  3. 评估整体目标的实现

基本原则:

  1. 一定以业务目标为核心:例如研发效率提升,阶段一提升 10%,阶段二提升 5%
  2. 避免后期丢失业务目标

问题 3:走一步看一步

特点:

  1. 还没想清楚
  2. 做一步再考虑下一步
  3. 很容易跑偏,长期的风险比较大

解决办法:

  1. 长期方向必须明确
  2. 短期规划必须清晰

问题 4:半途而废

特点:

  1. 半年以上的项目
  2. 执行到中期项目半途而废
  3. 心理和环境因素的负面影响很大
  4. 周期很长,中间没有达到期望

解决办法:

  1. 目标合理性、任务拆解有效性
  2. 里程碑的设定
  3. 负责人的意志力要坚定
Top