学习的逻辑: 知识经济学

2023-11-12

来自http://liguanglei.name/blogs/2012/11/28/the-logic-of-learning/

1.怎么证明学会了 ?

2.你的身价是由你表现出来的知识决定的, 不是你掌握的知识决定的



万物有始皆有终. 我们的逻辑链条起源于为什么要持续学习, 然后是学习什么, 怎么证明学到了, 最后是为什么只学一门不够

为什么要持续学习 — 知识通胀时代来临

大家大部分都是在职的, 平时应该会存钱. 存钱最害怕什么? 对, 通货膨胀. 一旦央行开动印钞机, 并大量放贷制造流动性, 我们辛苦多年的积蓄就会被迅速稀释甚至蒸发. 然而现在有一样东西, 正以前所未有的速度被制造出来, 这就是知识. 并且其流动性在互联网的推动下简直泛滥成灾. 换句话讲, 知识正在通货膨胀. 过去各行各业积攒的各种知识, 各种独门秘笈, 都大白于天下. 过去少数人才能接受大学教育, 现在哈佛,斯坦福的公开课唾手可得. 前几天微博上刚流传一哥们一年时间自学33们麻省理工课程. 在这种情况下, 我们现在的知识积累, 知识储备, 会被迅速稀释, 我们的身价也会迅速贬职. 那怎么办? 拿存钱来说, 一方面我们要投资保值或增值, 一方面也要不断赚钱. 放到知识上是一样的. 我们要不断学习, 而我们可以投资的, 只有我们的时间. 那么问题来了, 就像要考虑是投资股票, 黄金, 还是房地产一样, 我们的时间应该投资在哪些知识上?

学习什么 — 知识漏斗

回答这个问题, 牵扯到一个理论, 叫知识漏斗. 我们可以将知识分为三个层次,代表了我们处理知识的三个阶段:mystery, heuristic和algorithm。以下斜体内容摘自徐昊博客:

“mystery的知识属于未知领域,我们甚至无法了解这个问题本身是什么问题。典型的问题比如“如何成得到最好的设计”,“怎么获得美满的婚姻”,甚至一些看上去不那么难回答的问题实际上也属于这类问题,比如“下一个客户从哪来”,“如何让业务增长十倍”。这类问题中的每个问题都是独特的问题,就好像并不是所有企业都能做大十倍,而且做大过程中的方式也不一定相同。再比如对于某个项目有效的手法,对别的项目不一定适用,都是一个道理,有时候又被称作艺术。

algorithm的知识属于完全已知领域,在这个领域没有复杂问题,所有的复杂性都被解决掉了。无论在何种环境下,按照algorithm来作,总能得到相同或者是可预期的结果。这类知识往往是像“如何列出磁盘目录”,“房贷手续是怎样的”,“在东直门哪里能买到钱包”之类的问题。对于这类知识,你知道就是知道,不知道就是不知道。较容易通过训练获得,其终极形式就是写成程序,完全不用人来作。

从mystery转向algorithm就需要heuristic,我如何把一个未知的问题转化为已知的algorithm,或者我是能够去除掉mystery中的复杂性用简单的algorithm来解决它。或是说,你能否把艺术工程化或者流程化,去掉其中的文艺范。推理,发散,类比等等的都是这个阶段需要的技能。大凡革命性的飞跃,都源自把mystery变成algorithm”

而这三种知识的学习方式和价值也是不一样的. Algorithm最容易学习, 也最廉价, 因为其最容易传播和复制. 而最有价值的, 是为某个mystery寻找的heuristic方法. 一个例子是Martin Fowler的重构. 在此之前, 如何改善既有代码的设计, 并没有什么众所周知的方法. 而Martin找到了一种启发式的方法, 就是寻找坏味道, 然后应用一系列对应的重构手法. 这些重构手法甚至将另外一个mystery “如何安全的修改代码” 给算法化了. Martin是我们学习的榜样.

根据精益理论, 用问题来拉动, 会避免无意的浪费. 卡尔波普尔也说, 科学研究应该从问题而不是从资料开始. 我的同事米高陈也说停止学习, 开始创造. 所有这些都一个意思: 你应该找到一个自己感兴趣的问题, 然后解决它, 在解决的过程中学习.

好, 我们知道了该学什么, 那么第三个问题随之而来, 我们如何知道我们学会了?

怎么证明学会了 — Validated Learning, 知行合一

我们无论是投资股票, 黄金, 房地产还是其它什么, 我们总要知道是赚了还是赔了. 我们的时间投资于学习也一样. 我这两个小时花进去了, 我怎么知道我花的值不值呢? 我们可以把我们前面讲的TDD的思路用在这里. 就像用测试保证产品代码符合预期一样, 我们也需要一种方法来验证我们的投资是有效的, 这被称之为Validated Learning.

