细数软件研发效能的七宗罪

简介: 细数软件研发效能的七宗罪


之前写了两篇文章,分别介绍 “软件研发效能的负面清单”、“软件研发的十大浪费”,今天算是对软件研发效能的负面东西做一个总结,挖掘出背后的原因。从本质上看,都是人性的弱点,这些弱点成为软件研发效能的阻力,甚至把软件研发效能拖下水


一宗罪:自私

  • 为了自己升职或保自己的位置,希望自己的团队快速扩展,自己管的人越多越好,而不管效能是否低下;具体讨论,可以参考之前写的一篇文章:许多研发管理者并不想提升研发效能,这才是最大的问题!
  • 各人自扫门前雪,休管他人瓦上霜”,有些管理者,只关注自己一亩三分地,而不管全局利益,局部效能看似不错,但整体效能上不去,甚至会产生严重的冲突,1+1<2, 而不是1+1>2
  • 资源浪费:自己有好的资源(包括人力资源)、好的学习材料占为己有,而不会主动向大家喊:这里有好的资源、好材料,你们想用吗?
  • 缺少分享精神。做出好的设计、写出好的代码,从中获得的经验和启发不愿分享,甚至都不想让同事知道。


二宗罪:爱面子、虚荣心作祟

  • 形象工程:愿意花巨资建一个大屏幕,呈现一些漂亮的数字,如100%自动化测试率、100%版本构建成功率、每天发布10个版本、一次发布平均高达10个用户故事......但交付的质量如何?是不是用户想要的?用户满意度如何?一些关键的数据倒是没有;例如100%自动化测试率,而实际测试的投入成本居高不下,效能其实不高。
  • 追求好看的指标和有利于自己的解读:即使是相同的数据,看我们怎么解读,如果只是为了好看,就会有好的解读。而且想要什么就度量什么,如果只是想要好看,你就会度量有利于自己的指标,甚至我们都不能低估人们在追求“好看指标”上的“创造性”。但实际上,我们往往希望数据帮我们发现问题,和“爱面子”相反。
  • 喜欢大而全的平台(包括开发平台、效能平台、度量平台、测试平台),而不是专而精的工具,造成平台使用麻烦、流转效率低下;
  • 有些工程实践也是为了充门面,常常沦为一种形式或只是口号,甚至滥竽充数,包括效能度量、单元测试、自动化测试,演示起来很漂亮,但实际项目中则一塌糊涂,而且自己内心还不一定认可其价值。有些文档制作得很漂亮,却是为了应付一些所谓的国际认证、内部审查而事后补做的,所以实质上没有提升效能,反而严重拖效能的后腿。


三宗罪:欲望

  • 欲望永远填不满,为了填充一些人的欲望,软件研发常常付出不少代价。
  • 如占有欲,有些工作(包括工作岗位,如开发经理、测试经理等)不适合他,但因为来得早,占了天时地利,却迟迟不愿让出来,阻碍着研发变革(如开发和测试的融合)。
  • 些工作完全则是为了满足自己的金钱欲望,例如,重复造轮子是为了自己的业绩,为了自己能涨工资和获得奖金,其实市面上已有现成的且好用的工具(领导可能不知道),自己造出的轮子还没有开源的工具好用(领导可能不知道)


四宗罪:喜新厌旧

  • 喜欢写新代码,开发新功能,代码不断累积,但从不优化,这样就导致了一个臃肿、脆弱的代码基础,难以进行有效地维持。
  • 追求新的技术、新的编程语言、新的设计模式,不断尝试新的东西,不断在不同的技术、语言和模式之间切换,浪费了多少代码和多少时间,全然不顾;而且新的技术不成熟,让系统的质量不稳定,甚至很糟糕,导致大量的返工。


五宗罪:骄傲盲目自大

  • 盲目迷恋自己工具,即使很难用,也不舍得抛弃,结果劣币淘汰良币;
  • 总觉得自己做的设计或写的代码就是好,测试人员发现缺陷,不怀疑自己的代码,反而是质问测试人员:你是不是搞错了?从而影响沟通和协作,降低研发效能。


