模型思维基础 —— 以软件开发元模型为例

不知道你有没有想过,公共澡堂里面淋浴头之间的距离是如何被决定的?现在我们假设自己是承包澡堂项目的工程团队,尝试用最简单的方式来确定这个数值。

最直观的想法是:假设将直立的人内嵌在一个圆柱体里面,可以得到这个圆柱体的半径d。我们通过调查,获得一部分人的d值,取其平均值,设为Avg(d)。那么,Avg(d)加上一个特定距离就可以是淋浴头之间的距离。这里我们先假设这个特定距离是1米。

于是我们得出一个很简单的模型

淋浴头之间的间距 = Avg(d) + 1

这里我们利用模型对一个问题做出了决策。先不评价它的好坏,它确实针对这个问题给出了解决方案。

生活中利用模型解决问题的例子无处不在。单纯从工程上来说,所有问题都是要用模型来解决的。

对于模型的定义有很多,我在这里给出我的一家之言。模型是过往经验的集合,用于帮助针对当下问题做出决策。举个大家都比较熟悉的例子,统计学里面的线性回归就是根据很多收集到的过往的数据点建模,得出参数x和值y的线性关系。通过建立出来的模型,可以评价、选择参数x

模型的正确性

天底下没有正确的模型,所有的模型都是错的。模型只有好与坏的区别。因为过往经验的产生(例如数据)是伴随着各种各样不同的因素产生的,其中包括内在因素和外在因素两种。而在几乎所有情况下,我们是无法严格证明所有因素已经被我们所考虑了的。

例如,在刚才的淋浴头模型里面,我们是否考虑到了:

  • 人在洗澡这个特定环境下时,周围人与他的距离多远才算舒适?
  • 性别对这些数值是否有影响?
  • 年龄呢?

就算这些都被考虑了,被根据数据统计出来了的,我们还是无法严格证明我们穷举了所有的因素。另外,我们还面临着

  • 精度丢失问题
  • 样本不足问题
  • 数据真实性问题
  • ……

所以,我们是找不到正确的模型的,只能找到更好的模型。例如,考虑了性别的情况下,得出的淋浴头之间距离的模型应该会比我们最初得出来的模型好。因为它考虑了更多的因素。

自底向上的模型构建方式

刚才提到,模型是过往经验的集合。将过往经验看成点,以某种形式连接在一起,就形成了一个模型。

你应该注意到了,我提到的是以某种形式连接在一起。所以,对于同样的经验集合,我们有很多种连线的方式。即,对于同一个经验集合,我们可以有很多种建模方式。

一个模型也可以由多个已有模型建立起来。这时候,已有模型也可以看成是点,连接在一起之后,就形成了新的模型。例如,加减乘除可以看做是四个二元运算的模型,那么根据他们我们可以构建二元运算模型。

a + b, a - b, a * b, a / b 得出 a ? b

这是一种自底向上构建模型的方式。

自底向上构建模型的方式就是学习的方式,也可以论证为什么基础知识不扎实是无法理解高级知识的。

拿软件行业做例子。在软件行业里,有一种职称叫做架构师。架构师可能不做实际的编码工作,而是做系统宏观的设计。有些学生就会说,“不就是画图么,我也会”!这是不正确的。

优秀的架构师都是从基础编码做起的。他们需要有计算机专业的专业基础知识,如计算机体系结构知识、计算机网络体系结构知识、算法基本知识等。这些知识实际上就是我们所说的那些点。他们从最底层做起,一步步地向上建立模型,才能够有能力对一个大规模系统进行建模。可以说,他们的能力提升,就是一个不断建模的过程。

水平模型建立方式

对于一个现有模型A,我们可以根据它做修改,产生一个相似的兄弟模型B。

例如,除法二元运算模型的形态是被除数 / 除数 = 商 ... 余数,那么我们稍加修改就可以得出取模运算模型被除数 % 除数 = 余数,同样也是个二元运算模型。

水平模型建立方式可以说是很多互联网产品的思路。它们先根据自己的理解找到竞品的模型(先不论它是不是找了差劲的模型),然后分析出该模型的问题,对其进行微调加以改进。

例如,微信最初可以说就是由WhatsApp的模型修改而来的。虽然到现在他们已经完全不一样了。

自顶向下的模型建立方式

对于一个现有模型A,我们可以根据它做细化,产生一个新的子模型B。这时候我们称模型A是模型B的元模型(Meta Model)。与兄弟模型之间的关系不同,元模型可以描述子模型。

对于熟悉面向对象程序设计的人来说,我需要提醒一下,这里面存在的不是继承关系。继承关系的场景下,子类包含父类。但是在元模型产生的子模型并不能包含元模型,而是元模型的一部分。因此,我们可以说,是元模型细分出了子模型。

例如,二元运算模型a?b也可以细分出取模运算模型a%b。然而,这次我们得出取模运算模型的方式和之前的方式是完全不同的。

例子:软件开发元模型

软件开发流程有许多的模型。例如,瀑布流模型、增量模型、迭代模型、螺旋模型等。

这些模型有一个共同的元模型,它非常的简单:将普通人类的理解完全正确地翻译为机器的理解

软件开发元模型:将普通人类的理解完全正确地翻译为机器的理解
软件开发元模型:将普通人类的理解完全正确地翻译为机器的理解

你会发现,瀑布流模型、增量模型之类的模型,都是可以被这个模型所描述的。

同样,敏捷开发的12项原则也是可以被这个模型所描述的,因为它们都是为这个模型服务的。

创新的本质:创造模型

我对创新的描述就是创造新的模型。

对于采用自底向上法得出的模型,我们可以说是基于大量数据总结得出的创新。大数据是个最好的例子,无数企业在大数据帮助下取得的成功印证了这一点。

对于采用水平模型建立方式得出的模型,大多“性能”都不太好。因为你可能找错了原有模型存在的问题,并且你的改进可能也不高明。

对于采用自顶向下法得出的模型,在我看来就是聪明人才能做得出的事情。Facebook就是这样一家在技术上擅长使用自顶向下法来创新的公司。他们所创造出的技术产品遵循着其"Move fast and break things"的原则,总是能创造出截然不同的模型。

例如,Facebook的React.js这个产品,打破了一个最传统的软件设计理念 —— Separation of concerns(我不知道怎么翻译比较好)。看似是打破现有模型,但是实际上这个突破来自于同一个元模型 —— 模块化设计原则。当然了,每个人的理解角度可以是不一样的,关于这点,我们可以多多讨论。

总结:从今天开始利用模型思维

我曾经在Coursera上面完成过Model Thinking这门课,这门课对我的影响可以说超过任何一门学校里面教授的课程。如果大家有兴趣,可以去学习这门课。

模型可以让人更好地理解、阐述这个世界。模型让你有能力同时快速地掌握多类事物的运作规则,融会贯通之,也由此能产生创新。

你会发现,那些处于最高层的模型,其实就是哲学。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容