《人月神话》(P6)虚怀若谷和避免过度设计【转】
结构师的交互准则和机制
结构师的交互准则其实就是彻底、谨慎、和谐的与人交流。尽早的交流和持续沟通能够使结构师有较好的成本意识,以及使开发人员获得对设计的信心,并且不会混淆各自的责任分工。
面对估算过高的难题,结构师有两个选择:削减设计或者采用成本更低的方法。然而后者并不是结构师能够控制的,这是在向开发人员提出要求。此时,结构师想要发挥自己的作用,必须:
- 牢记是开发人员承担着创造性功能的实现责任,结构师只能提出建议。
- 能够为自己所制定的某项说明提供一种建议的实现方法,并且准备接收任何其他可行的方法。
- 对开发人员的建议保持低调和平静。
- 准备放弃对自己提出的建议的坚持。
- 听取开发人员在体系结构上改进的建议。
自律 —— 开发第二个系统所带来的后果
在开发第一个系统时,结构师倾向于精炼和简洁,他知道自己对正在进行的任务不够了解,所以会谨慎仔细的工作。当第一个项目结束之后,结构师会信心满满,准备设计第二个类似的系统。然而,这第二个系统通常人们所设计的最 “危险” 的系统,通常都会被过分的进行设计。
在这里例举了一个 OS/360 的例子,大概意思就是,结构人员有了第一次的经验之后,习惯性的为新系统增加了过多的修饰功能和想法,导致新系统粗糙、浪费、缺乏优雅。
结构师需要避免这样画蛇添足的事情发生,需要有意识的运用自我约束准则避免功能的过度装饰,要根据系统基本理念及目的来权衡功能取舍。结构师必须要有超过两个以上的系统开发经验,才能确保原则上的概念和目标在详细设计中得到完整体现。
以上是《人月神话》第五章 —— 画蛇添足的主要内容
在上一章中,作者表名了结构师的工作是一种无需任何歉意的贵族专制,可是专制并不代表任性,反而需要他们认真谨慎,虚怀若谷。不仅要有自己的想法,还要善于听取他人建议,并最终做出决定。可见,能成为结构师的人并不一定是技术大牛,踏实、善于沟通、有责任心才是最重要的。
无论结构师多么优秀,他们也会犯 过度设计
的错误。从现在来看,单个软件的使用人群需要越来越大公司才能发展,结构师就需要不断的为许多不确定人群而设计软件。但是通常来说,设计通用的项目比设计专用的项目更加困难。这时就容易出现许多盲目的功能,过多的向产品添加过于边际的功能,所以我们能够看到很多 APP 都会推出一个 “极速版”,这个极速版就是为了防止某些用户因为功能增加,而放弃使用产品的情况。
数百万的用户,能够提出上千个特色功能,这些需求对于结构师的诱惑是极大的,可是有经验的结构师往往就懂得权衡整体利益。
例如他们会明确的 定义用户群
,这是获得概念完整性的一种重要方法,经常需要分析用户是谁、用户需要什么、用户认为自己需要什么、用户想要什么。
还有另一个方法就是 分析需求场景出现的频率
,之所以频率需要通过结构师人为分析而来,而不是调查而来,一方面是因为调查成本太高,另一方面通过结构师对频率进行猜测可以让产品用户群的形象更加清晰。不过当那些非常重要的决策需要取决于某些猜测时,还是会花费精力来取得更准确的估计。
总之,为了避免过度设计,一定要清晰用户群体和需求频率,哪怕是错误的也比不清晰来的强。