软件工程|何为工程师思维?( 二 )


但系统工程给出的答案是 , 解决快的问题 , 要从去机场、找停车位、安检、托运整体进行优化 。
对比上述中厂长优化流水线的事件 , 你会发现也有拥有同样规律 , 老师傅基于封闭状态节省成本的条件 , 拆解环节查漏补缺来解决根本问题 。
谷歌早期用互联网做地图并没有效仿的人 , 它也是典型软件工程思维 。
在封闭任务中用克服种种困难 , 把每条段路精确到厘米级别 , 然后用激光扫描避开路面障碍 , 以便车子开的过程中了解路况 。
说到这里 , 想下那些互联网当红的企业家们 , 无疑均为工程思维运用的高手 , 阿里的王坚、今日头条的张一鸣、美团的王兴 , 甚至华为的任正非 。 他们善于预判并在没有结构的情况下“预见结构” , 并进行通盘顶层设计 , 然后从第一性出发来改善根本要素 。
明白工程思维 , 把视角拉高也能理解众多社会问题 , 比如:
现在可以看到2035年北京地铁规划图 , 2030年碳达峰的行动方案和能源绿色低碳发展制度;这种可预测能力不正是每个普通人(企业)应该学习的吗?
工程思维三要素
结合中信出版社 , 经济管理类书籍《转向:用工程师思维解决商业难题》 , 我总结发现工程思维有三大特点:1)找到结构 , 2)约束性设计 , 3)懂得取舍 。
首先在没有结构的情况下 , 第一个特点是工程师能从初步的概念到构想 , 看到潜在的结构 。 也就是说不仅关注看得见的事物 , 也包括看不见的事物;并非空于幻想 , 而要结合实际做演绎 。
他要考虑系统中各个元素 , 怎么在逻辑、时间、顺序以及功能方面进行有效链接 , 并分析元素在哪些条件下能够起作用 , 哪些条件下不起作用 。
例如:牛顿的经典力学理论是建立在“科学观”上 。
以若干基本的公理(原理)为基本假设做推导;公理无法佐证部分通过严谨的逻辑分析得到若干定理 , 从而不断对理论体系进行完善 。 假设通过观察、实验等手段得出的证据符合结果 , 我们对验证越有信心;但若出现结果不符的地方 , 进而看看是否推导错误然后进行修补 。
此类案例有很多:
瓦特基于“经典力学”发明(改造)了蒸汽机 , 计算机科学之父艾伦·麦席森图灵1936年提出《论数字计算在决断难题中的应用》 , 多年后工程师基于此发明了计算机和智能手机 。
换言之 , 世界依赖于结构;有经验的工程师能在看似一团乱麻的事物中找到合理性的结构 , 在产品诞生前预判到成熟的全貌 。
其次 , 正如“无规则边界的自由”不叫自由 , 无约束的工程也不能成为工程一样 , 工程会遇到各种条件性的限制 , 如时间不够、资金不足等 。 那么第二个特点是“在有约束的状态下”也要更好得完成目标 , 甚至说没有约束状态 , 也要形成自驱动力 。
好比2020年黑天鹅事件(COVID-19) , 原本正常状态下两年才能完成的雷神山医院 , 从方案设计到建成交付仅用10天时间 , 被誉为“中国速度”;该工程最大的约束条件是“时间” 。
正因如此 , 反过来看约束条件是某些创造性项目的动力 , 运用到企业场景 , 假设产品开发中拿到一个开放需求 , 你很难想象出最后产品成为什么模样 。
尤其对菜鸟工程师、产品经理来说不懂得自带约束条件 , 过程中牵扯出来众多杂乱问题 , 如:UI设计太差、用户需求没搞清楚、流程有多重方案、任务太多时间不够……
这造成 , 永远开不完的会 , 解决不了的细节让自己身心疲惫;我看到很多个人在做任务时有此类现象 , 公司也同样 , 根本原因只怪“不会设计约束性条件” 。
再者第三点和取舍有关系 , 若把约束性比作走钢丝 , 那取舍便是在可行性、可能性、可期待性的交叉拔河;你也可以把它理解成“鱼和熊掌不可兼得” 。
如同:
新能源和电子行业 , 一款产品研发过程中热设计工程师要和结构、软件工程师以及PM之间相互沟通 , 多数情况下就不得不做出取舍 。 在图纸的具体位置上 , 甚至牺牲掉软件的散热部分或者压缩电池整体空间 , 以保证产品系统稳固性 。
因此 , “取舍什么”是工程师具体的能力体现 , 建立该关键不仅表现在如何设计重点 , 还要研究资源分配的问题 , 甚至将弱目标从强目标中抽丝剥茧出来 。
一方面工程师思维的框架我认为是系统思维 , 而不是单一技术或产品能力 。 另一方面他是种“形而上谓之道”的能力 , 从技术到“找到结构”的建立比单个解决问题的方法论更有普适性意义 。