当『后设学习』碰上『工程学思维』
只要我成为一个废物,就没人能够利用我!
雷猴啊,我是一只临期程序猿。打过几年工,写过几行代码。但今天我不想聊代码,我们聊聊学习这件事。

技术年年更新,尤其是前端框架,很多时候觉得学习速度都要跟不上框架的更新速度了。
而且还不能不学,不学就跟不上,甚至连面试机会都没有。
即使一直在一家公司苟着,如果只是靠勤奋工作,不提升自己的技能,也很难晋升。
比如最近流行的一个梗:前端的职业天花板是小组长。如果不抽点时间来学习其他领域的知识,那天花板真的就非常清晰了。

那应该如何高效学习呢?市面上有很多学习方法,但今天我想分享的是前段时间读过的一本书里面的其中一种学习方法:后设学习法。
书的作者叫 Scott H. Young,他曾在一个月学会素描,一年学会四中语言,一年学完MIT四年课程。还声称自己不是绝世天才!
我真的大受震撼,被自己的废物震撼到了。

书中作者分享了他的多种学习方法,本文只挑了后设学习法出来介绍,这个方法适合想学习新领域知识的工友。

什么是后设学习?
引用书中的解释:
「后设学习」的英文是「metalearning」,其字首「meta」源自希腊词语 「μετά」,代表「之上」,意思是某事跟其自身「有关」,或处理的是一种层次较高的抽象概念。在这里,后设学习指的是学习关于学习这件事。

很多人在学习一项技能时会专注于学习这项技能本身,而作者想强调的是我们可以先学习这个技能的方法。
后设学习的关键是在学习之前,先画出一张学习地图。
而要画出学习地图需要先回答3个问题:
- 为什么?—— 了解你的学习动机,为什么要掌握这项技能?
- 做什么?—— 为了成功,你需要具备哪些知识和能力。
- 怎么做?—— 在学习时有哪些资源、环境与方法可以利用。
具体例子我们稍后再举,我们先看看这个 1、2、3 的思维模式,是不是有点像工程学思维的分解。
工程学思维又是啥?
作为程序员,我们对工程一定不陌生。我们每天开发的项目就是一个个工程。
《开窍》这本书将工程学思维整理出5点:
- 行胜于言
- 分解结构
- 量化
- 列清单
- 取舍
简单来说,工程师大多都是行动派,他们懂得分解任务,懂排期,会列todo list,会排优先级(还会砍需求)。
在这5点里,我比较看重的是“分解结构”和“取舍”。这两点对我们学习一项新技能时非常有用。
工程师会把一个复杂、庞大的问题拆解成一个个小问题,如果拆解出来的小问题还很复杂,那就继续拆解,直到拆解到一个最简单的可执行任务位置。
引用《开窍》里的一句话:工程师相信这个世界上没有解决不了的问题,只有承受不了的成本。

举个例子
那么如何将后设学习和工程学思维结合起来呢?
举个例子。如果我们打算学前端,我们就不应该直接去b站找一套看似详细的前端教程,也不应该直接买本专业书从头看到尾。这样的学习效果通常不会很好,常见的结果就是学到后面忘了前面。相反,我们应该先搞懂为什么要学。你是为了找一份前端工作还是为了丰富主机的业余生活?
再举个例子,我们都知道 Python 很容易上手,可能也是很多其他职业的工友想学编程的首选语言。那你在学之前首先就要搞懂你学 Python 是为了干什么。是为了搭建一个自己的网站?为了写爬虫收集数据?还是为了进军AI领域?

当你的动机明确了,接下来你的目标就清晰了。就可以用工程学思维去拆解任务。
比如,我想找一份前端的工作,但我0基础,对前端什么概念都不懂的。这种情况要怎么做呢?
首先,我会打开招聘平台,搜前端岗位,看看初级前端的招聘需求。多看几个公司的招聘信息,然后把招聘信息里列出的技能点都记录下来,并统计每个技能出现的次数。接着再看看中高级前端的招聘需求,同样把技能点记录下来,看看哪些技能点是和初级前端必备技能点重合的。然后就开始找这些技能点的教程。
逛了一圈下来发现国内很多企业都需要前端懂 HTML、CSS、JS、Vue、React。此时我们还不懂这几个单词是什么意思。没关系,都记录下来,逐个去网上查。
我们还会发现,要求懂 React 的公司不一定需要 Vue,反过来也一样。那这两个东西有可能就是二选一,遇到这个问题时同样也上网查一下这两个东西到底有什么用。然后再看看招聘平台,哪个工资高点,哪个招聘数量多点。再做取舍。