真正的Validated Learning包括拿你学到的知识真的去做事来验证. 我们先不走那么远, 就简单一点, 证明你学会了即可. 我们常用的有效的方法就是分享, 或者教给另外一个人. 你如果能把你所学到的清晰的讲述给你的同学, 或者写成博客, 或者做成培训教程, 就可以有效的检验你的掌握程度. 大家可以想想, 有多少次, 你向别人讲个东西, 别人一问深入了, 你就卡壳了?

所以你应该做作业, 并在课堂上分享. 即使老师不布置作业, 你也应该自己考一下自己. 大家都经历过无数的考试了, 我们可能觉得考试是痛苦的, 想逃避. 可是我们想象一种极端的情况, 如果从小学到高中, 我们一次试都不考, 只在高考时考一次, 你愿意吗? 这风险得多大啊? 所以考试是一种validated learning的机制, 是帮助我们的, 暴露我们知识缺陷的, 我们应该欢迎. 即使老师不考我们, 我们也应该想法自己考自己.

说到分享, 还有另外一个理由来证明你为什么应该分享. 大家都是知识工作者, 大家觉得自己的身价是由什么决定的? 有人说是由掌握的知识. 这句话只对了一半, 甚至不对. 你的身价是由你表现出来的知识决定的, 不是你掌握的知识决定的. 你的老板, 你的同事, 他们不可能知道你都看了啥想了啥学到了啥, 他们只能看到你说了啥做了啥. 我们讲面向对象, 我们只能通过public接口来访问一个对象. 我们就是个黑盒, 别人只能通过我们的行为来判断我们. 换句话讲, 如果你学了某些知识, 但行为没有任何变化, 那跟没学是一样的. 所谓知行合一. 在这一点上, Martin Fowler也是我们的榜样.

那我们学会了并分享了是否就可以高枕无忧了? 现在我们来证明你学一样还不够, 要学多样.

为何只学一门不够 — 知识工作者的分工

之前课下有人问, 老师我是做测试的, 你们讲的编程的技巧, 我需要学习吗? 这是很好的问题, 它牵扯到知识工作者的分工. 我们在生活中, 随时都会享受到分工的好处, 比如不需要自己种地养牛,不需要自己搬砖建楼, 这一切都拜分工所赐. 分工是一种已经被证明行之有效的科学方法, 可以极大的提高效率. 但这一切都有个前提, 就是你可以直接应用别人的工作产物, 而不需要跟这个人交互, 也不需要关心产物是如何产生的. 比如你可以直接喝牛奶而不需要关心牛奶是如何制造的, 当然在兲朝你可能得关心一下. 但在软件开发中, 或者在一切知识工作中, 这个前提不复存在了.

有多少次, 你可以直接基于客户的标书工作, 而不需要跟客户交流? 有多少次, 你可以直接根据需求文档编码, 而不需要跟需求分析人员交流? 有多少次, 你可以直接根据架构师的设计编码, 而不需要跟架构师交流? 有多少次, 你可以直接根据需求去测试产品, 而不需要跟需求人员和开发人员交流? 没有. 如果我们据此来分工, 那么我们不得不通过其它的实践来加强沟通, 来弥补沟通中的信息损失. 而如果一个人从头到尾包办所有的事情, 分析设计编码测试, 则没有任何信息转移和丢失造成的效率损失.

换言之, 在传统行业中, 分工是一种优化, 不到万不得已, 你不需要自己去搞定所有的事情; 而在知识工作中, 分工是一种妥协, 除非你一个人搞不定了, 你才需要分工.

现在的企业都看重polyskill的人, 从这个角度, 虽然某个时刻你会focus在某个方面, 但我们应该学习软件开发中方方面面的知识. 不要局限在自己现在的角色里.

参考资料

以上是在北航一级实践课程上的说教, 大部分内容来自徐八叉不同时期的session, 其中隐含着一条逻辑主线, 在向学生说明为什么应该做作业时无意中发现的.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

