和坚践行笔记:总工程师思维
得到高研院第八期 深圳梧桐山班 犇犇组
一句话总结:运行一个超大项目,要能通过拆解模块化,要能通过预判结构化,还要能平衡冗余的性价比。
元思维
- 面对超大复杂项目,总工程师不能边干边学
- 把项目拆解成一个个模块,每个模块解决局部的问题
- 优先使用成熟方案
- 能分解的功能就不要重合
- 结构化的想象力,预判项目潜在的结构
- 越冗余越昂贵,所以要平衡冗余的性价比
问题 1:课程提出的这个问题,我应该如何解决?
如果给我一个超大的工程我会如何运行呢?首先我能做到肯定是拆解复杂度。通常我面对的最复杂的系统也就是一个企业的信息系统,我会从业务视角进行拆分,哪些是负责用户的,哪些是负责商品的,哪些是负责库存的,哪些是负责财务的;还会从技术视角进行拆分,哪些是负责用户交互的,哪些是负责数据缓存的,哪些是负责数据传输的,哪些是负责数据持久化的。
但很明显面对庞大的系统,仅仅会拆解是不够的,还需要能够预判潜在的结构并考虑系统的冗余性价比。
问题 2:总工程师思维,我的增量输出是什么?
在软件系统设计里面有一个非常重要的原则叫做开闭原则,讲的一个一个高内聚低耦合的系统应该面对变更关闭,面对扩展开放。
什么意思呢,比如我们的手机,可以连接一个蓝牙耳机,这就是面向扩展开放。但是如果你想改变手机的摄像头,让这个摄像头可以拍火星,很明显任何手机厂商不允许这样,这就是面向修改关闭了。
问题 3:这个解决思路我还可以怎么用?
在现实世界中一个普通人很难面对一个超大工程,但是我可以借用这个课程中的性价比思维来考虑要增加多少的冗余。比如说准备一个家庭旅行项目,计划好了一个目的地,是否需要准备多个冗余要取决于准备一个冗余的边际成本,比如冗余目的地就在原目的地旁边,那就可以多准备几个冗余方案,因为实施冗余的成本不高。但如果冗余目的地和原目的地比较远,那么最多准备一个冗余就够了。