总工程师思维:怎样运行一个超大项目
这节课我们面对的问题是,怎么运行一个超大项目。
我们先来界定一下,我们这节课讲的超大项目,符合哪几个特征:
第一,超大规模,牵涉的人员多,领域广,没有一个人能知道和理解所有的事。
第二,唯一性,它即便跟别的项目相似,你也没有办法完全复制之前的经验。
第三,复杂性,复杂导致意外情况出现的概率大大增加,而且运行过程中一旦出现严重失控,后果不可逆,损失巨大。
从建造一个国际空间站,到做一场大型户外电视直播,或者是调整一家公司的组织架构,都可以算是我们说的超大项目。
在你的职业生涯和生活里,如果有机会,我强烈建议你要主动去组织一个超大项目,或者参与这样的项目。为什么?因为一个项目足够大,才能够集成更多的资源、发生更加复杂的分工协作,这样,项目的护城河也才更宽,你在这个过程中建立的认知和能力才格外稀缺。
请注意,超大项目是相对于你的能力和资源而言,对于一个刚毕业的大学生,操办一场公司年会也是超大项目。
所以,超大项目不见得是办奥运会这样规模的事。如果一个项目需要你调动多方资源,同时建立起多个协作系统,它对你来说,就是一个超大项目。
今天我们要拿来跟你讲的案例,是核电站。在世界上的所有工程里,核电站绝对是最大、最复杂的项目之一。要建设一个核电站,光是涉及的专业就有60多个,设计队伍会达到好几千人,设计文件就至少会产生10万份。
我们去采访了国内某核电工程设计院的总体设计工程师,余斌。因为工作的敏感性,我们不能透露他的具体工作单位。但是,他所积累的那套跟超大复杂系统打交道的宝贵经验,我们帮你挖出来了,并且把它们总结成了一套方法,在这节课里,分享给你。
这节课是由核电站总体设计工程师余斌和我一起研发的,下面就由我本人来给你讲。
核电站到底有多复杂
在一开始,我们先介绍一下核电站大致的工作原理,这不是为了做科普,而是帮你理解,核电站的复杂性到底在哪里。
简单说,核能发电,就是通过核裂变产生热能,吸收了热能的水推动汽轮机做功,然后再带动发电机发电,也就是把热能最终转化为电能。这个过程,你可以理解为,就像是一个锅炉烧水的过程。它的原理,跟火电差不多,最后都是把热能转化成电能。
但是你要注意了,核电站的复杂性,就在热能的来源是核燃料。
首先,核燃料有放射性,那么流经反应堆的水就带有放射性,不能直接进入汽轮机,所以核电站比普通电厂多了一套复杂的动力回路系统。
另外,就是最重要的安全问题。核反应堆的燃料块,每一个大概就是孩子用的橡皮那么大,圆柱形的。若干个燃料块摞在一起,大概有3、4米长,外面包裹上一层锆合金外壳。这里解释一下,锆合金是一种耐高温、耐高压、耐腐蚀性都非常好的材料,被锆合金包裹起来的这个东西,就是我们说的燃料棒。整个反应堆,就是由这样一根根的燃料棒组成。你可以把它想象成烧水壶里的热得快。
在燃料棒外面,是高温高压的循环水,这是发电的必要条件,也是安全的必要条件。无论什么情况,都不能断水,如果水位下降,燃料棒裸露,不能冷却,就会发生堆芯熔化,燃料棒就会熔化为一个不规则的球体,这个球体的体积会越来越大,到了一定程度,就没办法冷却了。反应堆外面还有一层保护,就是混凝土安全壳。但是,如果不能及时冷却,堆芯熔穿这个安全壳,就会导致严重的核泄漏事故。
说到这里,你应该能理解,核电站之所以是个超大项目,不只在于它投资高、周期长,还有一个原因,就是它对安全性的要求非常高。做这样的项目,你就不能想着一边干,一边学,在运行中发现问题,再去解决问题。而是在设计阶段就尽可能把各种因素考虑进去,这就导致这个系统必然非常复杂。
人们可以原谅科学家搞不出发明,但无法原谅工程师错判了未来。
模块化
好,我们已经知道了核电站大概是怎么一回事了。接下来,我们先来讨论一个问题:这么大一个核电站,究竟是怎么造出来的?
一个核电站,包括400多个系统,光是阀门,就超过1万个,管道长度超过6万米,所有的零部件来自几千家供应商。
其实,不只是核电站,几乎所有工程领域都是这样。比如说,能装下500名乘客的空客A380,由超过400万个独立零部件组成,这些零件在30个国家的1500家公司生产。
再拿我们熟悉的手机来说,零件数量没那么多,但复杂度一点都不低。如果问一个手机制造商,一台手机是怎么制造出来的?他能告诉你的,可能只是几个模块怎么拼接在一起。但如果你要问他,华为手机芯片集成了69亿颗晶体管,技术是怎么实现的?他一定会告诉你,这个问题啊,你只能去问芯片设计工程师。
这也就是说,因为工程项目的庞大,每一个参与者,只能生存在某个模块的层面上,只能掌握整个项目其中一个部分的内在规律。没有谁能吃透整个项目所有的细节。
其实, 当一个项目大到一定程度,你要想把它做成,靠的一定是模块化的工作方法,把项目拆成一个个模块,分而治之,利用人类的分工协作网络来解决每个局部任务,直到完成整个项目。
那么,到底什么才能叫“模块”呢?你可以把它理解成“有成熟的解决方案的局部”。在工程领域,一个技术方案如果被验证有效,它就成为了一个模块。
我们其实可以把建造一个核电站这样的大项目,简单地理解成为搭积木,底层的标准工业产品、成熟解决方案,就是这些积木。一个核电总体设计工程师,他的工作,不是去研发和创造积木,而是去找到合适的积木,然后把这些积木拼接起来,实现核电站需要的功能。
对核电站这种对安全性要求很高的项目来说,这种模块化的工作方式,还衍生出来两条心法:
第一个心法,是能用成熟方案就优先采用成熟方案。
要干成一个超大规模项目,其中最核心的模块,要尽可能采用已经定型的技术方案。比如,核电站里面涉及到核安全的模块,就尽量采用成熟方案,因为试错的成本实在太高了,而且模块之间牵一发而动全身,一个模块变了,还会影响其他模块。
注意,工程师并不是反对创新,如果有了新的设计思路,而且经过充分的安全计算和有效验证,当然可以采用。另外,创新可以先从辅助系统展开,比如现在的核电站在设计阶段,都在考虑引入工业传感器,来监控设备的运行状态,这对整个系统的效率提升非常有价值,而风险却很低。
第二个心法,是能分解的功能就不要重合。
很多产品,会追求在一个模块上集成更多的功能,比如手机外壳,既要防水性能好,还要保证信号好。但这是民用产品,它追求的是用户体验的完美。而核电站就要反其道而行之,能拆开的功能就拆开,把有难度的问题拆分成多个容易处理的问题,目的就是为了充分利用现有的成熟技术。
举个例子,反应堆外面的混凝土安全壳。它的功能是主要为了防止内部核废料泄露。后来有了新的安全要求,安全壳还要防止大型物体从外部的撞击。这就带来一个难题,原来的设计主要应对内部压力,新设计还要应对外部伤害,这两个功能需要承受的力的方向是相反的,要设计出一个安全壳,同时完成两个功能,难度很大,成本也很高。
那么工程师的解决办法,就是干脆把功能分解,做两个壳就妥了:内层壳负责防止气体泄露,把气密性做好。外层壳负责防撞,把坚固性做好。这样的做法,解决了技术上暂时无法突破的难题,还降低了成本。
这种利用工程知识库中的现有的功能组件,尽快搭建出合理可行的解决方案的能力,可以说是总工程师的核心能力。
所以,当你面对一个超大项目的操作,可以先去考虑一下,这里面有哪些局部,是已经有成熟解决方案的。 一个解决方案如果被验证有效,它就成为了一个模块,你可以直接把它嵌入到你的整体方案中,它可以帮你简化设计过程,降低项目的整体风险。
面对未知,如何解决问题
模块化是个很好的方法,但是,还不能解决所有问题。在核电站这样的项目中,还有一个难题,就是不可知性。
比如,有些场景你不能现实模拟。你总不能说:我们来搞一次真实的核燃料泄露,来验证一下我们应对灾害的手段是不是奏效吧。
再比如,有些复杂你无法判断。复杂系统是非线性的,像是一张网。系统的各个部分相互作用的方式很隐蔽,哪些地方会出错,出错了会导致什么后果,都不可能准确预测。在核电站控制室,有5000多个故障报警灯,一个灯亮了,背后的故障原因都很难一下子判定,要是多个灯同时报警,出现叠加故障,这个数量级就会超出任何人的识别能力。
还有更麻烦的情况,可以称之为“有些原理你不知道”。
比如,核电工程师一直都要面临一个难题:湍流。就是“水流湍急”的那两个字,著名物理学家费曼,把湍流形容为“物理学中最重要的未解问题”。一座核电站里,有几万米长的管道,液体的流速、在管道拐弯地方形成的漩涡,这些参数在每一座核电站都不一样。湍流跟能量转换的效率,还有反应堆的冷却效果,都有关系。但这么重要的参数,现在还没有确定的数学模型来精确计算。
但是,就算无法弄清事物的内在发生机制,总工程师依然有一套方法去处理问题,实现目标。这种能力,你可以把它称之为 结构化的想象力 。
这种能力,有点类似建筑设计师,要把那么多材料、图形、色彩,在头脑中组合出一个模型,还要充分考虑到跟周围环境相协调。这种能力还有点像雕塑家,比如米开朗基罗,他面对一块大理石,就能想象出来最终作品的样子,接下来的事情,只是一锤锤凿掉那些不需要的部分。
这是一种艺术能力,看似无法表述,但是也不是无迹可寻。举个小例子,你就可以隐约地窥见结构化想象力在核电工程里面的用法。
前面说过核电厂有5000多个故障报警灯,可能会出现的单一和叠加报警,有成千上万种,再优秀的工程师,也不可能了解所有的原因。但是,他可以依靠对整体结构的理解,盯住主要矛盾,让处理问题的复杂度指数级下降。
具体的方法,就是先别想着向后找原因,而是向前看,先处理出现的症状。比如,几个灯同时亮了,提示管道的温度和压力下降,究竟为什么?暂时不知道。但是,它导致的后果,是能够预料的,这种情况下,最优先的处理方案可能是往锅炉补水,确保安全运行不出问题。至于现象背后的原因,这是一个漫长的链条,可以留在以后去探寻。
这种方法,在很多工作中都能用得上。比如你组织一个年会,结果有两个人早上排练没到,你是去追究他们为啥没到呢?还是先拉两个人顶上再说?自然是先找人顶上。前提是你能预料到这类事情可能发生,提前有准备。
结构化的想象力,是运行超大项目最重要的方法之一。在面对各种不确定的情况下,确保项目正常运行,需要我们建立对复杂系统整体的理解,也需要我们有总工程师一样丰富的实践经验。
越复杂,越脆弱
好,前面我们说的是怎么面对不确定性,但是每个超大项目,都会有一个不能被击穿的底线,我们很难承受在底线这个问题上面临不确定性带来的风险。比如,奥运会开幕式,不能延期;一个品牌的扩张,不能耗尽企业的最后一点现金;核电站的底线,就是不能发生核泄漏事故。
在工程上,保证安全一个通用的办法,就是留出冗余。比如电梯标出最大承载1500公斤,那么它的安全极限肯定是要高于这个数字。
核电站当然也在使用留出冗余的方法。比如,反应堆保护系统里有一个温度压力测量表,这个表显示的数值,跟安全非常有关系。如果温度压力异常,系统可能会停止反应堆工作,停止发电。
好,这么重要,如果只有一块表,没有备份肯定不行。那么两块呢?也不行,为什么?你想,如果一块表读数异常,而另一块正常,你听谁的呢?工程师设计出的冗余是四块。那四块表同时发生故障的概率就很低。如果出现报警信号,采用四取二的原则——四个里面有两个读数异常,就要采取措施。
但是,你很可能已经发现这里面有个矛盾。建核电站的目的是发电,这是一个经济目标,如果我们让核电站的安全系统,都加上多重冗余,整个投资会增加数十倍,那么还有必要建核电站吗?所以,靠不断增加冗余来解决安全问题,似乎不是个好办法。
还有一点,不是很容易想到:即使不考虑经济问题,冗余做得越多,意味着这个系统越复杂,这就会带来新的不确定性,系统就会变得越脆弱,安全隐患就越多。
这可不是我们的无端猜测,法国就曾经设计了一个超级冗余的核反应堆方案,配置了4个安全系统。但这样一来,整体造价就高了。为了平衡预算,它就提高了的单机功率,增大了堆芯体积,但是这样一来,万一发生堆芯熔毁,就意味着更大的危险。你看,为了安全加冗余,但最后冗余带来了新的安全问题,抵消掉了安全系统的作用。所以,这个方案出来很多年,很难卖出去。
这个时候,杰出的工程师,拿出了非常开脑洞的方案。既然加冗余带来新问题,那么就反其道而行之, 简化系统的复杂性 。
美国一家公司近年来提出了一个全新的核电站施工方案,业内叫AP1000,这个方案就体现了这种思想,非常精彩。
前面说过,核电站最怕断水,冷却水要是漏了,堆芯就可能裸露熔毁。为了应对这一情况,多数核电站都使用了备用水泵,而且是双重备份,一旦出现意外,就及时把冷却水灌注进去。但是这里面有一个bug,就是水泵本身是需要电力的,设想一下,如果发生地震海啸这样的严重事故,导致电力全部中断,那备用水泵就不起作用了。
AP1000采用的方法是,我不要电力了行不行?不要备份的水泵行不行?它的设计方案,是把两个大水箱放在反应堆上面,一旦出现意外,水箱的气动阀门打开,水自然而然由于重力作用流下来,而那个气动阀门,只需要普通电池提供电力就可以。你看,这个解决方案的精妙,就在于把安全交给了基础的物理规律,这就比任何系统都可靠。
所以,当你有机会去运行一个超大项目,你同样应该考虑的是,它本来就必然这么复杂吗?有没有可能对这个超大项目的运作机制本身去做改造、去做减法?有没有可能依托现有的资源、依托最基础可靠的方法,寻找解决方案?
总结
好,关于怎么运行一个超大项目,我们通过核电站的例子,分享了总工程师处理问题的三种能力,为了方便你记忆,我们把它概括为三个力:
第一,拆解力,尽可能使用成熟的模块来解决复杂系统的问题,把期望变成可行。
第二,想象力,面对不确定性,能预判出项目潜在的结构,进而找到解决问题的方案。
第三,化约力,一味地加冗余,可能会带来新的复杂性,尝试去简化复杂系统,更基础的原理,也可能是更有效的方法。
总工程师思维的内容,远远不止上面讲到的这些。在你的行业里,有哪些运行超大项目的经验和方法?欢迎你留言与我们分享。
答疑
得到高研院第一期的马宇在学习这节课后,提出了一个问题:
本课主要描述了核电站设计阶段的工作,并总结相关经验,得到结论。课程标题为:“总工程师:怎么运行一个超大项目”,是否改为:“总设计师:怎么设计一个超复杂产品”更加准确。
教研长鹿宇明的回复是:
您提的有道理,参与课件设计的核电专家,确实是总体设计工程师,我们在讨论这个题目的时候,也确实想过“设计”是否更合适。最后,我们还是觉得“运行”好一些,主要有两个理由:
1.这一讲主要是构建总工程师思维,设计是其中一个思考界面,但“运行”能涵盖更多元的思考维度,我们强调的是在“设计”阶段,设计工程师要有俯瞰项目整体运行的“上帝视角”;
2.“设计”一词,可能会引起另一个想象——这一课要讲跟创意有关的事,但其实这不是我们的初衷,核电设计一般不会天马行空,设计师的立足点,要着眼于未来系统的安全运行、稳定的价值输出。
所以,可能“运行”也不是一个完美的选择,但相较于“设计”,我们认为它更贴合要达到的目标。我们也再想想这个事情,如果有更合适的方案,会考虑迭代。