让你的用户参与权衡
通常你是为别人编写软件。你常常需要记得从他们那里获取需求2﹒们你是否常t他们、他们想要他们的软件有多好?有时候选择并不存在:如果你的T.作对象是心脏起搏器、航大飞机、或是将被广泛传播的底层库、需求就会更苛刻,你的选择就史有限但是,如果你的!.作对象是全新的产品,你就会有不同的约束:市场人员有需要信予的承诺、最终用户也许已基于交付时间表制定了各种计划.而你的公司肯定有现金流方面的约束﹐无视这些用户的需求.一味地给程序增加新特性,或是–次又一次润饰代码,这不是有职业素养的做法.我们不是在提倡慌张:许诺不叮能兑现的时间标度( time scale )、为赶上.最后期限而削减基本的T程内容,这些同样不是有职业素养的做法.
你常常会处在须要进行权衡的情形中。让人惊奇的是,许多用户宁愿在今天用上;有一-些“毛边”的软件,也不愿等待一年后的多媒体版本,许多预算吃紧的IT部门都会同意这样的说法。今天的了不起的软件常常比明天的完美软件更可取如果你给用卢某样东西,让他们及早使用.他们的反馈常常会把你引向更好的最终解决方案
知道何时止步
在某些方面,编程就像是绘画。你从空白的画布和某些基本原材料开始,通过知识、艺术和技艺的结合去确定用前者做些什么,你勾画出全景,绘制背景,然后填入各种细节。你不时后退一步,用批判的眼光观察你的作品。常常、你会扔掉画布,重新再来。
但艺术家们会告诉你,如果你不懂得应何时止步,所有的辛苦劳作就会遭到毁坏如果你一层又一层,细节复细节地叠加,绘画就会迷失在绘制之中.
不要因为过度修饰和过于求精而毁损完好的程序。继续前进,让你的代码凭着自的质量站立一会儿。它也许不完美、但不用担心:它不可能完美.