结构师的交互准则和机制
成本
- 结构师能在设计早期从开发那得到成本
- 开发可以增高或降低估的计成本,来反映对设计的好恶
尽早交流和持续的与开发沟通能使结构师有较好的成本意识,以及使开发人员获得对设计的信心,并且不会混淆各自的责任分工。
成本过高时的处理
- 削减设计
- 跟开发建议成本更低的实现方法(挑战估算的结果)
第二个是结构师固有的主观感性反应,是在向开发人员的做事方式提出挑战
- 开发承担创造性和发明性的实现责任,结构师只能建议,而不能支配
- 为所指定的说明提供实现方法,并对改方法保持低调和平静,并接受其他任何能达到目标的方法
- 准备放弃坚持所作的改进建议
一般开发人员会反对体系结构上的修改建议,通常他是对的——当正在实现产品时, 某些特性的修改会造成意料不到的成本开销。
自律——开发第二个系统所带来的后果
- 第二个系统是设计师们所设计的最危险的系统
开发第一个系统时
,结构师倾向于精炼和简洁。知道自己对正在进行的任务不够了解,所以会谨慎仔细地工作,修饰功能和想法被小心谨慎地推迟,导致过分地设计第二个系统
着手第三、第四个系统时
,通过之前的经验得到此类系统通用特性的判断,而且系统之间的差异会帮助他识别出经验中不够通用的部分
开发第二个系统的后果(second-system effect)与纯粹的功能修饰和增强明显不同,由于技术、设计的变化,可能会对已经落后技术进行细化、精炼
- 关注系统的特殊危险,避免功能上的修饰;根据系统基本理念及目的,舍弃一些功能
- 每个小功能分配一个值: 每次改进,有一个数据指标,比如功能 x 不超 过 m 字节的内存和 n 微秒。能作为决策的向导,在物理实现期间充当指南和对所有人的警示.例如facebook的Messenger,为每个功能设置了代码大小预算,要求工程师负责遵守预算约束,作为功能接受标准的一部分(构建一个系统来计算每个功能的二进制大小权重)
项目经理如何避免画蛇添足
(second-system effect)拥有两个系统以上经验的结构师的决定。同时,保持对特殊诱惑的警觉,不断提出正确的问题,确保原则上的概念和目标在详细设计中被完整实现