智力超群、足智多谋、深思熟虑、知识广度与深度兼备、追求准确性,这对任何人来说都是值得称道的品质。对架构师来说,这些素质尤其被看重。
然而,聪明(Cleverness)也包涵某些额外的隐含意义。它也暗指能够快速想出脱身之计的能力,但这种本领最终要依靠一些小技俩(gimmick)、骗局(shell game)或调包计(switcharoo)。从中学时代起,我们就应该己经领教过那些巧舌如簧的聪明家伙,他们总是靠玩文字游戏或逻辑谬论来取胜。
聪明的软件价格昂贵,不易维护,僵脆易折。所以,不要追求聪明,尽量用最浅显易懂的质朴(dumb)方法,恰如其分的进行设计。恰如其分的设计舍弃聪明。如果聪明看似必不可少,那么只能说明问题仍未正确界定。这时要去重新界定问题,直到一切再次变得浅显质朴为止。你可以使用粗粉笔画些草图,保持常规思维。别去理会什么流行风潮。只有真正睿智的架构师才懂得如何保持质朴。
小聪明会诱导我们在软件开发中使用奇技淫巧。不要依赖某个技术细节使软件跑起来。我们不是鲁布﹒戈德堡(Rube Goldberg)(译注①),不是麦吉弗(MacGyver)(译注②),无法随时用一只回形针、一支爆竹或一片口香糖就能从帽子里揪出各种复杂的设计来。先清空你的大脑,不要带着闭包、泛化及如何操控堆中的对象这些丰富的知识去解决问题。当然,有时候我们的确刚好需要这些玩意,但是这种情况往往比我们以为的要少。
越来越多的开发人员己经懂得如何实现和维护质朴的解决方案(dumb solutions)。在质朴的解决方案中,每个组件只做一件事。这些组件耗时少,易于创建,以后要改变也无须花很多时间。它们可以从当前使用的构造块(building blocks)中继承己有的优化(optimization)。这些组件会随着鲜活的设计开发过程自己涌现(emerge)出来,那时你可以感觉到它们的优雅和简洁。聪明的设计僵硬难改,其细节会对全局产生太多的牵扯,往往会一触即毁。
译注①:鲁布﹒戈德堡(全名Reuben Garrent Lucius GoldBerg),是美国著名的漫画家、雕刻家、作家、工程师、发明家、全美漫画家协会的创立者和主席。1948年因他的政治漫画而获得普利策奖。因创作鲁布﹒戈德堡机械(RubeGoldberg devices/machines)系列漫画受到大众欢迎。他的漫画系列《发明家》异想天开地表达用复杂机械完成简单任务的可笑设计,想不到因此而闻名于世。他画了许多用极其复杂的方法从事简单小事的漫画,赢得了许多读者的喜爱。比如把鸡蛋放进小碟子这种事,在戈德堡笔下大概是这样的:一个人从厨房桌子上拿起晨 ,于是牵动了一条打鸟笼的线,鸟被放出来,顺着鸟食走向一个平台。鸟从平台摔到一个水罐上,水罐翻倒,拉动扳机,使手机开火。猴子被枪声吓得把头撞在系有剃刀的杯子上,剃刀切入鸡蛋,打到鸡壳,使鸡蛋落入小碟子中。如今,“Rube Goldberg”己成为“简单事情复杂化”的代名词。
译注②:麦吉弗(MacGyver)是20世纪80年代在美国热播的冒险题材连续剧《MacGyver》(中文译名《百战天龙》)的主人公,麦吉弗是个足智多谋的人,擅长用普通生活用品作为工具帮助自己和搭挡摆脱困境,常常是一把一刀走天下。他拥有广博的知识,还有一套特立独行的“麦吉弗主义”,凭着过人的智慧,化解各种危机。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!