学习的逻辑: 知识经济学 的相关文章

  • ESP32使用Arduino发布和订阅MQTT

    该项目展示了如何在ESP32上使用MQTT通信协议来发布消息和订阅主题 举例来说 我们会将BME280传感器的读数发布到Node RED仪表板 并控制ESP32输出 我们将使用Arduino IDE对ESP32进行编程 介绍 在此示例中 有
  • Ubuntu-16.06 + OpenCV-3.3.0 + 一些常见的问题

    前言 2017 11 18 根据实践过程整理出第一版 2018 01 05 更新对 pkgconfig 的说明 今天在跑一个faster rcnn的案例 https pjreddie com darknet yolo 涉及到编译 openC
  • tomcat 虚拟目录和目录浏览设置

    为了方便开发 需要开设置虚拟目录和目录浏览 如果是生产环境就不要开放目录浏览 设置虚拟目录 先建 d site 设置 CATALINA HOME bin conf server conf
  • Android--使用相对布局搭建用户注册界面

  • oracle:any,some,all的区别

    相关例子 SELECT emp empno emp ename emp job emp sal FROM scott emp WHERE sal gt any SELECT sal FROM scott emp WHERE job MANA
  • Spring 过滤器 拦截器 AOP区别

    简介 这几天在回顾Spring的AOP时 对过滤器 拦截器 AOP的关系有点好奇 故记录做以备份 在实现一些公共逻辑的时候 很多功能通过过滤器 拦截器 AOP都能实现 但是不同的方式有不同的效率 具体有什么区别 看下文描述 前后端交互基本逻
  • 使用Java VisualVM监控远程JVM(远程服务器为linux配置)

    我们经常需要对我们的开发的软件做各种测试 软件对系统资源的使用情况更是不可少 目前有多个监控工具 相比JProfiler对系统资源尤其是内存的消耗是非常庞大 JDK1 6开始自带的VisualVM就是不错的监控工具 这个工具就在JAVA H
  • C++ 函数重载(overroad) 覆盖(override) 隐藏(hide) 的区别

    原文转自 http blog chinaunix net u 15921 showart 227111 html 成员函数被重载的特征 1 相同的范围 在同一个类中 2 函数名字相同 3 参数不同 4 virtual 关键字可有可无 覆盖是
  • 点到UI 不会误点到物体

    这几天在做捕鱼达人游戏时发现 当鼠标点击UI时 炮台的子弹也会发射子弹 这样会影响用户体验 然后网上百度了一波 发现在UGUI系统上 EventSystem提供了一些方法 那就是EventSystem current IsPointerOv
  • ZeroMQ入门

    官网 ZeroMQ 简介 ZeroMQ是一个库 不是消息队列也不是消息中间件 介于应用层和传输层之间 按照TCP IP划分 传统的Socket通信模式需要创建连接 销毁连接 选择协议等一些列操作 而ZeroMQ是在Socket封装一层的并行
  • Java使用多线程查询数据

    目录 前言 实例 前言 什么是进程 进程 是操作系统的概念 一个独立运行的程序 就是一个 进程 什么是线程 线程 是由 进程创建 的 一个进程可以创建任意多的线程 每个线程都包含一些代码 线程中的代码会同主进程或者其他线程 同时运行 什么是
  • 排序算法(六)——希尔排序

    基本思想 希尔排序是基于插入排序的 又叫缩小增量排序 在插入排序中 标记符左边的元素是有序的 右边的是没有排过序的 这个算法取出标记符所指向的数据 存入一个临时变量 接着 在左边有序的数组中找到临时变量应该插入的位置 然后将插入位置之后的元
  • android接入opencv方式

    原网址 https www cnblogs com xiaoxiaoqingyi p 6676096 html Android 接入 OpenCV库的三种方式 OpenCV是一个基于BSD许可 开源 发行的跨平台计算机视觉库 可以运行在Li