在这个查资料的过程中,我们会知道前端就是做网页的。再结合我们用浏览器上网的经验去思考,在浏览器地址栏输入https://www.baidu.com/ 打开百度网站,在百度输入关键字就能搜索东西出来。百度这个网站有他的布局方式,这应该是前端需要做的。还有各种数据,但查了一下和数据打交道通常是后端的工作,我们要聚焦,这部分我们先不管。同时我们还发现浏览器有前进后退功能(历史记录),这个暂时不知道和前端有没有关系,先记下来。
当我们把要学的知识点列出来,逐个去查它们到底是什么意思,之后就要去搞懂每一个技术点之间到底有什么联系。
最后我们会得到一份学习清单,学习大纲就定义好了。我们就可以拿着这份大纲去网上找学习资料,比如去b站搜响应的学习教程,学完回掘金搜实战经验类的文章看看,面试前也搜一下面经。
在学的过程中,我们还可以把任务进一步拆分。拆解到每周要完成什么任务,再拆解到每天要做什么,做好todo list。这其实已经是我们日常工作中的“排期”了,这样分解下去已经无限接近执行了。
在这个例子中,我们已经建立了一个学习地图,同时还运用了工程学思维,做取舍(在有限的时间内拿到前端offer,Vue 和 React 二选一),把任务拆解。
这套流程其实也有点像 OKR。但这里就不展开 OKR 了,留到下次的水文里吧。
此时关于后设学习法的学习地图就清晰了(为什么?做什么?怎么做?)。这个过程中我们还运用了工程学思维,把任务拆解,

我的例子
我是一个表达能力不太好的人,经常出现词不达意的情况。意识到这点后,我想做出改变:训练自己的表达能力。
怎么训练呢?像up主一样录视频发网上?我还没做好露脸的准备,而且我的普通话很普通(粤语人)。查了一下市面上很多文字转语音的工具,这确实可以满足当一个技术up的需求。但既然要先准备文稿,那不如先试试用图文的方式去训练自己的表达能力吧。
此时,“动机”和“做什么”就已经定义好了。

接下来要怎么做?
要写什么文章?我敲代码的,选技术类的文章会比较轻松。
什么技术都写吗?分解一下。我逛了一圈国内的技术平台,当时觉得掘金的氛围不错,而掘金又是偏前端娱乐圈的。
“前端,娱乐圈”这两个标签说明这里前端开发者比较多,应用、面试类文章比较受欢迎。那大方向就定下来了。
再分解,面试我不想写,那就剩下应用类。Vue、React 这些热门框架的文章很多,我扎个头进去没优势。写啥呢写啥呢?要解这题,我换了个思路,既然我前面定义了“应用”和“面试”这两个标签,在“应用”找不到直接答案,那就用“面试”的思维去找“应用”的答案。于是我打开招聘平台,看了一下发现可视化方面的要求越来越多了。那就写可视化的应用吧。
再分解,写3D还是2D的可视化文章呢?3D却是是炫酷,未来可能是一个重要领域,但当时中小公司应用得不多。再看看2D领域,应用面真的广,那就选2D。2D比较热门的是图表,起步阶段我先躲开这个方向。找来找去,我找了 Fabric.js(详细分解我就不再写下去了,总之就是分析-分解-分析-分解下去)。
选题方向的定义过程:
写文章 -> 技术类 -> 前端 -> 可视化 -> 2D -> Fabric.js
Fabric.js 我以前没接触过,百度搜到的文章不多,官方文档又没有中文,官方文档的讲解对初学者不友好。如果我能把 Fabric.js 的入门教程写清楚,就算完成一次训练。
怎么学?
先去看看 Fabric.js 的 Demos 页面,把例子看完就知道这个工具能干啥。然后我挑了一个简单的 demo ,给自己定个目标:我要通过查文档去实现这个 demo。

