Better

Ethan的博客,欢迎访问交流

一次任务管理的反思总结

之前有组织成员进行一轮项目重构,但结果自己不是很满意,总结一下存在的问题。

背景

之前负责的某项目 A,在经历多轮迭代后,项目变得 bug 众多,且难以维护。任务就是带领组员进行一轮重构,解决项目中开发上的痛点、同时修复已有的问题。

实施

由于自己也离开项目 A 有一段时间了,对项目中存在的问题,也不是那么清楚,于是采取的策略分为两步

  • 自己迅速查阅整个项目,确定相关的任务列表
  • 与组员沟通,从他们身上收集任务

我大概发现的问题有如下几种情形

  • 滥用 any,导致重构不敢下手
  • 原本通用的设计,后面被加入很多的业务逻辑,变得不再通用
  • 组件 props 命名不清晰,责任边界不清晰
  • 甚至还存在 copy 组件的情形,然后只是再原有的基础进行修改
  • 存在很多的僵尸代码,舍不得删除,结果带来误解

从组员收集上的任务来看

  • 更多的是聚焦在自己负责的模块,想进一步完善的
  • 还有就是,的确是痛点,但影响范围不大,或者不恶劣,属于不紧急的那种

沟通之后,大致确定下来了一个任务列表,但我同时交代了两件事情(然而并没有什么卵用)

  • 可以互相提需求
  • 可以互相审阅 pr

结果

结果其实不太尽如人意,最终重构有点像是

  • 目录移动大会
  • 僵尸代码清理大会

反省的原因有如下几点

  • 对于收集上来的任务,需要进一步沟通和筛选
    • 值不值得现在做
    • 怎么做?明确好怎么具体方案
    • 明确好目标
  • 任务没有区分优先级和难易程度
    • 对任务进行紧急与重要程度的四象限划分,抓住主要矛盾
    • 如果任务确实有点难度且重要,该争取工时就尽早争取

总结

技术上

  • 成员之间的 Long Life Branch 会导致重构束手束脚,一边重构,一遍迭代,让人奔溃
  • 项目中很多地方滥用 any,缺少完善的 typing,导致重构困难且脆弱

任务管理流程上需要进一步完善

  • 事前:做什么(排优先级很重要)
    1. 列出任务清单
    2. 列出每一个任务对结果的核心期待(进度、质量、效果)
    3. 对照目标评估任务
    4. 通过成果收益来看重要程度(和目标的匹配度)
    5. 通过后果损失来看紧急程度
  • 事中:怎么做
    • 保证有效执行
  • 事后:怎么做更好
    • 完善流程机制

于此同时:任务来源自上而下,还是自下而上是一个值得思考的问题



留言