如何做好项目管理是个老话题,达到把人类送往月球,火星,小到搬一次家,做一道菜,都可以作为一个项目来管理。东方的思维方式和西方的思维方式,往往还是有很大不同。东方善于从大局,整体战略考虑,西方则更善于用逻辑严谨的架构去分析和处理事物。这点儿在餐饮业我们有直观的体会。我们的大厨做菜,一般都会用很多模糊的词汇,比如少量,一些,一匙等。而西餐馆像麦当劳,炸个薯条都会有很细致的流程,会规定薯条的长短粗细,油的温度,时间的长短。我们很难说,麦当劳的薯条会比爆炒腰花好吃,但是它可以通过流程化的管理,快速的把餐厅开到全球,复制中餐馆却比较难。
我们今天不是要做菜,而是要看一下要把人类送往火星的NASA,它的研发流程,有哪些重要的环节,然后在自己的工作中是否有些可借鉴之处。内容来源于NASA官方的系统工程师手册,它从系统工程师的角度,让我们了解如何应对像登陆火星这种挑战。
系统工程师的目标和基本职能
系统工程,是指一种跨多学科的方法论,它涵盖系统的设计,实现,管理,运行以及退役。它是一门整体的、综合的学科,它需要从很多不同工程师的角度进行评估,包括结构工程师、电气工程师、机械设计师、动力工程师、人因工程师(human factors engineers)等等。有时候这些因素是彼此冲突的,这就需要做出最优的决策。所以一些工程师眼中的铁律,放到系统级就不一定是正确的。
管理一个项目通常涉及到三个大的方面:技术方面;项目团队;成本和进度。系统工程师需要关注的是,技术因素对做最终决策的影响,并向项目经理做出反馈。系统工程师不仅要保证把设计做好(get the design right),更重要的是做正确的设计(get the right design),以达到客户的期望。总之,系统工程师要掌握平衡的艺术,在复杂的系统中对组织,成本,技术做出权衡取舍。
大的项目会有整个专职的项目经理,和好几个系统工程师,而对于小公式小项目来说,一个人往往身兼数职,既是项目经理,又是系统工程师,甚至又是工程师,还是老板。即使是一人身兼数职位,我们仍然能从大项目的管理流程借鉴很多思想。
图片来源:NASA Systems Engineering Handbook
流程
主要分为三大块:系统设计(system design), 产品实现(product realization)和技术管理(technical management).
如上图所示,整个系统工程(Systems Engineering)被划分为17个流程,其中1至9是需要按顺序进行的流程,10至17是贯穿整个产品生命周期的。
左边从上到下是从客户需求,一步一步分解到设计方案,叫系统设计流程。最后要分解到什么程度呢?就是组成系统的每个部件,要么自己设计,要么有可以重用的设计,要么可以从外面买到。再看右边由下至上,从产品实现,集成,到交付用户,叫产品实现流程;中间是计划,控制,评估,决策等管理流程。
项目阶段的划分和要点摘抄
项目按照生命周期来说,划分为3个大阶段,7个小阶段:
预研阶段
Prep-Phase A, Concept Studies
概念研究。在此阶段,广泛研究可行的方案,以及这些方案的可行性,起草系统级的项目需求,大致评估性能,成本,完成时间。找出技术关键点。最后要有仿真结果,分析报告,或实物模型等输出。
规划阶段
Phase A, Concept and Technology Development
概念和技术设计。要确定新系统的可行性,明确系统级的需求,需要研究哪些技术,以及项目管理计划。同样需要搞出点儿仿真结果啊,模型啊,这些东西。还有就是确定商业方面需要做的研究。
Phase B Preliminary Design and Technology Completion
初步方案设计和技术实现。项目细化到足够满足需求。确定组成系统的每一个产品的需求,并完成它们的初步方案设计。做出实体模型或原型机,产品的定义,各部分之间的接口文档。商业研究要有结果。
实现阶段
Phase C Final Design and Fabrication
最终设计和生产。完成每一个子系统的设计,包括硬件,软件。
Phase D System Assembly, Integration and Test, Launch
系统安装,集成测试,发布。在此阶段每一个系统部件都需要完成测试,完成软硬件的集成,确定系统能满足需求并准备交给用户使用。
Phase E Operations and Sustainment
系统运行和维护。在运行期间确定系统能满足最初的需求,并提供支持。实施运行计划。
Phase F Closeout
系统结束。实施分解报废计划,分析运行期间的数据,以及返回的样本。
在这每一个阶段,可以使用前面17个流程中的哪些,有详细的表格,我们不在此一一列出,有兴趣的同学可以自己下载学习。
随后举了个例子,具体如何使用流程。比如在预研阶段,除了做原型定义,还有一个很重要的就是确定运行场景,尽可能包括各种可能性,包括最坏情况。然后在这些场景里模拟原型定义的是否科学合理,是否忘掉了某些东西,各部分需求之间是否有冲突。这些非常重要,因为随着项目真正展开,系统会变得越来越复杂,难以理解和发现问题。在之后的每一个阶段也是要不断严格的依照流程,每一步完成之后再开启下一阶段。
什么是设计验证和设计确认
设计验证,通过性能测试,分析,检查或演示等手段,提供产品已经达到了产品规范的要求。
设计确认,通过实际或模拟场景下的测试,分析,检查或演示等手段,证明产品可以完成用户需求。
这里需要注意的是,NASA认为设计确认可以在产品开发的每一个阶段都可以进行,比如用模型来做,而不是像通常大家认为的,只有在设计验证之后,只有用实际产品才能做。而且越早进行,代价越小,这感觉还是挺有道理的。
要马儿跑,还要少吃草
系统工程师的目标,是要用最少的花费,去建造一个能安全可靠完成任务的系统。有效又好用和少花钱往往又是矛盾的,所以要做好平衡。
尽早发现问题
成本会随着项目的推进指数型上升,这个很容易理解。关键是在此过程中,要动用各种验证手段去尽早地发现问题。在项目后期再提出设计哪里要改动,代价是巨大的。
对系统工程师的能力要求
与之前提到的17项流程对应,对系统工程师也有17个方面的非常详细的能力要求。就拿其中一项技术规划(Technical Planning)来说,要做的事情有:做出计划并管理每一个技术流程;技术路线规划和储备,确定技术报告该怎么写;什么情况下可以开启下一个流程,如何做技术评估;识别出关键技术问题;不同领域之间如何合作;数据如何管理;技术风险管理;有哪些工具和方法可以用;外部技术资源如何获得;获得利益相关方的认可;下达工作指示以推进项目。
要求非常细,总共有上百项要求。根据能力不同,分为4个等级:技术员工,团队领导者,项目系统工程师,总工程师。看来NASA不好混啊!
未完待续。。。
参考资料:
NASA Systems Engineering Handbook.
NASA Systems Engineering Processes and Requirements.