程序员的思维方式:系统论

什么是系统论

系统论是研究系统的结构、特点、行为、动态、原则、规律以及系统间的联系,并对其功能进行数学描述的新兴学科。系统论的基本思想是把研究和处理的对象看作一个整体系统来对待。系统论的主要任务就是以系统为对象,从整体出发来研究系统整体和组成系统整体各要素的相互关系,从本质上说明其结构、功能、行为和动态,以把握系统整体,达到最优的目标。

如果说,还原论是拆解,那么系统论,就是组装。稍微对哲学有一点了解的人,看到我说“程序员都是还原论者”都不会觉得“还原论者都是只见局部,不见整体的”。比如科学家,一生只研究一个很小的题目,比如研究细胞内连线粒体的科学家、气象研究中只研究闪电的、粒子物理中研究夸克的学家。因为有他们研究了局部的、边缘的,才有了我们得以应用、得以造福人类的科学。

因此,合格的程序员,不一定要你有多少工作年限、多少项目经验,但你必须要有系统论的思维模式。类和对象如何划分?你传入给我什么?我怎样处理?我反馈给你什么?很熟悉吧,这不就是面向对象吗?!

这个思维模式又容易带来什么影响呢?

一:准确的描述

只要是系统,都会有bug、有误差,有可能造成严重的后果,但是你要对每个模块做到可控,出现bug也不怕的那种。但是如果你的描述遗漏了什么,传入系统的参数就无法解析甚至引起不可预见的后果。如果你添加了一些多余的描述,不仅对系统的运行是无用的,还会降低效率,引发故障。因此准确的描述,可以避免、减少重大异常问题的出现

二:真正的根源

新手程序员,兴高采烈的解决了一个BUG后,总是被老程序员灵魂拷问:“你确定你找到BUG的根源了吗?”,解决BUG,一定要从根源解决,因为软件、项目是一个系统,任何BUG或者错误的描述,都会造成连锁反应,然后造成更诡异的BUG。你修改了越多表层无关的东西,就越是破坏了系统的完整性。有还原论的程序员,再面对问题的时候,会把更多的精力投入再寻找“真正的根源”,而不是,头痛医头、脚痛医脚。

三:隔离

基于追踪根源、控制错误泛滥的思想,程序员会自觉主动的隔离问题。只有将问题隔离了,才可以尽量在接近根源处解决问题。解决根源,才可以避免错误四处扩散到处破坏,免得把问题搞得越来越严重越来越不可解决。因此,当讨论模块A的时候,他们不愿意讨论任何与模块A有没关系的BCDEFG,把模块A单独拿出来,只关注输入与输出,只有每个模块都“健康”了,整个系统才能健康

四:混沌

稍有经验的程序员都知道,只要系统不是很简单,混沌就是常态。不要以为一个项目的进度可以用简单的几个人、多少月就能做完衡量,增加人手,未必完成的快。一个人三个月能完成的,三个人一个月未必能搞定。需求阶段,如果一个程序员看不出其中的复杂性,那么他一定没有做过有一定规模的系统。要应付混沌问题,你做的是稳不是多。

五:控制论

面对复杂的系统,普通程序员会觉得一团乱麻。但是,很多时候,控制论就可以大显身手,快刀斩乱麻:再复杂归根结底也不过是一个“请求、处理、响应”的问题。把大问题拆解,小问题还原本质,最终再合并。“控制论”已经被很多学者用到了历史研究等方面,它的确是一个极为犀利的武器。

你可能感兴趣的:(程序员的思维方式:系统论)