软件研发三大思维之二:项目思维
【想成为一个优秀的软件企业,要培养自己的团队具有良好的产品思维、项目思维和工程思维。本文就产品思维、项目思维和工程思维进行讨论,帮助读者更好地理解项目管理、产品管理和工程管理之间的区别和联系。】
项目思维
产品思维关注做对产品、做出用户所需要的功能特性,而项目思维更关注项目自身的目标实现,关注项目的产出,重点关注已定义的功能或软件的交付,甚至不管交付物是否来自错误的需求。项目思维时间观念比较强,把任何活动看作有始有终的、明确的时间段过程。在这段时间内要完成特定的目标——交付物及其质量要求,需要预算、资源(人力、物力)等,但同时预算、资源、时间都是有限的,构成项目的约束条件,要做好进度、质量、成本等控制,最终实现按时、按质、按量交付软件,虽然我们希望多快好省地完成项目,但进度、质量、成本等要素之间是相互制约的,所以项目思维是一种平衡性思维,具有艺术性(平衡艺术),要在多个目标、约束条件之间达到相对最佳的平衡,如图1所示。一般情况下,保持质量不受影响,就在任务、进度和成本之间平衡,加快进度就需要增加研发人员(增大成本)或者砍掉一个功能特性(减少要做的任务)。甚至有时为了赶进度,要交付的功能特性一个也不能少,加人也不是好办法(甚至更糟糕,见《人月神话》),只好牺牲一些质量。
图1 项目管理的平衡思维
项目思维是一种计划的思维、逻辑的思维,一开始就假设,由假定到推理(估算),设法弄清楚如何去实现预期的结果,最终得出项目规划——计划。项目管理者就是通过事先周密的计划来规划各项活动,创建一个具有目标要求和工作节点的时间轴。虽然我们强调计划是一个动态调整优化的过程,但计划书毕竟是大家达成的协议,对应大型项目,有时改变一个计划也是不容易的,项目的计划性特征还是很显著的。项目思维强调计划的合理性、客观性、完整性或系统性等。项目计划体现了客观理智地分析项目的范围、任务、风险等,科学地估算工作量,按阶段划分来设定合理的进度、安排合理的资源,制定出切实可行的计划。这种项目思维是有章可循,先有计划,后按计划执行;重视度量,收集数据,用数据来说话。
项目思维也是一种风险防范思维。有一本项目管理的书《与熊共舞》,说明在项目管理中,风险无处不在:
需求会经常变更,给设计、编程、测试等活动都会带来影响,常常给进度带来风险;
软件研发工作量的估算一般也不够准确,也会给进度带来风险;
由于业务复杂性,导致研发人员对业务理解的偏差,这给产品交付的质量带来风险;
单元测试不足会给系统测试带来潜在的影响,测试覆盖率不确定,自然是产品质量潜在的、比较大的风险;
代码内部逻辑的复杂性、代码不规范,给软件后期维护带来风险。
……等等。
风险很多,无法将所有的风险置于管理之中,需要关注严重的风险,即那些发生概率比较高且一旦发生会带来较大的负面影响或损失的风险,如图2所示,即优先考虑高度风险区的风险,然后再考虑中度风险区的风险,而不用关心那些低度风险区的风险。所以,项目思维另一个特点是按优先级高低来处理问题。
图2 不同优先级的风险划分示意图
项目思维也是管理者的思维,注重沟通与管理,不仅是团队内部的沟通协作,还注重项目利益相关者(项目干系人)的沟通,管理好干系人的期望。沟通是管理的润滑剂,协调各种矛盾,提升团队士气,调动团队成员的积极性。强调过程监督和控制,不断调整测试计划,试图达到最佳状态。
概括起来,项目思维是计划的思维、平衡的思维,也是风险意识很强的思维,注重假定和推理,更注重在不同要素之间获得最佳平衡,以应对会出现的各种风险。项目思维也是管理的思维,管理各种资源,加强沟通和协调,不断推动项目的进展。
(待续)