随机推荐

  • 按键控制数码管加减清零

    实验说明 实验接线 独立按键模块 gt 单片机管脚 K1 gt P31 K2 gt P30 K3 gt P32 K4 gt P33 未使用 大家可以自己扩展功能 动态数码管模块 gt 单片机管脚 参考动态数码管实验接线 开发攻略内在对应的实
  • 【任务调度系统第二篇】:XXL Job源码分析

    文章目录 写在前面 一 XXL JOB项目源码整体概括 1 源码整体概括说明 2 分析该项目源码时一些必须的知识 2 1 quartz简单介绍 2 2 freemarker前端渲染模板简介 2 3 java基本功修炼 二 xxl job a
  • Vscode编辑器下显示图片遇到的问题

    在编辑器Vscode下显示jpg图片不成功 测试代码和提示错误信息如下图 但是在IDLE中进行如上操作却能正常显示 Python环境为anaconda PIL matplotlib 问题出在什么地方呢
  • 算法1:一个无序的int数组,包含正负数, 排序成:左边为负数 右边为正数

    public class MinusPlubs public static void minusLeftPlusRight int nums int p1 1 boolean firstTime true for int i 0 i lt
  • D2D通信的Matlab关键技术

    D2D通信的Matlab关键技术 D2D Device to Device 通信是一种直接在终端设备之间进行通信的技术 它可以提供高效的通信和资源共享 在本文中 我们将介绍D2D通信的一些关键技术 并使用Matlab提供相应的源代码来实现这
  • 利用Power BI计算组,设计个性化数据标签

    利用Power BI计算组 设计个性化数据标签 知乎 zhihu com https zhuanlan zhihu com p 405532292
  • Exception 开发遇见异常

    1 java lang OutOfmemoryError 原因 常见的有以下几种 1 内存中加载的数据量过于庞大 如一次从数据库取出过多数据 2 集合类中有对对象的引用 使用完后未清空 使得JVM不能回收 3 代码中存在死循环或循环产生过多
  • TCP协议如何保证可靠传输

    TCP的功能是交付数据 所以TCP的可靠就是保证每次数据按序 按时 不丢数据 顺利的交付给对端 可靠不等于安全 TCP尽最大可能的保证数据可靠性 但是没有任何措施保证数据的安全性 所谓安全就是你的数据不会被别人看到或者窃取到 TCP上的数据
  • Ubuntu安装Redis集群(主从+哨兵)

    一 下载 官网 Download Redis 百度云 链接 https pan baidu com s 1sQjpbiFIFhnSpa0 uCP53A 提取码 AA56 版本 redis 6 23 注 本文依旧此博文修改而来 那篇更为详细
  • 使用Java实现七牛云OSS云存储上传图片至指定目录

    使用Java实现七牛云OSS云存储上传图片至指定目录 思路介绍 Controller代码 Util工具类代码 配置类 配置对象QnOssProperties 思路介绍 首先介绍下我的实现思路 前端通过Controller调用上传方法 上传方
  • 深分页优化总结

    前言 最近有面试过也遇到了问关于深分页问题 在这里简单从MySQL ES等方面分享一下自己对该问题认识和总结 一 深分页定义 可以从ES定义上来划分浅分页和深分页的边界 即页数超过10000页为深分页 少于10000页为浅分页 二 MySQ
  • QT打包发布全流程,超详细

    目录 第一步 配置环境变量 这一步不会的可以看我另一篇文章 QT 打包发布之环境变量配置 简单四步搞定 第三步 进行初步测试 主演是看你的程序是否有错 第四步 程序能运行 就可以在上层目录中看到生成了一个release文件夹 第五步 点开文
  • LeetCode周赛总结 第277场

    本文同步发布在我的个人博客 LeetCode周赛总结 第277场 欢迎访问 本次周赛没想到比上周还要简单 前三题都可以用非常简单的方法快速解决 第四题如果想对了方向其实也比较简单 元素计数 题目链接 元素计数 解题思路 相当基础的题目 要同
  • 华为OD机试 - 最佳植树距离(Java)

    题目描述 按照环保公司要求 小明需要在沙化严重的地区进行植树防沙工作 初步目标是种植一条直线的树带 由于有些区域目前不适合种植树木 所以只能在一些可以种植的点来种植树木 在树苗有限的情况下 要达到最佳效果 就要尽量散开种植 不同树苗之间的最
  • 【Java script基础学习】本地对象 - Date

    Date 日期对象 用来操作计算机的日期和时间 获取 获取当前日期时间 获取当前的时间戳 Date now 时间戳 从1970 1 1 0 0 0 到此刻的毫秒数 获取完整的日期对象 new Date 获取到的是一个对象类型的日期 包含日期
  • STM32MP157驱动开发——Linux LCD驱动(上)

    STM32MP157驱动开发 Linux LCD驱动 上 0 前言 一 LCD 和 LTDC 简介 1 LCD 简介 1 分辨率 2 像素格式 3 LCD 屏幕接口 4 LCD 时间参数 5 RGB LCD 屏幕时序 6 像素时钟 7 显存
  • 【Python pygame】零基础也能轻松掌握的学习路线与参考资料

    Python pygame是一款专门用于开发游戏和多媒体应用程序的Python库 它可以帮助开发者实现丰富多彩的图形界面和实时动态交互效果 本篇文章将为大家介绍Python pygame的学习路线 包括入门基础 进阶知识以及优秀实践 帮助大
  • C++中return语句的用法

    C 中的return语句是函数中一个重要的语句 return语句用于结束当前正在执行的函数 并将控制权返回给调用此函数的函数 return语句有两种形式 return return expression 1 没有返回值的函数 不带返回值的r
  • 贪吃蛇(一)--用C++编写一个简单的贪吃蛇

    这里简单介绍怎么用C 编写一个简单的黑白框的贪吃蛇游戏 复杂的加了可视化界面程序点击这里贪吃蛇 二 easyX图形库进行可视化界面制作 首先分析在黑白框中的贪吃蛇需要哪些功能 1 需要能在界面指定位置 x y 直接输出对应内容 2 需要动态
  • 学习的逻辑: 知识经济学

    来自http liguanglei name blogs 2012 11 28 the logic of learning 1 怎么证明学会了 2 你的身价是由你表现出来的知识决定的 不是你掌握的知识决定的 万物有始皆有终 我们的逻辑链条起