2019年3月30日,有幸参加了光环国际举办的219规模化敏捷春季峰会,一共13个主题,我选择了吴言(隆正信息 敏捷总教练)老师带领的第三个主题---不断增长的技术债。
话题进行流程:
1.问题 2.原则 3.问题澄清 4.议程 5.问题重构 6.会议目标 7.解决方案
1.问题
不断增长的技术债
2.原则
自组织 不诡辨
3.问题澄清
首先,什么是技术债?
技术债首先是一个债务,就像我们财务债务一样,是向某个“对象”的借债。是为了短期利益而放弃或跳跃应当遵守的流程、规范、制度而欠下的债务。技术债包括低质量的代码,不合适的设计,缺陷,测试覆盖不充分,手工测试过多,平台扩展性差。
其次,为什么会出现技术债?
主要有工艺过程控制不足,研发能力水平不足,缺乏工具支撑,过时的架构,从不代码重构,为了进度而测试不足,手动配置过多,工作态度等,以及经常变化的产品方向。
技术债的后果
爆发点不可预期,开发支持成本上升,失败感弥漫,客户满意度降低
虽然技术债的出现有各种各样的原因,但本质可以归属为以下三方面:
- 管理层面
- 制度层面
- 人的不确定性
我们经常碰到一种情况是,市场的变动或时间限制,让我们在欠技术债的时候心安理得,因为你的要求很过分,时间有限,资源有限,还要保障产出,我只好怎么怎么的。这其实是产能的不匹配,产能的不匹配要通过管理的手段来解决。
另外就是制度和流程建设,如果保证质量,制度和流程约束必不可少。有一个拧螺丝的故事,A和B,在拧螺丝时要求拧三圈再倒半圈,A按要求操作,B一听心想那不就是拧二圈半吗!结果一到夏天,A拧的螺丝没事,B拧的螺丝都蹦掉了。
原来 三圈再倒半圈 ≠ 二圈半。拧三圈是为了把孔撑大,然后再回半圈是为了给高温时热涨预留空间。
这就是只看结果,而没有理解制度和流程的原因,制度和流程是内建质量的保障。
最后就是人的因素,人本身就是最大的不确定性,受情绪、环境、氛围的影响,即使同一个人也会有波动的变化,如果没有管理和制度的约束,这一不确定性就会使得技术债更加的不可控。
4.议程
主要是时间盒限制,在此不做解释
5.问题重构
当……由于……导致……引起
当 | 需求持续流入,形成持续生产持续交付的活动 |
由于 | 无质控标准 无工艺规范 无工具支撑 人员能力及态度的不确定性 |
导致 | 低质量代码 架构失控 设计不当 |
引起 | 价值无法呈现 |
6.会议目标
控制技术债的不断增长
7.解决问题的讨论过程
有效发布次数 增量发布降低工作量 精品思维不欠债 工具化支撑 减少手工操作
解决方案
- 架构跑道
- DevOps
- 内建质量
- 经济架构
- 代码评审
- 代码道场
题外话
技术债的分类:低级技术债、不可避免的技术债、策略性技术债
技术债的成因:
- 如期完工的压力
- 试图以错误的方式提高速率
- 减少测试或必要流程
- 债累债
技术债可视化管理
业务层面可见:跟踪开发速率,管理技术债
技术层面可见:透明化,分析,讨论,采取措施
偿还技术债
- 并非所有技术债都应偿还
- 发现偶然技术债-立即偿还
- 每个冲刺确定一定数量的已知技术债在当前冲刺中偿还
- 分期偿还
- 先偿还高息技术债