软件研发效能的负面清单:哪项是头号敌人?
再者,技术和工具的落后、不稳定等也会影响研发效能,比较容易理解;最后,软件自身带来的问题,如复杂性、可测试性、代码的可读性、缺乏必要的文档等等也会影响软件效能,也有人说,软件复杂性是软件效能的天敌,会杀死我们。
经过头脑风暴和整理,我们可以列出软件研发效能的负面清单:
缺乏质量意识
质量文化建设空白
组织缺乏领导力
团队之间矛盾重重
团队规模大
团队责任不清楚
缺乏有效的目标管理(OKR/KPI等)
人员招聘、培训流程混乱
个人职业素质普遍比较低
个人技术能力不强
个人软实力弱
照搬流程(机械、苛刻等)
流程不容易理解
繁琐的流程:只做加法
流程没有贯通(反敏捷、反DevOps)
流程至上
缺乏有效的流程改进机制
糟糕的研发效能度量
技术落后(保守)
技术不成熟(过于激进)
重复造轮子(开发市场/开源已有的工具)
研发平台(包括IDE)不好用
没有或低效的CI/CD流水线
研发环境不稳定
各平台(开发、测试、缺陷管理、项目管理等)没衔接好
需求描述不清楚
业务复杂没有优化(缺乏业务建模/架构设计)
需求经常变更(存在极大的浪费)
需求评审流于形式(导致需求遗留问题多)
需求管理混乱
糟糕的架构设计(系统复杂)
没有Design for Test
没有Domain driven design
缺乏必要的设计文档(如接口定义文档)
设计评审流于形式(导致设计遗留问题多)
代码质量差(bugly)
代码可读性差:不规范(命名、注释、风格)
代码不具有可测试性(含代码复杂)
糟糕的代码库管理(包括分支、合并等)
低效的版本构建、集成(如缺乏增量版本构建)
代码扫描(静态分析)很少做
代码人工评审流于形式(导致代码遗留问题多)
测试缺少方法(测试分析/设计能力差)
测试缺少策略(存在测试浪费)
测试环境不稳定
自动化测试程度很低
没有采用探索式测试
探索式测试和自动化测试没有有机地结合起来
部署或配置自动化程度不高
缺乏自动监控/人肉运维
缺乏可观测性
不自动收集用户反馈
你认为,哪项是头号敌人?
欢迎参加问卷调查,非常感谢