精益软件度量——实践者的观察与思考
上QQ阅读APP看书,第一时间看更新

2.1 业务目标

随着软件渗透进商业和消费环境的方方面面、各个角落,对于很多企业,不管是软件密集的产品类企业,还是仰赖IT组织支撑其日常业务运营的商业企业,不管软件是由企业内部的开发组织完成,还是由外部协作的开发方承担,软件的交付能力成为支撑企业的业务目标,推动业务创新,甚至成为形成业务模式差异化竞争优势的重要力量。

从内部来讲,每个开发组织自身的资源优势、组织的历史和文化、组织的竞争策略都对公司的业务目标和目标的优先级产生影响。很多公司把软件开发组织当成是成本中心,因此,以提高资源利用率作为优先原则的典型行为模式会体现在决策、度量的方方面面;不过最近几年,IT手段成为很多行业里实现颠覆性业务创新的幕后推手,比竞争对手更快更准确地实验和部署新业务模式成为企业对软件开发组织更迫切的要求。以零售业为例,数字渠道,包括网站、移动平台,还有部署在实体店和其他场所的触屏,以及试穿试戴等互动电子接触点(touch point)为商家提供了更多顾客体验的设计组合。有效整合这些数字渠道、电子接触点、实体设施,以及财务、物流、决策支持等后台系统,也成为企业竞争优势的重要基础。

从外部来讲,客户对每一类不同的产品有不同的要求,由此也带来了对相应产品开发组织不同的期望。国防相关,电信级,或是涉及人身安全的关键系统对产品可靠性有很高的需求,这也是为什么相关的软件开发组织成为最早推动和拥抱CMMi的力量。而企业IT、互联网系统,抑或是移动设备上产品,要求对用户、对市场进行快速响应,这也是我们经常在当前敏捷社区里看到这些开发组织身影的原因。

业务战略的制定超出了本书讨论的范围,不过我们仍然可以通过一个假想的场景来模拟从业务目标到决策到指标体系设计的整个过程。

一家金融服务企业,我们就称其为Big Bank,正在推出一项P2P(个人对个人小额贷款)在线金融业务。在这个时候,这还算是一个创新业务,因为虽然在市场上己经有一些小型的独立互联网平台开始提供这项业务,但暂时还没有综合性金融服务机构介入这个市场。

我们可以把软件产品的开发分成几个大的阶段:业务策略、项目定义、项目执行、维护支持。

从图2-2所示中可以看到,一个软件产品或项目通常都起始于业务策略的分析。除了初创公司和互联网公司,在其他大多数的软件开发组织里,项目管理人员和工程师们在这个时候都还没有介入,这个阶段只是管理层,作为组织的代表,对业务策略做出决策。

图2-2 软件产品开发周期

大多数情况下,管理层这时所能获得的信息,实在是不足以进行可靠的分析并做出所谓理性的决策。他们不得不躲在一个小黑屋子里,根据可怜有限的信息,更多是根据自己的经验,做出对未来的判断,拍拍脑袋做出决策。

Big Bank的CIO,CTO和其他的O们,当然还有各种的总监、VP和主管们,他们努力获得各方面的数据,尝试着充分考虑着以下內容。

(1)政策和市场需求。

•什么是政策允许的,什么是不允许的?未来政策发生变化的概率有多大?我们可以争取到哪些政策?

•哪些人,在什么情况下需要这项产品?对Big Bank来讲,是购买大件商品的个人,还是短期流动资金匱乏的小老板?

(2)竞争对手。

•市场上类似产品和竞争对手的运营模式和竞争力如何,比如早已建成了的P2P网站?

•相对其他现有和可能的竞争对手,我们独特的资源优势是什么?是否能形成足够的竞争壁垒?

•潜在的新进入者是谁?是其他银行等金融机构还是拥有海量用户的大型互联网公司?他们会怎么参与竞争?

•是否能够比竞争对手早一步地满足某个细分市场或某类客户的需要?

•整舍公司其他业务和资源是否能够在这项新的业务领域里创造出独特的竞争优势,比如跟保险业务,理财业务能产生什么协同效应?

(3)资本投入和运营成本。

•在这次赌注当中的投入是多少?需要投资建立什么规模的开发组织才能够在生产力上超越对手?多少人?软硬件投入?产品后期的安装、服务、维护的难度和周期?

•这样的组织的运营成本是多少?

•跟竞争对手相比是高还是低?

•为了在这次赌注中有可能坚持到胜利的那一天,每天、每月、每年要追加多少投入?(运营成本)

(4)ROI。

•干这件事的3年投入产出到底是多少?

•对集团公司产生的整舍效果有什么影响?

从上面的诉求里,我们可以提取出他们在软件度量角度的诉求,首先是相对竞争对手的响应速度

●是不是能在产品特性上很快赶上并超越己经在市场上的那些P2P平台?

●如果有其他大型金融机构也来介入,能不能比他们更快地把产品和新的特性推向市场?

●如果政策发生变化,是否能及时根据政策调整产品开发策略,并减少浪费?

然后是交付效率的比较:

●如果投入相同的规模,交付周期和交付速率是否在业界领先?

最后是项目的投入产出-ROI

●交付的产品和特性是否准确命中市场?是否得到了产品生命周期前阶段的溢价,从而得到了更高的利润率?

●产品的质量和设计相对竞争对手和己有产品是否体现了优势,产生了足够的用户粘性,提升了公司品牌?

●最终是否最大限度地夺取了市场份额?

上述问题的分析结果其实就是业务部门期望的跟开发组织相关的业务目标。

组织对产品开发寄托了各种各样的目标。这些目标一旦被建立起来,就会被传递和分解到组织的各个部分和层面,对这些地方的计划、决策,甚至问题的解决方式都会产生影响,因此对于开发的每个版本或阶段,都需要在组织层面就这些目标的优先级有一个明确的共识。虽然不一定要对每个目标分出个1、2、3,但一个组织一定要清楚,在现阶段到底哪些目标是紧急不重要的,哪些是重要不紧急的。