足够好的软件(程序员修炼之道摘录四)
来源:互联网 发布:erp基础数据导入工具 编辑:程序博客网 时间:2024/06/03 16:01
足够好的软件
欲求更好,常把好事变糟
——李尔王
有一个有点老的笑话,说一家美国公司向一家日本制造商订购了100,000 片集成电路,规格说明中有次品率,10000片中只能有一片,几周过后订货到了:一个大盒子,里面装有数千片IC,还有一个小盒子,里面只装10片IC,在小盒子有一个标签,上面写着“这是次品”
要是我们真的能这样控制质量就好了,但现实世界不会让我们制作出十分完美的产品,特别是不会有无错的软件,事件,技术和急躁都在合谋反对我们。
但是,这并不一定就让人气馁,如Ed Yourdon 发表在IEEE Software上的一篇文章所描述的,你可以训练你自己,编写出足够好的软件——对你的用户,对未来的维护者,对你自己内心的安宁来说足够好,你会发现,你变得更多产,而你的用户也会更加高兴,你也许还会发现,因为“孵化期”更短,你的程序实际上更好了,
在继续前进之前,我们需要对我们将要说的话进行限定,短语"足够好"并非意味着不整洁或制作糟糕的代码,所有系统都必须满足其用户侧需求,才能取得成功。
我们只是在宣扬,应该给用户机会,让他们参与决定你所制作的东西何时已足够好。
让你的用户参与权衡
通常你是为别人编写软件。你尝尝需要记得从他们那里获取需求,但你是否常问他们,他们想要他们的软件有多好?有时候选择并不存在,如果你的工作对象是心脏起搏器,航天飞机,或是将被广泛传播的底层库,需求就会更苛刻,你的选择就更有限,但是,如果你的工作对象是全新的产品,你就会有不同的约束。市场人员有需要信守的承诺,最终用户也许已基于交付时间表制定了各种计划,而你的公司肯定有现金流方面的约束,无视这些用户的需求,一味地给程序增加新特性,或是一次又一次润饰代码,这不是有职业素养的做法,我们不是在提倡慌张:许诺不可能兑现的时间标度,为赶上最后期限而消减基本的工程内容,这些同样不是有职业素养的做法。
你所制作系统的范围和质量应该作为系统需求的一部分规定下来。
你常常会处在需要进行权衡的情形中,让人惊奇的是,许多用户宁愿在今天用上有一些“毛边”的软件,也不愿等待一年后的多媒体版本,许多预算吃紧的IT部门都会同意这样的说法,今天的了不起的软件常常比明天的完美软件更可取,如果你给用户某样东西,让他们及早使用,他们的反馈常常会把你引向更好的最终解决方案。
知道何时止步
在某些方面,编程就像是绘画,你从空白的画布和某些基本原材料开始,通过知识,艺术和技艺的结合去确定前者做些什么,你勾画出全景,绘制背景,然后填入各种细节,你不时后退一步,用批判的眼光观察你的作品,常常,你会扔掉画布,重新再来。
但艺术家会告诉你,如果你不懂得应何时止步,所有的辛苦劳作就会遭到毁坏,如果你一层又一层,细节反复地叠加,绘画就会迷失在绘制中。
不要因为过度修饰和过于求精而毁坏完好的程序。继续前进,让你的代码凭着自己的质量站立一会,它也许不完美,但不用担心,它不可能完美。
- 足够好的软件(程序员修炼之道摘录四)
- 《程序员的修炼之道》笔记——4、足够好的软件
- 《程序员修炼之道》摘录
- 注重实效的哲学(程序员修炼之道摘录一)
- 注重实效的哲学(程序员修炼之道摘录二)
- 注重实效的哲学(程序员修炼之道摘录三)
- 你的知识资产(程序员修炼之道摘录五)
- 你的知识资产(程序员修炼之道摘录六)
- 程序员修炼之道读后感(四)
- 《程序员修炼之道》笔记(四)
- 《高效能程序员的修炼》读后摘录
- 读书笔记-程序员修炼之道-注重实效的哲学(四)
- 程序员的修炼之道
- 程序员的修炼之道
- 读书笔记:《程序员修炼之道》《程序员的思维修炼》
- 系统架构师的修炼-程序员修炼之道
- 软件架构师的修炼之道
- 软件架构师的修炼之道
- _CrtIsValidHeapPointer(pUserData) 错误
- jquery语法总结和注意事项
- JSP网站开发(1)
- 再做MBTI测试,挺喜欢这个结果
- 多线程 文摘 记录
- 足够好的软件(程序员修炼之道摘录四)
- 异常与错误处理
- Android读写文件
- hibernate中one-to-many实例一
- CXF Helloword
- Performance tuning for Data Selection Statement
- C#关于Webbrowser如同IE一样的状态栏
- 使用jQuery轻松实现Ajax
- 什么是软件开发 (别人转的)