接下来就是粗略的过一遍官方文档。粗略了解一下 Fabric.js 提供了那些方法给我们用。经过2天时间我就自己实现了当初选的那个demo,同时也对 Fabric.js 熟悉了。有点输出倒逼输入的感觉。
怎么讲解?
自己入门了,那要怎么给工友们讲解 Fabric.js 呢?讲解部分才是我这次真正要训练的目标。
这里同样运用了工程学思维:分解,然后列清单。
我先定义一个要完成的大目标(让工友们学完我的文章可以做一个图形编辑器出来)。这个目标我没在文章里说,但确实我整个《Fabric.js专栏》的大主题。
如果一上来就说要完成一个图形编辑器,对于我来说很难,很难讲解。对于工友来说,没接触过 Fabric.js 也很难看懂这文章。遇到难题,首先要做的就是分解。我先写一篇入门文章,然后再围绕这个大目标,将各个功能点拆出来写。比如在 Fabric.js 里怎么做自定义右键菜单。
一套操作下来,目录也整理好了。接下来要做的就是每篇具体的文章要怎么写了。

关于怎么写好一篇文章,可以参考一下论坛里比较火的文章,看看他们的思路是怎样的。也可以找一些写作教程来看,然后将教程里的一些写作准则整理出来,按照这些规范来写。练习时间长了,表达能力应该会变强(讲道理的话)。
怎么写才能让工友们容易接受呢?同样需要分解。我把那篇文章要做的目标先定好,然后通过“1、2、3、4……”逐一讲解,循序渐进的讲。这个思路应该不会错的,先写一篇试水,有反馈再做调整。

长期使用这套方法,除了学习目标更清晰,还能更清楚自己的需求(很多人其实不知道自己的真实需求是什么),时间长了甚至可以去 猜测产品经理的想法。
他为什么要提这个需求?A. 用户确实有这个需求
B. 试水
C. 产品经理脑袋温度很高
D. 他就是想整我
以上就是我对“后设学习”和“工程学思维”的理解和应用。虽然我的例子里很多细节都没拿出来说,但我猜工友们应该知道我想表达什么的,一定知道的吧~
道理我都懂,但就是做不好

