画蛇添足(The Second-System Effect)

结构师的交互准则和机制

成本

  • 结构师能在设计早期从开发那得到成本
  • 开发可以增高或降低估的计成本,来反映对设计的好恶

尽早交流和持续的与开发沟通能使结构师有较好的成本意识,以及使开发人员获得对设计的信心,并且不会混淆各自的责任分工

成本过高时的处理
  • 削减设计
  • 跟开发建议成本更低的实现方法(挑战估算的结果)

第二个是结构师固有的主观感性反应,是在向开发人员的做事方式提出挑战

  1. 开发承担创造性和发明性的实现责任,结构师只能建议,而不能支配
  2. 为所指定的说明提供实现方法,并对改方法保持低调和平静,并接受其他任何能达到目标的方法
  3. 准备放弃坚持所作的改进建议

一般开发人员会反对体系结构上的修改建议,通常他是对的——当正在实现产品时, 某些特性的修改会造成意料不到的成本开销

自律——开发第二个系统所带来的后果

  • 第二个系统是设计师们所设计的最危险的系统

开发第一个系统时,结构师倾向于精炼和简洁。知道自己对正在进行的任务不够了解,所以会谨慎仔细地工作,修饰功能和想法被小心谨慎地推迟,导致过分地设计第二个系统

着手第三、第四个系统时,通过之前的经验得到此类系统通用特性的判断,而且系统之间的差异会帮助他识别出经验中不够通用的部分

开发第二个系统的后果(second-system effect)与纯粹的功能修饰和增强明显不同,由于技术、设计的变化,可能会对已经落后技术进行细化、精炼

  1. 关注系统的特殊危险,避免功能上的修饰;根据系统基本理念及目的,舍弃一些功能
  2. 每个小功能分配一个值: 每次改进,有一个数据指标,比如功能 x 不超 过 m 字节的内存和 n 微秒。能作为决策的向导,在物理实现期间充当指南和对所有人的警示.例如facebook的Messenger,为每个功能设置了代码大小预算,要求工程师负责遵守预算约束,作为功能接受标准的一部分(构建一个系统来计算每个功能的二进制大小权重)

项目经理如何避免画蛇添足(second-system effect)拥有两个系统以上经验的结构师的决定。同时,保持对特殊诱惑的警觉,不断提出正确的问题,确保原则上的概念和目标在详细设计中被完整实现