微软,你的软件是驴子Eeyore在设计吗?
在微软工程师Eric Lippert的一篇经典的帖子中具体描述了,在增加一个简单的ChangeLightBulbWindowHandleEx 函数到某一块微软的代码时,这个工作中会面临的痛苦的折磨人的细节问题:
• 需要一个5分钟的开发过程实现ChangeLightBulbWindowHandleEx函数。
• 需要一个项目经理撰写规范。
• 需要一个本地化专家审查规范中的本地化问题。
• 需要一个可用性方面的专家审查规范中的关于可访问和可使用方面的问题。
• 需要一个有开发人员,测试人员和项目经理参加的会议商讨安全漏洞方面的问题。
• 需要一个项目经理在文档中要添加安全模型。
• 需要一个测试员写测试计划。
• 需要一个测试更据它的结果更新测试计划。
• 需要一个测试员每天写测试用例并添加到计划中。
• 需要三到四个测试员参加到查找bug的工作中。
• 需要一个人撰写文档。
• 需要一个技术审查人员审查文档。
• 需要一个复制编辑审查文档。
• 需要一个文档管理人员整合新的文档到整个文档体系中,并更新内容和目录等。
• 需要二十五个翻译人员把文档以及其中的勘误信息翻译成所有微软支持的语言。负责这些工作的经理可能住在爱尔兰(负责欧洲地区的语言)和日本(负责亚洲地区的语言),由于严重的时差,他们之间的交流又是一个烦人的问题。
• 最后还需要一个高级经理团队负责协调所有的人,安排支出,核算成本,并且上报给它们的副总裁。
我觉得有时候在大公司程序员会弄不清设计软件时会有多少工作要做。有时候在外边看来只是添加五行代码的工作,一旦按所有必须的开发流程算起来却是五个人周的工作量。我们在这里谈的是微软,但是这决不是仅限于微软,这里只是众多商业软件中一个简单的例子。
由此,一个明显的问题就是:对于非商用的开源软件,谁来完成这些工作?大家都知道答案是,“没人”。谁为开源软件开发测试计划?谁来更新屏幕上的用户指南和在线帮助?又是谁负责将文档翻译成波兰语和土耳其语?谁又来负责验证那些特性没有违反美国残疾人法或者德国的隐私法?回想我使用linux时,答案是“没人,并没有测试计划,没有印刷的用户指南,所有的小文档只使用英语,没有人会在意是否遵守反倾销协定或德国的隐私法” 也许现在事情已有改变。
在这我提一个很现实的问题:是不是开源软件的开发需要按流程实施每个步骤才能使用?可不可以认为,实际上,开源软件大幅削减开发流程不是一个弱点,而是一个有很大好处的改进呢?在一般开发流程中开源软件丢弃的,在普及性和社区化方面获得了十倍多的提升。换句话说,如果Elbonians非常需要本地化的功能,他们可以自己实现这些。同时,开发人员有了更多的时间来实现那些有更大广度和深度的用户需求的功能,而不是为了简单的五行代码去实施一遍整个开发流程。
不是就有大的商业软件公司曾被自己的开发流程所拖累吗? 但是有时如果你公开的支持和鼓励人们削减流程,宁愿留下事后无法修补的风险和测试费用及本地化的影响;对设计上的需求变更的审问非常苛刻,这样又会使人觉得,要尽量少做一些流程,少做一些功能更改。
我不禁想起我参加的那么多的专题会议,而其中又是多么小的比例的功能实际的用上了。虽然不是每个功能都是好主意,但是有时某些功能确实能帮助减少开发中的问题。所以Eeyore总是说:“不要丢弃,我们需要支持这些功能,估计任何时刻都有可能需要这些功能来修补程序…”
要说的太多了,微软的软件设计感觉确实是驴子Eeyore在做的。
上一篇: COBOL语言50岁,仍担负重任
下一篇: 面向对象程序设计思想(精华)