今天看到一篇文章《如何防止“设计过度”》http://yishan.cc/forums/thread/916.aspx 其中有一段:
软件开发就好比是将一车货物从A点运到B点, 在途中, 我们有时会卸下一些货物, 同时换上更有价值的货物, 或者重新包装已有的货物, 从而腾出更多的空闲空间来装载更多货物. 在行进过程中, 我们会遇到不同的路况, 不同的天气, 不同的麻烦, 车子会抛锚, 轮子会爆胎, 路面会有障碍, 有时为了过一条河, 我们甚至得立刻把车改造成潜水艇或者在上面架一座桥. 当最终到达B点时, 车上的货物和出发时比起来已经大不相同了, 但是我们的目的始终只有一个, 那就是能在这一趟运输过程中, 为B点及时运去他们最需要, 而且价值尽可能高的货物. 这肯定不是一趟轻松的旅程, 在出发时, 我们无法预知即将面临的困难, 但是我们会准备两名司机轮流驾驶来防止疲劳, 制订一个粗略的行程计划, 带够前往下一个补给点的水和食物, 准备好备用胎和零件, 盘算好一些B点当前最需要货物(其中一些货物在运到B点之前就会变得一文不值), 把货物捆得结实又容易装卸(这的确不简单), 并在上面盖好一顶遮雨棚. 然后我们就上路了…在行进过程中, 我们要根据不同的路况采用不同的驾驶策略, 根据手中的食物和水调整行程计划, 根据货物的易碎程度调整它的包装方式和行进速度. 时刻为爆胎和零件修理做好准备. 当发现前面的道路不允许当前车辆通过时, 我们要立刻卸下货物换上另一辆合适的车, 或者, 为什么不抄一条边上的近路呢? 最后, 这会成为一趟长久的旅行, 也是一趟有趣的冒险之旅, 我们饱览了一路的盛景, 也经历了凶险的磨难, 当我们重新启程把货物从B点运到C点时, 我们会变得更加轻车熟路(也许吧).
要及时运送尽可能高价值的货物从A到B -- 项目的时间限制、目标;
“会遇到不同的路况, 不同的天气, 不同的麻烦, 车子会抛锚, 轮子会爆胎, 路面会有障碍” -- 项目的风险;
“准备两名司机轮流驾驶来防止疲劳, 带够前往下一个补给点的水和食物, 准备好备用胎和零件” -- 项目的资源;
“制订一个粗略的行程计划, 根据不同的路况采用不同的驾驶策略, 根据手中的食物和水调整行程计划” -- 项目管理;
“是一趟有趣的冒险之旅, 我们饱览了一路的盛景, 也经历了凶险的磨难” -- 经历了过程,得到了进步;
这段文字是对软件工程非常形象的描述,但不只是说软件项目。“当最终到达B点时, 车上的货物和出发时比起来已经大不相同了”、“其中一些货物在运到B点之前就会变得一文不值”我们带着理想和信念出发,途中就发现理想已经不一样了,甚至某些已经完全消失、变样了;“当发现前面的道路不允许当前车辆通过时, 我们要立刻卸下货物换上另一辆合适的车, 或者, 为什么不抄一条边上的近路呢? ”只有接受现实,冷静分析形势,抛弃本位定势,实事求是地看待问题才能走出困境;“我们饱览了一路的盛景, 也经历了凶险的磨难”用积极的心态看待一切,结果就是你最需要的 -- 你成长了。