写点什么

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

  • 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:001090
用户头像

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

关注

评论

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

欧拉的奇异之旅·风暴来临与欧拉初诞

脑极体

裁员,降薪,大牛出走:AI大退却的始末缘由

脑极体

区块链+体育发展提速 区块链球员数据系统预计上半年投入使用

CECBC

Linux系统编程-(pthread)线程通信(信号量)

DS小龙哥

信号量 2月月更

验收测试驱动开发后记

Bruce Talk

敏捷 Agile User Story

架构实战营模块二作业-微信朋友圈复杂度分析

炎彬

「架构实战营」

网络安全kali渗透学习 web渗透入门 如何进行基于ping命令的探测

学神来啦

阿里云张献涛:自主最强DPU神龙的秘诀

阿里云弹性计算

阿里云 神龙架构 DPU

区块链通证经济:通往未来十年财富分配的新格局

CECBC

玉米可流转数字仓单标准的落地 将加速行业的资产数字化进程

CECBC

第十节:SpringBoot中的日志管理

入门小站

spring-boot

iOS开发·备战2022金三银四-runtime原理与实践: 消息转发详解篇

iOSer

ios runtime iOS面试 ios开发 金三银四跳槽

项目遇到突发问题,如何给上级做汇报?

石云升

项目管理 项目经理 2月月更

Web Components 系列—— 详解 Slots

CRMEB

【架构训练营模块二作业】分析一下微信朋友圈的高性能复杂度

yhjhero

#架构训练营

基于云开发的健身房预约小程序平台

CC同学

浅析PHP伪协议在CTF的应用

喀拉峻

网络安全

关于 docker-compose stop 和 docker-compose start 的误解

liuzhen007

容器 云服务 2月月更

Linux系统编程-Shell脚本基本使用(变量、运算符、语句等)

DS小龙哥

shell脚本编写 2月月更

DC系列靶机知识点总结

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

RTE2021 回顾丨实践中的摸爬滚打,AI OPS 落地之路

声网

人工智能 算法 Ops

Kotlin语法手册(一)

寻找生命中的美好

android kotin

Linux系统编程-(pthread)线程通信(自旋锁)

DS小龙哥

自旋锁 2月月更

电商直播选品该怎么做?有没有好用的工具?

优秀

带货 直播 低代码开发

模块八作业

Geek_e6f7f6

架构实战营

DevOps进阶(二):DevOps 发展史

No Silver Bullet

DevOps 2月月更

Web Components 系列(五)—— 关于 Templates

编程三昧

前端 组件化 2月月更

基于 Kyma 的企业级云原生应用的扩展案例分享 | 社区征文

汪子熙

Kubernetes 云原生 新春征文 2月月更 Kyma

Apache APISIX 存在改写 X-REAL-IP header 的风险公告(CVE-2022-24112)

API7.ai 技术团队

IP 漏洞 Apache APISIX APISIX 网关

在线ASCII Banner艺术字生成工具

入门小站

工具

跨平台移动APP开发进阶(一):mui开发注意事项

No Silver Bullet

App 跨平台 2月月更 mui

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