代码仓库
相关文章:
当『后设学习』碰上『工程学思维』
只要我成为一个废物,就没人能够利用我! 雷猴啊,我是一只临期程序猿。打过几年工,写过几行代码。但今天我不想聊代码,我们聊聊学习这件事。 技术年年更新,尤其是前端框架,很多时候觉得学习速度都…...
一表谈现实、系统、流程、报表与BI
序号主题描述1系统与现实1.1管理系统个体应用决定因素管理能力、软件工程与管理环境的综合结果1.2信息系统与现实业务的关系现实世界是以业务利弊为抓手;信息系统是以业务流程为抓手;信息系统只是对现实业务部分的数字化应用总结:现实业务是以…...
数据结构顺序栈例题一
内容仅供个人复习 #include<iostream> #define MAXSIZE 100using namespace std;typedef struct {int *base;int *top;int stackSize;}SqStack;void Initstack( SqStack &s) // 初始化栈 {s.base new int[MAXSIZE];s.top s.base;s.stackSize MAXSIZE; }void Pus…...
大模型在百度智能问答、搜索中的应用
本文主要介绍了智能问答技术在百度搜索中的应用。包括机器问答的发展历程、生成式问答、百度搜索智能问答应用。欢迎大家加入百度搜索团队,共同探索智能问答技术的发展方向,文末有简历投递方式。 01 什么是机器问答 机器问答,就是让计算机…...
ARPG----C++学习记录01日志和调试
多人射击有点难,发现这个更加基础,先学习这个 显示日志 可以在代码中插入这样一行来打印日志,蓝图里的printstring会在屏幕和日志里都显示。可以使用%f,d等来获取后边的输入值。对于打映字符串变量,传入需要* UE_LOG…...
3302. 表达式求值, 栈的应用
3302. 表达式求值 - AcWing题库 给定一个表达式,其中运算符仅包含 ,-,*,/(加 减 乘 整除),可能包含括号,请你求出表达式的最终值。 注意: 数据保证给定的表达式合法。题目保证符号 - 只作为减号出现&…...
论文写作框架示例:论软件系统建模方法及其应用
标题 前言题目要求写作框架(1)摘要(300~330字)(2)正文(2000~2500字,2200字左右为宜)(3)收尾(200字左右)前言 本章内容参考了51cto的薛老师的《软考论文高分特训与范文10篇》的内容,是帮助初学者打开写作思路的工具,而不是必须要遵循的模式。建议软考人多读多看…...
Godot 官方2D C#重构(4):TileMap进阶使用
文章目录 前言完成内容项目节点结构TileMap设置图片资源备选图片添加物理碰撞添加y轴遮罩判断Y Sort Enable是干什么的? 脚本代码 前言 Godot 官方 教程 Godot 2d 官方案例C#重构 专栏 Godot 2d 重构 github地址 完成内容 项目节点结构 TileMap设置 图片资源 备选图…...
Ubuntu系统编译调试QGIS源码保姆级教程
在之前的文章中,我详细介绍了怎么在Windows下编译QGIS源码,也得到了不错的反馈。但是不足的是Windows下只能编译QGIS的Release模式和RelWithDebInfo模式,想要分析源码,“断点调试”肯定是少不了的,但是这两种模式虽然也…...
电源控制系统架构(PCSA)之系统控制处理器
安全之安全(security)博客目录导读 目录 一、系统控制处理器 1、服务 2、可信操作 一、系统控制处理器 SCP是一种基于处理器的能力,为提供电源管理功能和服务提供了一个灵活和可扩展的平台。 在移动系统中,SCP处理器一般是Cortex-M微控制器ÿ…...
深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
加我微信hezkz17进数字音频系统研究开发交流答疑群(课题组) 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署 项目一 科大讯飞经验 在Matlab平台上实现广义…...
Redis实现方式开启新篇章,解决分布式环境下的资源竞争问题,提升系统稳定性
前言 分布式锁一般有三种实现方式: 数据库乐观锁;基于Redis的分布式锁;基于ZooKeeper的分布式锁 本篇博客将介绍第二种方式,基于Redis实现分布式锁。 虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实…...
Go命令行参数操作:os.Args、flag包
Go命令行参数操作:os.Args、flag包 最近在写项目时,需要用到命令行传入的参数,正好借此机会整理一下。 1 os.Args:程序运行时,携带的参数(包含exe本身) package mainimport ("fmt"&q…...
在Go中处理时间数据
获取时间 这可能是软件包中最常用的方法。我们如何知道当前的时间呢?像这样: t : time.Now() fmt.Println(t)ini复制代码2023-04-16 23:54:45.924965 0800 CST m0.000152293这就是当前的时间。这是很麻烦的,所以我将把它分解成几个部分。 …...
SOLIDWORKS PDM 2024数据管理5大新功能
1. 改进的视觉内容 • 通过装配体可视化功能,在 SOLIDWORKS 中以图形方式查看零部件数据,如工作流程状态。• 使用特定图标迅速识别焊件切割清单零部件。 优点:重要数据和系统信息一目了然。 2.增强的数据保护和跟踪功能 •保护“包含”和…...
5G与医疗:开启医疗技术的新篇章
5G与医疗:开启医疗技术的新篇章 随着5G技术的快速发展和普及,它已经在医疗领域产生了深远的影响。5G技术为医疗行业提供了更高效、更准确、更及时的通信方式,从而改变了医疗服务的模式和患者的体验。本文将探讨5G技术在医疗领域的应用场景、优…...
Linux云服务器限制ip进行ssh远程连接
对Linux云服务器限制IP进行SSH远程连接的原因主要有以下几点: 增加安全性:SSH是一种加密的网络传输协议,可以保护数据的机密性和完整性。通过限制SSH连接的IP地址,可以防止未经授权的访问和数据泄露。只有拥有访问权限的IP地址才…...
【100天精通Python】Day72:Python可视化_一文掌握Seaborn库的使用《二》_分类数据可视化,线性模型和参数拟合的可视化,示例+代码
目录 1. 分类数据的可视化 1.1 类别散点图(Categorical Scatter Plot) 1.2 类别分布图(Categorical Distribution Plot) 1.3 类别估计图(Categorical Estimate Plot) 1.4 类别单变量图(Cat…...
(二开)Flink 修改源码拓展 SQL 语法
1、Flink 扩展 calcite 中的语法解析 1)定义需要的 SqlNode 节点类-以 SqlShowCatalogs 为例 a)类位置 flink/flink-table/flink-sql-parser/src/main/java/org/apache/flink/sql/parser/dql/SqlShowCatalogs.java 核心方法: Override pu…...
java中spi与api的区别
近期看了很多开源组件的源码,发现很多地方地方用到了 spi 的功能,开始思考 spi 与 api 的区别 发现 spi 侧重于抽象层次的概念,目前接触到的就是 java 里大量用到了这个,通过定义的接口来抽象通用的功能,然而 api 是不…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
