阿里云飞天发布时刻,领先大模型限免,超7000万 tokens免费体验 了解详情
写点什么

成本会计会导致无价值的代码吗?

  • 2007-06-15
  • 本文字数:1143 字

    阅读完需:约 4 分钟

成本会计是分析项目货币价值的标准会计方法,它将项目的各部分分别对待并且鼓励进行局部优化。成本的局部优化意味着强调完成任务的时间,而使任务完成时间最小化的关注就意味着你没时间进行重构和其它完善工作,因为这类工作太浪费时间了。这就是“万源之源”,就是不做这些事的常见理由,即“老板没有给我足够的时间做这些事”。

Henrik Mårtensson 其博客中提到了约束理论(Theory of Constraints), 并说明产量会计(throughput accounting)是如何营造一个可以接受敏捷开发实践的环境的。他通过一个假想的例子来告诉我们:

假如有两个项目团队,A 团队和 B 团队。每个团队都一个项目经理,四个开发人员和三个测试人员。每个团队成员的薪水是€3,500/ 月,工作时间是 160 小时 / 月。项目经理的薪水是€4,000/ 月。两个团队的生产率都是 80 个故事点 / 星期。 在团队 A 中,开发人员都在拼命工作,但测试人员却有很多空闲时间,时常上网冲浪。在团队 B 中,却是另一种景象。测试人员刚好跟上开发步伐,所以开发人员降低了开发速度以免测试人员处理不完。在某一天,两个团队都发现了一个缺陷。这两个缺陷都需要一个开发人员花八小时来修复。那么,团队 A 和团队 B 的成本各是多少呢?

这是给读者的一个思考题:“发现一个缺陷时会怎样?”成本会计告诉我们,这两个团队修复这个缺陷的成本是一样多的。但是多想一会儿,你就会发现这其实只是一个假象:

在团队 A 中,一个开发者去修复这个缺陷时,会直接影响整个团队的生产率。而在团队 B 中,开发者有一定的空闲时间。他们能修复这个缺陷却不受太大影响,在整个团队生产率上可能根本没有什么影响。即使不详细说明,结果也很明显,对两个团队的影响是完成不同的。

那么,问题在哪?关键在于成本会计强调的是局部最优,而实际上我们需要全局最优。利用成本会计,我们营造了一种环境,在该环境下,我们不鼓励任何延长局部周期时间的行为。

简而言之,假如你把软件开发项目的每个组成部分都看作是与其它部分相互独立的部分,那么关注任务完成时间就变成非常重要的了。假如你关注任务完成时间,你就不会在一些琐事上浪费时间,例如重构、写单元测试,以及进行领域设计。就算你想做这些事,管理者也会督促你开始新的任务。

看看“约束理论”和精益生产(Lean Manufacturing)也没什么新鲜的: David J. Anderson 写了一本书,名为《软件工程的敏捷管理(Agile Management for Software Engineering: Applying the Theory of Constraints for Business Results)》,而 Mary 和 Tom Poppendieck 因其在精益软件开发方面的工作而闻名。随着这个社区的成长,我们将看到从这两个领域产生的新观念变成主流,而它们的术语也会变得像“站立会议”和“结对编程”一样普遍。

查看英文原文: Does Cost Accounting Cause Crappy Code?

2007-06-15 02:001001
用户头像

发布了 100 篇内容, 共 24.1 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

从GitHub火到了InfoQ!共计1658页的《Java岗面试核心MCA版》,拿走不谢

收到请回复

Java 程序员 金九银十 Java面试八股文 常见面试题

软件测试100天上岸1-测试就是找茬游戏

和牛

测试 8月月更

带你玩转“超大杯”ECS特性及实验踩坑

科技怪咖

XSKY星辰天合与观测云完成产品兼容性互认证 构建全业务链路的可观测性

观测云

微信官方kbone,Web端同构的福音

Geek_99967b

小程序

Alibaba最新发布的Spring Boot项目实战文档,Github标星78k

Java面试那些事儿

Java Java 面试 java程序员 Java工程师 spring-boot

开源一夏 | 在STM32L051上使用RT-Thread (一、无线温湿度传感器 之 新建项目)

矜辰所致

开源 RT-Thread 8月月更 STM32L051

点赞破百万!字节算法大佬亲撰30W字数据算法笔记:GitHub标星93K

小柴说Java

数据结构 算法 算法题 算法与数据结构 算法面试题

7 天找个 Go 工作,Gopher 要学的条件语句,循环语句 ,第3篇

梦想橡皮擦

Python 爬虫 8月月更

干货!XDR产品安全检测体系如何更好的落地?

极盾科技

网络安全 安全 信息安全 数据安全 xdr

CSDN 加入星策开源社区,携手推动企业智能化转型建设

星策开源社区

企业转型 智能化 CSDN

什么是知识库,为什么需要它?

Geek_da0866

HUAWEI内网最新发布了一份452页网络协议手册,GitHb百万收藏

小柴说Java

Java 网络协议 java程序员 TCP/IP Java工程师

推荐 | 移动开发主流热更新技术

Speedoooo

小程序 APP开发 热更新

直播系统源码——重视哪些功能的开发?

开源直播系统源码

软件开发 直播系统源码 直播功能

容器化 | 一文搞定镜像构建方式选型

RadonDB

MySQL Docker Kubernetes 镜像 RadonDB

兆骑科创创新创业大赛,双创活动,赛事承办,三招三引

兆骑科创凤阁

兆骑科创国内外创新创业服务平台,创业大赛,企业落地孵化

兆骑科创凤阁

极盾·析策,XDR的正确打开方式

极盾科技

网络安全 安全 数据安全 xdr

从0到1打造推荐系统工程实战

Jay Wu

推荐系统

谁在构建超云?

Kent Yao

超云

重磅发布!阿里云全链路数据湖开发治理解决方案

阿里云大数据AI技术

大数据 阿里云 数据湖 数据分析

重磅升级!TDengine3.0正式发布

TDengine

数据库 tdengine 时序数据库

基于DevCloud进行黑白棋实时对战游戏开发实践

科技怪咖

洞见商业新机,云原生数据库GaussDB让企业决策更科学

华为云开发者联盟

数据库 后端 华为云

让GitHub炸锅的深入理解MySQL实战手册,竟出自阿里云“藏经阁”

冉然学Java

Java MySQL 高可用 阿里 构架

企业实践|基于软件研运一体化DevOps平台的应用解析

云智慧AIOps社区

DevOps 自动化 敏捷开发 研发管理 代码托管

【Java】:程序流程的控制

翼同学

Java 学习 编程语言 分享 8月月更

对话张星亮,洞察本质,SaaS首先是一种商业模式

B Impact

MySql主从同步介绍

京东科技开发者

MySQL 数据库 主从同步

火热与争议并行,XDR路在何方?

极盾科技

网络安全 安全 信息安全 数据安全 xdr

成本会计会导致无价值的代码吗?_研发效能_Amr Elssamadisy_InfoQ精选文章