第5章 画蛇添足
聚沙成塔,集腋成裘
add little to little and there will be a big pile.
面对估算过高的难题,结构师有两个选择:削减设计或者建议成本更低的实现方法–挑战估算的结构。
结构师必须:
-
牢记是开发人员承担创造性和发明性的实现责任,所以结构师只能建议,而不能支配;
-
时刻准备准备这为所知道的说明建议一种实现的方法,同样准备接受其他任何能达到目标的方法
-
对上述建议保持低调和平静
-
准备放弃坚持所作的改进建议
自律——开发第二个系统所带来的后果
开发第一个项目不断产生的装饰和润色功能不断作为“下一个”项目的内容
第二个项目是设计师们所设计的最危险的系统
一种普遍的倾向是过分地设计第二个系统,向系统加很多修饰功能和想法
结构师如何避免画蛇添足——开发第二个系统所引起的后果(second-system effect)?
有意识关注那些系统的特殊危险,运用特别的自我约束准则,来避免那些功能上的修饰;根据系统基本理念及目的变更,舍弃一些功能。
项目经理如何避免画蛇添足(second-system effect)?
必须坚持至少拥有两个系统以上开发经验结构师的决定。同时,保持对特殊诱惑的警觉,他可以不断提出正确的问题,确保原则上的概念和目标在详细设计中得到完整的体现。
思考
-
不要加入不适用的功能
-
系统要有迭代和渐进的思路,不要想一次做到完美,每一次都为下一次开发做得更好积累经验
第6章 贯彻执行
他只是做在那里,嘴里说:“做这个!做那个!”当然,什么都不会发生,光说不做是没用的
He’ll sit here and he’ll say ,”Do this! DO that!” And nothing will happen.
文档化的规格说明——手册
规格说明的风格必须清晰、完整和准确。用户常常会单独提到某个定义,所以每条说明都必须重复所有的基本元素,所以所有文字都要相互一致。这往往使手册读起来枯燥无味,但是精确比生动更加重要。
绝不要携带两个时钟出海,带一个或三个。如果同时存在两种方式,则必须以一种作为标准,另一种作为辅助描述。
会议和大会
会议分成两个级别:周例会和年度大会
周例会是每周半天的会议,会议中,任何人可以提出问题和修改意见,建议书通常是书面形式,会议前分发。重点是创新,而不仅仅是结论,小组试图发现解决问题的新方法。
-
相同小组(结构师,用户和实现人员)每周交流一次,大家对项目相关的内容比较了解,不需要安排额外时间对人员进行培训。
-
上述小组十分睿智和敏锐,深刻理解所面对的问题,并且与产品密切相关。没有人是“顾问”的角色,每个人都要承担义务。
-
当问题出现时,在界线的内部和外部同时寻求解决方案。
-
正式的书面建议集中了注意力,强制了决策的制订,避免了会议草稿纪要方式的不一致。
-
清晰地授予首席结构师决策的权力,避免了妥协和拖延。
产品测试
用户是独立的监督人员,在残酷的现实使用环境中,每个细微缺陷都将无从遁形。产品-测试小组则是顾客的代理人,专门寻找缺陷。
第7章 为什么巴比伦塔为失败
据《创世纪》记载,巴比伦塔是人类继诺亚方舟之后的第二大工程壮举,但巴比伦塔同时也是第一个彻底失败的工程。为何拥有了清晰的目标,充足的人力和物力资源的项目最后仍然失败,巴比伦塔给我们的管理教训就是它们缺乏沟通和交流,以及交流的结果——组织。他们无法相互交谈,从而无法合作。当合作无法进行时,工作陷入了停顿。通过史书的字里行间,我们推测交流的缺乏导致了争辩、沮丧和群体猜忌。很快,部落开始分裂——大家选择了孤立,而不是互相争吵。
大型编程项目中的交流
因为左手不知道右手在做什么,所以进度灾难、功能不合理和系统缺陷纷纷出现。
团队如何进行相互之间的交流沟通?
-
非正式途径(电话沟通)
-
会议
-
工作手册
项目工作手册
是什么?项目工作手册不是独立的一篇文档,是对项目一系列文档进行组织的一种结构。包括目的、外部规格说明、接口说明、技术标准、内部说明和管理备忘录。
为什么?
-
保证文档结构本身是规范的
-
控制信息发布,确保信息能达到所有需要它的人
-
工作手册的实时更新是非常关键的。工作手册必须是最新的。
大型编程项目的组织结构
对于一个N个人的团队其存在的沟通渠道是N(N-1)/2条,良好的团队组织是解决交流问题的关键。
减少交流的方法是人力划分和限定职责方位。
事实上,树状组织架构是作为权力和责任的结构出现。其基本原理——管理角色的非重复性——导致了管理结构是树状的。但是交流的结构并未限制得如此严格,树状结构几乎不能用来描述交流沟通,因为交流是通过网状结构进行的。在很多工程活动领域,树状模拟结构不能很精确地用于描述一般团队、特别工作组、委员会,甚至是矩阵结构组织。
产品负责人和技术主管
三种可能存在的关系
-
产品负责人和技术主管是同一个人
-
产品负责人作为总指挥,技术主管充当其左右手(推荐)
-
技术主管作为总指挥,产品负责人充当其左右手