写点什么

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

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

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

关注

评论

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

ps智能磨皮滤镜插件mac版Imagenomic Portraiture 4下载安装教程

Rose

程序员的幽默时刻:编程界的笑话集锦100

天津汇柏科技有限公司

程序员 软件开发

征程 6E camera diag sample

地平线开发者

自动驾驶 算法

AutoSway(AE风吹自由摇曳摆动MG动画脚本) 中文汉化版

Rose

【征程 6 工具链性能分析与优化-1】编译器预估 perf 解读与性能分析

地平线开发者

第二届全国高校软件测试开发教育峰会在韩山师范学院隆重举办!

测吧(北京)科技有限公司

测试

DistilQwen2:通义千问大模型的知识蒸馏实践

阿里云大数据AI技术

人工智能 知识蒸馏 通义千问

Overlord(AE制作MG动画神器脚本) 中文版-mac&win

Rose

基于图遍历的Flink任务画布模式下零代码开发实现方案

京东科技开发者

【征程 6 工具链性能分析与优化-2】模型性能优化建议

地平线开发者

自动驾驶; #算法

低代码平台服务编排提升

鲸品堂

低代码 交付工具 企业号 2024年11月PK榜

基于IM场景下的Wasm初探:提升Web应用性能|得物技术

得物技术

rust web前端 Wasm

如何利用模版进行设置仿真默认参数z

思茂信息

教程 模板 cst

【堡垒机小知识】堡垒机用户认证是什么意思?一般有哪些方式?

行云管家

网络安全 堡垒机

昆仑万维重磅发布天工AI高级搜索功能,做最懂金融投资、科研学术的AI搜索

新消费日报

一文说清什么是数据要素

郑州埃文科技

数据要素

指标+AI+BI:构建数据分析新范式

袋鼠云数栈

如何配置 GreptimeDB 作为 Prometheus 的长期存储

Greptime 格睿科技

存储 时序数据库 Promethues

一起单测引起的项目加载失败惨案

京东科技开发者

2025郑州等保测评机构名称看这里!

行云管家

等保 等级保护 郑州

常规LED广告显示屏运营成本怎么估算

Dylan

广告 运营 LED display LED显示屏 全彩LED显示屏

经济下行,当下企业如何破局?

禅道项目管理

需求管理 IPD 市场分析 IPD落地 IPD培训

第二届全国高校软件测试开发教育峰会在韩山师范学院隆重举办!

测试人

人工智能 软件测试 测试开发 高校

漆包线自动称重系统

万界星空科技

mes 智能称重系统 电子称重系统 万界星空科技 漆包线工厂

Digital Film Tools Rays for Mac中文破解版 ps光束滤镜

Rose

淘宝详情API接口全解析:如何获取与应用

代码忍者

API 接口 pinduoduo API

非凸科技助力第49届ICPC亚洲区域赛(成都)成功举办

非凸科技

ICPC

服装品牌必备:智能商品管理系统,打造高效运营新引擎!

第七在线

HyperWorks作业递交面板设置

智造软件

CAE Hypermesh hyperworks

DolphinScheduler集成Arthas实现接口调用监控,提升调度任务可靠性

白鲸开源

工作流调度 Apache DolphinScheduler #开源

加锁失效,非锁之过,加之错也|京东零售供应链库存研发实践

京东零售技术

后端 加锁

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