来源 http://edw519.posthaven.com/it-takes-6-days-to-change-1-line-of-code
这是个真实的故事
总经理:我们的工厂有10%的产能没有充分利用。除非能开始安排更多的订单,否则就要解雇人了。我觉得还是给大家找到事做比较好,建立库存,为旺季做好准备。该怎么做呢?
运营经理:公司规定不能生产超过3个月的订单。如果我们把它改成4个月,应该就有足够的工作量了。
总经理:就这么办吧。怎么着手做呢?
运营经理:我也不是很清楚。大概是要改某个老系统里的配置项吧。
David(IT主管):没问题,应该就是改一行代码的事。给IT Service填个ticket吧。
IT管理员:我已经把129281号Ticket分配下去了。不过还需要业务影响分析以及主管审核。
David(IT主管):这是老总派下来的。如果不马上做的话,我们就得开人了。
IT管理员:好吧,我来填这些部分,给它开绿色通道。
2天后
David(IT主管):129281咋样了?
IT管理员:它是列表里最优先的功能改进任务了,前面还有14个bug要修。
David(IT主管):要啥任务列表啊,赶快把它分配给Ed,紧急任务。
1小时后
Ed(程序员):我修改了模块ORP572的第1252行,把一个硬编码的变量 MonthsOfBacklog 从3改成了4。单元测试过了。我跑了两次批量,工作列表如预期一样增加了10%。没问题了。我刚刚把代码提交复审,并把它挪进Homer等待验收测试。
复审员:现在公司规定禁止任何硬编码的变量。你要把它改成一个配置文件。另外,这里有2个以前留下的调试命令,一个变量未赋值的编译警告,一个硬编码的员工ID,这些都需要改掉才能上线。
Ed:这特么什么鬼。
复审员:的确是啊。但是你既然改了ORP572模块,你就有责任修正违反公司当前规定的遗留错误。我不能任由这个模块这个样子。
2小时后
Ed:好了,弄完了。我提交复审了。
Julie (测试):Homer不能用来做验收测试,因为Fred正在跑一个月末总账对照测试。用Marge吧。
Ed:我没有Marge的帐号。
Julie:那你找安全管理员,让他给你分配帐号。
2小时后
安全管理员:我要有David签字才能给你帐号。他出差了。你能等到周一么?
Ed:恐怕不行。老总马上就要这个功能。你让他授权吧。
复审员:你的配置参数 "MonthsOfDemand" 需要改个更好的名字。外包程序员可看不懂这是啥。另外这个变更需要审计跟踪。
Ed:公司规定是啥?
复审员:这个没有明确的文档。外包团队wiki更新要滞后3个月。不过我向你保证,新的配置参数必须符合命名要求而且保持审计跟踪。
1天以后
Ed:我把参数 "MonthsOfDemand" 改成了 "SelectedMonthsOfBacklogDemand",并且在维护系统中增加了PAR634来记录和跟踪这个变更。我已经提交代码复审了。
Tony(测试):我在Marge里看到129281了,但是没有测试计划啊。
Ed:你就跑一遍老的,再跑一遍新的,记录一下 WorkOrdersHours 报表中增长的情况。
Tony:这就是你的测试计划?不不不。这个会影响工厂里每个环节。我要有用户选定的测试用力,期待结果,测试执行文档,以及客户签字。
2天后
总经理:David, 让Tony把Ed的修改马上上线。
David(IT主管):好嘞,老板。
总共花费:6天
任务相关代码修改行数:1
任务相关字节修改数:1
头痛药:24
愤怒的在论坛对喷:14小时