读了《软件研发行业创新实战案例分析》有感写下笔记
对抗软件规模与复杂度的战争
1)软件开发属于手工业
作者开头以对谷歌的印象为例
普通外人看谷歌的代码,应该是星辰大海,无比华丽
但是在开发者眼中,谷歌代码是老牛拉慢车
以此引出软件开发的复杂度问题
启示:软件行业是手工业,很依靠开发者的个人能力。
对于管理者而言,制定代码规范,做好代码规范检查,代码走查等是减少代码复杂度的一种方法
2)软件复杂度来源
1️⃣ 本质复杂度(业务本身的复杂度),软件复杂度的下限
2️⃣ 解决方案的复杂度
3️⃣ 随机复杂度:短时效应、认知负荷、协同成本
随机复杂度是我们可以控制的,我们应该尽量减少,减少坏代码的衍生。
方案是 架构规范、尽量实现统一的规范、代码走差,不要出现大量随机的情况,谨慎引入新框架和技术栈
3)最常见的问题是倒排工期
大量的经验反馈出来的是 需求范围、开发工期、软件质量。
当工期一定的情况下,软件需求不可变的情况下,工期越短 软件质量越差。
我本人经历过不少倒排工期的项目,确实是如此,如果当工期一定,大家加班时间比较长的情况下,大部分是会选择,开发时间短可维护性差的方法。
4)解决方案
适当的时候令其炉灶,让客户实现无感的升级。