写点什么

何时应该打破规则?

  • 2008-09-19
  • 本文字数:1010 字

    阅读完需:约 3 分钟

作为 JUnit 测试框架的作者,Kent Beck 在《赶紧交付吧,宝贝儿》一文中提醒我们:所有的敏捷过程和实践,都是为了开发出可以交付的软件。如果有什么成为软件交付的障碍,也许你就得打破规则了。

Kent 引用了 Oakland Raider 公司总经理 Al Davis 的话“赶紧获胜啊,宝贝儿”,他还描述了自己遇到的麻烦,当时他在开发一个 Eclipse 插件,并试图先编写测试来验证之前的一个想法。

几周的时间里,我总共花了 6 到 8 个小时来编写第一个测试并使之运行。为 Eclipse 插件写测试可不容易,所以遇到问题也很正常。我就是反复不断地琢磨这个问题,想让我的第一个测试顺畅运行。

8 个小时的工作之后,他还是没有得到一个有用的测试,而且也没能成功测试最早的想法。几天后,他在 Eclipse 中尝试了另外一种不用做测试的方法。他投入了三个小时的工作,发现原先的想法并不怎么样,这让他觉得很不开心。

Piergiuliano Bossi 认为 Kent 传递了错误的信息。他觉得 Kent 只是做了一个探索性的开发(spike),对 Eclipse 的插件架构体系进行了了解,并且试图找出如何在那个环境中编写测试。Piergiuliano 认为不通过 TDD 的方式来搞清楚 api 的用途是很正常的,等到对 api 有了足够的理解之后再重新编写代码,也许效果更好。他想知道是不是有可以暂时不用考虑规则的情况,以及这样做会带来什么后果:

咱们考虑这样一种状况:如果可以暂时不遵守某些实践,就能马上得到一些短期的交付。在这种状况下,团队会很容易欠下一些很严重的技术债务,甚至有可能大大影响系统的质量。 ……

还有其他的状况:系统已经糟糕到一定地步,不允许再发生任何技术债务,软件再有任何差池,都将会导致财务上的损失(甚至更差)。经验告诉我,这些损失是很容易发生的,一旦出现,结果很可能更具破坏性。光说“赶紧交付吧,宝贝儿”会造成灾难性后果,而且是完全不负责任的做法。

他担心 Kent 的文章会“鼓励粗鄙的、不计后果式的编程文化”。

五年前, Bob 大叔写过同样的话题:

傻瓜才会盲目遵从规则。我们的脑子足可以分辨规则何时有用,何时不行。我们有责任不断判断规则是否有用。

但是他又从另一面做了解释:

我们的职业自豪感才是解决问题的根本。这种自豪感既冰冷残酷,又炽热夺目。它不会让我们因为恐惧而将规则摒弃一边,如果这么做,也是因为职业自豪感让我们发现:某些规则会让我们交付垃圾软件。

所以,Piergiuliano 和 Bob 大叔一定认为:要将“质量第一”牢记心中。

查看英文原文: When is Ok to Break the Rule

2008-09-19 06:091681
用户头像

发布了 479 篇内容, 共 179.0 次阅读, 收获喜欢 53 次。

关注

评论

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

什么是海外舆情监测?为什么品牌出海必须拥有海外舆情监测系统?

沃观Wovision

舆情监控 沃观Wovision 舆情监测系统 海外舆情监测

仓颉之并发编程的速度激情

华为云开发者联盟

高并发 仓颉 华为开发者空间

YashanDB数据库分布式架构下的数据一致性实现

数据库砖家

YashanDB数据库高并发写入优化实用技巧

数据库砖家

YashanDB数据库高可用集群快速部署教程

数据库砖家

YashanDB数据库多租户环境下的隔离策略

数据库砖家

YashanDB数据库多租户数据隔离实践分享

数据库砖家

YashanDB数据库分布式事务及高可用架构介绍

数据库砖家

YashanDB数据库分布式锁实现及应用

数据库砖家

框架大冒险:开发者的奇幻之旅

华为云开发者联盟

tensorflow PyTorch mindspore 华为开发者空间

YashanDB数据库分片策略及数据迁移实操指南

数据库砖家

YashanDB数据库高可用架构搭建实用教程

数据库砖家

YashanDB数据库高可用架构建设实战

数据库砖家

对于房企而言,国内最值得选的楼宇对讲品牌有哪些?

新消费日报

区块链RWA系统外包开发的周期

北京木奇移动技术有限公司

区块链开发 软件外包公司 RWA开发

YashanDB数据库故障恢复自动化流程分享

数据库砖家

YashanDB数据库多线程查询性能提升方法

数据库砖家

仓颉之编译和构建的奇妙旅程

华为云开发者联盟

编译 构建 仓颉 华为开发者空间

YashanDB数据库多租户架构设计与安全隔离

数据库砖家

YashanDB数据库分布式索引设计与性能提升技巧

数据库砖家

CAD怎么入门?看这一篇就够了,超详细的CAD入门教程

在路上

cad cad看图 CAD看图王

YashanDB数据库分布式架构设计方法详解

数据库砖家

YashanDB数据库服务稳定性及高可用配置方法

数据库砖家

RPC的三大问题:跨语言、跨平台通信的终极解决方案是如何炼成的?

poemyang

网络协议 RPC RPC框架

YashanDB数据库高可用配置及演练实务

数据库砖家

对于房企而言,国内最值得选的楼宇对讲品牌有哪些?

新消费日报

大数据-79 Kafka 监控从入门到实战:度量体系、JMX采集与可视化告警全流程 Prometheus、Kafka Eagle

武子康

Java 大数据 kafka 分布式 消息队列

CAD外部参照未找到文件是怎么回事?

在路上

cad cad看图 CAD看图王

YashanDB数据库分布式架构详解与部署教程

数据库砖家

YashanDB数据库分布式事务机制深度解析

数据库砖家

YashanDB数据库服务的高可用集群搭建指南

数据库砖家

何时应该打破规则?_研发效能_Mark Levison_InfoQ精选文章