zoukankan      html  css  js  c++  java
  • 用鸡讲解技术债务的形成过程

    技术债务,是指在面对需求时,由于仓促地实现某些功能特性而对代码库产生了破坏(同时,在此过程中破坏了代码库的架构设计)。对于一 些经理或客户来说技术债务仿佛是一个陌生的概念。也许他们知道,只是他们不太想听,我不确定。不管怎样,我想到了一个小故事,在下次某些新的特性需求提出 时,我会用这个故事告诉他们实现这些特性的代价有多大。

    On technical debt

      有一个农民,他有三只鸡,每只鸡每天生一个蛋。农民与当地的一个杂货店有生意来往。杂货商每天从农民那里买两个鸡蛋,这样他可以在他的店里出售。一切都有条不紊地进行着,直到有一天杂货商出现在农民的家门口。

      杂货商:嘿,今天我想要一些鸡肉。

      农民:肉吗?这可不在我们约定的协议范围之内。

      杂货商:我知道,但我真的需要肉。这是为我计划的一个企业家禽服务平台做准备的。

      农民:什么?

      杂货商:一些重要人物。你能给我一些吗?

      农民:嗯…这不那么容易,我必须孵化鸡蛋然后等待雏鸡长大。我认为这需要一个月左右的时间。

      杂货商:一个月?时间太长了…我更喜欢现在就拿到。

      农民:大自然有其自身的规律,你必须等待一段时间。

      杂货商:嗯…为什么你不杀一只鸡呢?这样一来,我将得到我想要的肉,你仍然可以每天生产两个鸡蛋。事实上你每天也不需要更多的鸡蛋,不是吗?

      农民:嗯…我不认为这是一个好主意。当其它的鸡发生一些意外的状况时,这会让我陷入困境,可能无法提供两个鸡蛋。

      杂货商:来吧,不会有什么事情发生的…况且,我真的,真的需要肉!你能给我吗?

      农民:好吧,我想我可以…

      说完,农民拿起屠刀将其中的一只鸡送到了造物主那。杂货商拿着他的肉回到了他的店里。

      杂货商:嘿!

      农民:嘿,怎么啦?

      杂货商:听着,上次的肉很好。事实上,它真的很美味,而且卖得非常好。所以现在,也就是明天之前,我至少要拿到一只鸡。

      农民:这是不可能的。如果我给你另一只鸡,我就无法按照合约里面的条款每天供应两个鸡蛋了。

      杂货商:哎呀,快点啦。客户想要肉,而且我已经答应了明天一定会提供肉的…

      农民:不,我不能这样做。如果我这样做,我就不能履行合同,你明白吗?如果我这样做了,鸡蛋就不能保证。

      杂货商:但是我真的,真的,真的需要肉!就在明天!否则客户会生气,地球会毁灭,整个世界正如我们所知道的那样会结束!给我一只鸡,现在!

      农民:嗯…如果你真的很想要,那你拿走吧!但是我要再次提醒你,从现在开始,我无法保证每天有足够的鸡蛋。明白吗?

      杂货商:当然了,这我知道的。但是你是一个聪明的家伙,我想无论如何你会想出办法解决这个问题的。拜拜!

      杂货商走了,再次回到了他的店铺。

      一天后:

      杂货商:你好!鸡蛋出什么问题了?

      农民:你是指什么?

      杂货商:鸡蛋,就是指鸡蛋,怎么只有一个鸡蛋?出什么问题了?

      农民:出什么问题了?我有三只鸡,你拿走了两只,现在,这里只有一只鸡。一只鸡下一个鸡蛋,我想这是很清楚的事情。

      杂货商:但是合约中没有这些!合同规定的条款就摆在这里。你每天欠我两个鸡蛋!现在你要我怎么向我的客户解释?

      农民:嗯,对此我是非常清楚的,而且我也无能为力。

      杂货商:好吧,好吧,天哪,算了吧,说的别的吧…如果能再拿一些肉走那还不错,我能拿走一些吗?

      所以,不要当一个农民。当需求来时,拒绝可能对你的代码库造成无法挽回的破坏的需求,一旦你被强迫去做这样的事情,绝对不要对已被破坏的残骸负责。同样,不要当一个杂货商—不要要求一些不可能完成的任务,同时为自己的决定承担责任。

      PS:在写这篇博文时没有任何的鸡受到伤害 ^o^

      原文:Andrea Dallera    编译:伯乐在线 – 肖翔

  • 相关阅读:
    [Erlang33]使用recon从网页查看Erlang运行状态
    Oracle数据库备份与恢复
    Oracle 差异增量和累计增量备份
    RMAN 参数详解
    前端自动化构建工具 Webpack—— 2 webpack最基本的使用方式
    React 入门与实战-课时7 虚拟DOM的本质和目的
    数字证书注册审批机构(RA)
    前端实习面试整理
    JavaScript 对象中this的指向问题
    CSS基础学习 21.CSS居中总结
  • 原文地址:https://www.cnblogs.com/hnrainll/p/2391561.html
Copyright © 2011-2022 走看看