读书笔记-软件工程师修炼之道-注重实效的哲学(二)

读书笔记-程序员修炼之道-注重实效的哲学(二)

  • 石头汤与煮青蛙
    • 村民的角度
  • 足够好的软件
    • 知道何时止步

石头汤与煮青蛙

读书笔记-软件工程师修炼之道-注重实效的哲学(二)
 三个士兵从战场返回家乡,在路上饿了。他们看见前面有村庄,就来了精神—他们相信村民会给他们一顿饭吃。但是当他们到达那里,却发现门锁着,窗户也关着。经历了多年战乱,村民们粮食匮乏,并把他们有的一点粮食藏了起来。

 士兵们并未气馁,他们煮开一锅水,小心的把三块石头放进去。吃惊的村民走出来望着他们。

 “这是石头汤。”士兵们解释说。“就放石头吗?”村民们问。“一点没错 — 但有人说加一些胡萝卜味道更好… …”一个和村民跑开了,又很快带着他储藏的一篮胡萝卜回来。

 几分钟之后,村民们又问:“就是这些了吗?”

 “哦!”士兵们说:“几个土豆会让汤更实在。”又一个村民跑开了。

 接下来的一小时,士兵们列举了更多让汤更鲜美的配料:牛肉、盐、香菜等等,每次都会有一个不同的村民回去搜寻自己的私人储藏品。

 最后他们煮出来一大锅热气腾腾的汤。士兵们拿掉石头,和所有村民一起享用了一顿美餐,这是他们所有人几个月来第一次吃饱饭。

分析:有两层寓意。士兵戏弄了村民,利用村民的好奇,从他们那里弄到了事物。但是更重要的,士兵充当催化剂,把村民们团结起来,和他们一起做到了他们自己本来做不到的事情 — 一项协作的成果。

 项目开始,你请求许可去解决问题,但是遭到了拖延漠视,大家都捍卫自己的利益,要求设立讨论组,事情变得复杂化。

 这正是拿出石头的时候。设计出你可以合理要求的东西,好好开发它。一旦完成,就拿给大家看,让他们大吃一惊。然后说“要是我们增加… … 可能会更好。”

 人们发现,参与正在发生的,成功要更容易。

 让他们瞥见未来,你就能让他们聚集在你周围。

Be a Catalyst for Change
做变化的催化剂

村民的角度

读书笔记-软件工程师修炼之道-注重实效的哲学(二)

 另一方面,石头汤的故事也是关于温和渐进的欺骗的故事。

 过于集中注意力,忘了世界的其他部分。我们也是这样,事情会在不知不觉中,悄悄爬到我们身上。

 有这样的情况,项目慢慢的、不可改变的、完全失去控制。很多可怕性的灾难都是从微小的事情开始的,大多数项目的拖延都是一天一天发生的。系统一个特性一个特性的偏离规范,一个又一个的补丁被打在某段代码上,直到最初的代码一点没有留下。

 小事情常常会破坏了士气和团队。

Remember the Big Picture
记住大图景

 要持续不断的观察周围发生的事情,而不只是你自己在做的事情。

足够好的软件

 你所制作的系统的范围和质量应哎作为系统需求的一部分规定下来。

MakeQuality a Requirements Issue.
使质量成为需求问题

 你常常会在处于需要进行权衡情形中。如果你给用户某样东西,让他们及早的使用,他们的反馈常常会把你引向到更好的最终解决方案。

知道何时止步

读书笔记-软件工程师修炼之道-注重实效的哲学(二)
 在某些方面,编程就像是回话。你从空白的画布和某些基本原料开始,通过知识、艺术和技艺的结合去确定前者做些什么。

 你勾画出全景,绘制背景,然后填入各种细节。你时不时的后退一步,用批判的眼观观察你的作品。常常,你会扔掉画布,重新再来。

 但艺术家们会告诉你,如果你不懂得应用何时止步,所有的辛苦劳动就会遭到毁坏。如果你一层又一层、细节重复细节,绘画就会迷失在绘制之中。

 不要因为过度修饰和过于求精而损坏完好的程序。继续前进,让你的代码飞一会,它也许不完美,但不用担心,它不可能完美。