3.2 决策的组织上下文
合适的软件开发实践一定会受到产品本身和开发组织特点的影响,正如 Barry Boehm 和 Richard Turner 在“Balancing Agility and Discipline: A Guide for the Perplexed”里提到,5个方面的因素会在很大程度上影响开发的组织模型和流程模型。
●关键性——缺陷带来的影响。有的产品缺陷可能会带来巨额的金钱损失,甚至对生命安全造成影响,而另一些产品的缺陷只是会导致一些人使用上的困扰,浪费一些时间。通常关键性高的产品,对开发活动的严谨周密要求更高,质量验证方面的设计和规范更加严格。
●参与人员的水平——团队中仅仅具备基本技术技能、欠缺技术决策能力人员的比例也会影响责任在团队成员间的分布,从而影响团队的协作过程模式。
●动态性——需求的变化频率和程度。对于在剧烈变化环境中的产品,比如大多数互联网产品,把过多精力放在前期的计划和设计上,很有可能只是浪费;而过于依赖持续重构,极力减少前期设计的投入,对于处在相当稳定的环境中产品,比如一个银行ATM系统,可能会带来过多没意义的返工。
●文化——团队有对混乱和秩序的偏好。在有的组织文化中,人们在被赋予相当的自由度时,才能发挥最大的效能;而另一些文化当中,人们需要清晰的角色和相应流程和政策才能有效工作。
●规模——产品和项目规模。参与人员的数量,干系人来源(不同的部门、公司)和分布(是否在相同的办公地点、地区、国家)的复杂度,都会影响项目所需的协作沟通的方式、频率、工具和媒介(文档)。
为了能够区分不同类型的公司的开发活动,作为Big Bank的对比,我们在这里开始引入另一个场景例子——Big Teleco。Big Teleco是一家通信设备制造商,在全球拥有多个大型研发中心,开发软件密集的各种电信和企业通信系统。下面我们通过一个简化了的模型从5个维度对比一下这两个开发组织,如图3-2所示。
图3-2 Big Bank和Big Teleco的产品开发组织对比
Big Bank开发组织特点如下。
•Big Bank面临的是快速变化的市场环境,而且Big Bank正在快速扩张其新业务领域,每一次兼并、每一次业务创新、每一次业务整舍都会对项目组舍的优先级产生影响。
•开发团队小到3~5个人,大到20~30人。
•当前这个项目的团队有小部分是本公司熟悉业务的开发人员,大多数来自一个以技术能力著称的定制软件开发公司,每个人都拥有多年的开发经验。
•在团队层面上,人员主要来自那个长期使用敏捷的开发厂商,以强调协作、授权、探寻式的领导风格为主。
•涉及千万元以上的资金投入和巨大潜力的新兴市场。
Big Teleco开发组织特点如下。
•Big Teleco产品的生命周期一般都比较长(有的通讯产品的生命周期长达10年以上),其产品主要部署在其生产的硬件设备之上。在生命周期里,代码库会被无数人和团队更改,在陈旧代码上的变更痛苦而昂贵,并可能引入显著的质量风险。Big Teleco是一个非常强调前期设计的公司。根据统计,每月出现的需求变更并不是非常剧烈,虽然决策委员会每两周有个例会,就变更做出决策,不过一般的市场的反馈要1~2个月才能到达产品开发组织,当然紧急需求和缺陷修复除外。跟大多数商业软件开发组织相比,Big Teleco的产品升级频率要低得多。
•Big Teleco的一个设备产品团队包含开发和测试可能有50到200人不等,通常被分为多个10人左右的子团队。
•每个子团队一般都有2~3个有相当经验(3~5年)的骨干开发人员,其他人员相对年轻,一般有1~2年经验不等。
•面向结果,强调执行力的强势文化。鼓励革新,对混乱有一定的容忍度,公司刚经过快速的增长阶段,中层管理人员都比较年轻,基本以命令控制式的管理风格为主。
•涉及十亿美金级别舍约和百亿美金以上级别市场份额的争夺。