六宗罪:崇洋媚外

  • 拿来主义:不管上下文,只要是欧美大厂(如Google、Apple、Amazon等大厂)的实践就是好实践,拿来就用。一些中小型企业的研发团队不了解自己的团队,不了解自己所处的环境,照搬欧美大厂(甚至国内大厂)的实践,导致水土不服效能不升反而下降。殊不知,南橘北枳。正如同样的药给大象吃可以治病,而给你吃可能直接丧命。不变革等死,但变革不对,会死得更快。变革是需要,一定要因地制宜。别人的经验可以参考,要弄清楚上下文,然后进行调整。适合自己的路终究要靠自己走出来,拔苗助长只能是昙花一现。
  • 不懂装懂,盲目跟风,不了解某种实践的起源,解决的是什么问题,只要人们说好的,只要大家都在用,就拿来用,也有可能一命呜呼。



七宗罪:懒惰

  • 懒惰是万恶之源,可见懒惰带来的危害之大。
  • 能偷懒就偷懒。写代码时没有验证输入这样的错误常常犯,病从口入,许多普通的安全漏洞(如缓冲区溢出、SQL注入攻击等)、因空指针导致系统崩溃,都是因为“没有验证输入”。代码缺少注释行,代码可读性差,单元测试能不做就不做,代码评审走过场,... 都是由懒惰造成的。


通过这篇文章和下面4篇文章,我们比较彻底地了解软件研发的本质和软件研发效能负面的方方面面,下周我们开始考虑如何克服这些问题、把软件研发拉上正道,如何持续提升效能...

相关文章
|
缓存 异构计算 Perl
【毅力挑战】PCIe 每日一问一答(2022.04 归档)
【毅力挑战】PCIe 每日一问一答(2022.04 归档)
4184 3
【毅力挑战】PCIe 每日一问一答(2022.04 归档)
|
存储 缓存 关系型数据库
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
MySQL的存储引擎是其核心组件之一,负责数据的存储、索引和检索。不同的存储引擎具有不同的功能和特性,可以根据业务需求 选择合适的引擎。本文详细介绍了MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案。
2157 57
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
|
SQL 安全 关系型数据库
【MySQL基础篇】事务(事务操作、事务四大特性、并发事务问题、事务隔离级别)
事务是MySQL中一组不可分割的操作集合,确保所有操作要么全部成功,要么全部失败。本文利用SQL演示并总结了事务操作、事务四大特性、并发事务问题、事务隔离级别。
5303 56
【MySQL基础篇】事务(事务操作、事务四大特性、并发事务问题、事务隔离级别)
|
10月前
|
前端开发 JavaScript 关系型数据库
基于python的租房网站-房屋出租租赁系统(python+django+vue)源码+运行
该项目是基于python/django/vue开发的房屋租赁系统/租房平台,作为本学期的课程作业作品。欢迎大家提出宝贵建议。
396 6
|
11月前
|
人工智能 数据库管理 OLAP
Qwen3 + AnalyticDB+Dify on DMS 私有部署指导⽂档
Qwen3 + AnalyticDB+Dify on DMS 私有部署指导⽂档
2554 2
|
11月前
|
存储 人工智能 运维
首批!阿里云飞天企业版率先通过中国信通院一云多算能力评估
首批!阿里云飞天企业版率先通过中国信通院一云多算能力评估
|
存储 数据采集 Prometheus
Grafana Prometheus Altermanager 监控系统
Grafana、Prometheus 和 Alertmanager 是一套强大的开源监控系统组合。Prometheus 负责数据采集与存储,Alertmanager 处理告警通知,Grafana 提供可视化界面。本文简要介绍了这套系统的安装配置流程,包括各组件的下载、安装、服务配置及开机自启设置,并提供了访问地址和重启命令。适用于希望快速搭建高效监控平台的用户。
851 20
|
资源调度 算法 Linux
Linux进程/线程的调度机制介绍:详细解析Linux系统中进程/线程的调度优先级规则
Linux进程/线程的调度机制介绍:详细解析Linux系统中进程/线程的调度优先级规则
3933 0
|
运维 容灾 关系型数据库
介绍几种 MySQL 官方高可用方案
MySQL 官方提供了多种高可用部署方案,从最基础的主从复制到组复制再到 InnoDB Cluster 等等。本篇文章以 MySQL 8.0 版本为准,介绍下不同高可用方案架构原理及使用场景。
3301 3
介绍几种 MySQL 官方高可用方案