写点什么

何时应该打破规则?

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

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

关注

评论

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

起点决定高度:ONES 如何践行软件标准化

万事ONES

ONES 软件工具 企业管理软件

【CSS 学习总结】第七篇 - CSS 布局-居中布局-水平居中布局

Brave

CSS 12月日更

CNCC 演讲实录| 焱融 YRCloudFile 在 AI 训练中的性能优化实践

焱融科技

云计算 AI 云原生 高性能 文件存储

🍃【Spring专题】「技术原理」Spring Security的核心功能和加载运行流程的原理分析

洛神灬殇

spring spring security 框架搭建 12月日更

撬动百亿VRAR产业,让VR们“造”起来

华为云开发者联盟

AR vr 数字人 元宇宙 VR开发应用

年终招聘

张老蔫

28天写作

ONES 事记|ONES 参与信通院牵头编写的《DevOps 通用效能度量模型》

万事ONES

SaaS SaaS平台

大数据开发之Hive SQL内置函数

@零度

大数据 Hive SQL

安全的IT自动化运维工具用什么好?可以节省时间吗?

行云管家

IT运维 自动化运维

在线JSON转JAVA工具

入门小站

工具

Java的异常处理

海拥(haiyong.site)

28天写作 12月日更

星环科技大数据与人工智能应用研究与案例分享

星环科技

人工智能 大数据 数据分析 数据开发 技术专题合集

如何使用ADLab搭建活动目录实验环境来练习渗透测试技术

H

网络安全 信息安全 计算机

年末福利!专业级研发项目管理工具CORNERSTONE开源版正式上线!

优秀

项目管理工具

通过 LSM 架构设计一个数据库引擎

码哥字节

数据库 LSM树

助力前端开发的 5 个实用网站

开源之巅

前端 提升能力

Kubernetes API server工作原理

Jerry Wang

Kubernetes k8s 28天写作 docker image 12月日更

架构实战营 4 期 - 第 3 周作业

周念

「架构实战营」

【大咖说*数据Cool谈——数据库寻路,开源有态度】

大咖说

开源 大咖 #数据库

ONES CTO 冯斌:如何在终身学习中跳出「恐慌区」

万事ONES

ONES

Nocalhost:云原生开发新体验

CODING DevOps

云原生 Nocalhost

恒源云(GPUSHARE)_语音识别与语义处理领域之[机器翻译] 21.7 mRASP2

恒源云

深度学习 机器翻译 语音识别

【转】Node进阶篇之基于 gRPC 协议的 Node 服务

@零度

前端开发 Node

Kubernetes容器平台架构之道

巨子嘉

云计算 Kubernetes 云原生

如何快速搭建一个简单的固资管理系统

全象云低代码

开源 前端 低代码 资管系统 低代码平台

福建省等保测评机构有哪几个?机构名称叫什么?

行云管家

网络安全 等保 等级保护 等保测评

Linux之locate命令

入门小站

Linux

Angular 变化检测详解

PingCode研发中心

angular

软件开发中的常见的15个定律和原则释义及应用

码语者

软件开发原则 软件开发定律

OPPO大数据计算集群资源调度架构演进

安第斯智能云

大数据 后端

Python代码阅读(第72篇):回文

Felix

Python 编程 字符串 阅读代码 Python初学者

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