浮潜与水肺潜水

不同形式的分析活动贯穿于项目的整个生命周期:自上而下、自下而上以及先中间后两边。


浮潜潜水员游弋于海水表层,看鱼戏浅滩,望影掠深海。水肺潜水员可以潜过海水表层的深度;他能潜到更深的地方,在一定的区域内研究那些影子以发现鱼类、沉船残骸以及珊瑚的细节。在相同的时间内,浮潜潜水员可以游历更宽阔的水域;而水肺潜水员则在潜游深度上占据优势。成功的项目团队在项目的整个过程中会把浮潜和水肺潜水这两种方式结合起来使用,在特定的时刻明智地选择合适的方法,从而有效地利用了时间。

浮潜是一项很好的技术,项目团队可以用来弄清楚需要研究多少领域,以理解问题和达成目标。往往在项目或者子项目的起始阶段,团队通过浮潜识别出研究范围、目标、利害相干人、研究边界、已知事实以及需要进一步水肺潜水的地方。

当潜水员感觉到一些有趣的东西、陌生的事物或者更深的细节信息需要考察时,他会进行较深的水肺潜水。深度潜水的发现常常会改变浮潜阶段所设定的假设。假如我们发现了某种海产生物,而此前我们并未预料到能在这片水域找到这种生物;那么,我们就需要调查更宽更广的范围,以找出这种生物的繁衍区。

本模式的迹象之一是团队在做广度(浮潜)考察的同时,也会——而不是忽略——针对特定问题进行具体的(水肺潜水)工作。关键是团队在项目的整个过程中应用广度深度究技巧的能力。研究的广度范围识别出可能会对项目产生影响的人、组织、硬件和软件系统。在广度上知晓得越多,就能识别出高风险与高收益的领域,以及如果辅以进一步的深度研究可能大有裨益的领域。

掌握浮潜与水肺潜水技能的项目团队不会因问题域之宽而气馁。团队成员知道自己不需要对整个问题域都进行同样深度的研究。例如,如果他们决定针对问题的某一部分购买已有的解决方案,那么他们的研究只需要深入到足以验证解决方案是否适用于工作情形即可。当他们决定开发自己的解决方案,则他们需要判断这项变动要求多深的研究。他们同样知道某些更深入的研究可以推迟到以后某个更为合适的时间。面对较宽问题域的项目团队在响应变化上面更胜一筹,因为他们可以预见改动所引发的影响。他们对于哪些是自己所知道的、哪些是自己所不知道的、哪些是需要加以探索的以及哪些是可以放在一边的,都是心中有数。他们能够计划如何使用资源以获得最佳效果。

引入浮潜与水肺潜水技术的项目很可能把软件原型、模拟物与上下文建模联合在一起使用。他们也可能使用增量式的交付方法,在项目早期交付价值最高的功能。同样,他们也能够只用一页的篇幅就清晰地解释项目的范围和目标。

本模式的反例是团队要么沉迷于细节(“我们只做水肺潜水——懦弱无用的浮潜免谈”),要么惧怕细节(“我们是浮潜潜水员——换句话而言,大海深处有怪物”)。并且,当人们谈论“更高层次”和“细节”就好像它们互不相关、了无牵连的时候,也属于本模式的反例。

优秀的开发人员不会画地为牢:他们既可以浮潜,也能水肺潜水。他们依据自己需要考察的对象来选择技术。侦察的时候,浅层潜水就已足够;但如果审察,就需要更深的潜水了。

有时,仅仅用脚趾探探水就足以知道不能跳下水。

Leave a Reply

Your email address will not be published. Required fields are marked *