和科班程序员划了两小时重点:当vibe coding不够用时,我们要如何学习CS?
和科班程序员划了两小时重点:当vibe coding不够用时,我们要如何学习CS?
和科班程序员划了两小时重点:当vibe coding不够用时,我们要如何学习CS? 和科班程序员划了两小时重点:当vibe coding不够用时,我们要如何学习CS? Modified June 1 leetcode 5. 软件工程 这部分V会觉得他现在也不知道还有哪些值得学的。因为过往的软件工程经验在失效,旧的课和教材都旧了,新的还没有共识。 如果不亲自当开发写大型项目,V认为这部分就当词典查,知道概念就行,部分概念如下 • 黑盒测试 / 白盒测试:黑盒就是你不知道里面在干嘛,只测输入输出;白盒就是你要看代码内部逻辑来测试 • Unit Testing:一次只测一个小功能(一个函数、一个模块) • CI/CD:每提交一次代码,自动跑一段测试/自动部署 • A/B Testing:同时上线两个版本,看哪个效果更好 • Infrastructure as Code:不是手装软件,而是写配置文件告诉服务器该装什么 学到什么程度: 当词典查,听到这些词知道别人在讲什么。要做项目的话,项目中再理解。让专门的开发去搞。 CSDIY的说明 6. 体系结构、操作系统、系统 这部分看教学材料都感觉特别复杂深奥。V 只划了很宽松的重点,核心是会用 GDB 指令来学习。 体系结构 • 学什么: ◦ 计算机是怎么运行的。CPU 只有少量寄存器(工作记忆),每条指令只做一件事,要么改一个寄存器的值,要么改一块内存的值。程序就是一条条这种基本指令拼凑出来的。编译器的作用就是把高级语言翻译成这些基本指令。 ◦ 边界意识: 体系结构要知道什么是计算机能写的、什么是不能写的。比如你想写个程序让电脑去给一盆花浇水——前提是你得有一根线从电脑连到机械臂上。计算机本身不能"长出手来"浇花,它只能通过已连接的硬件来控制物理世界。 • 学到什么程度: 写一个简单程序,用 GDB 逐行执行,看懂每一条指令在改哪个寄存器、哪块内存。理解"每条指令只做一件事"这个核心思想。 操作系统 • 学什么: ◦ 进程、线程、内存:一个进程有一块内存,里面可以有很多线程。线程共享同一块内存,你在一个线程写东西,另一个线程迟早会看到。但每个线程有自己的寄存器,看不到别的线程的寄存器。 ◦ 二进制、电路设计、汇编语言:大概知道基本概念 ◦ 文件系统、IO 设备、死锁:这些知道在干啥就行 • 学到什么程度: 理解进程、线程、内存的关系就行。其他的翻翻教科书,知道概念。用 GDB 跑起来看里面发生了什么,比纯看书有用。 并行与分布式系统 • 学什么: ◦ Raft:分布式共识算法。核心要求是——至少一半以上的服务器在线,系统才能正常工作。比如三个服务器,至少要两个在线,否则系统不可用。 ◦ 并发编程相关概念:deadlock(死锁)、各种 lock(锁)、multithread(多线程)、context switch(上下文切换) • 学到什么程度: 知道 Raft 的"过半存活"原则,知道并发编程里有哪些经典问题。不需要自己实现一个分布式系统。 编译原理 • 学什么: ◦ 上下文无关语法:最核心的概念。知道什么是"上下文无关"——就是你可以挑出其中一小段,只要这段本身符合语法规则,它外面的东西不受影响。比如 HTML 标签,你把一个 div 改成 span,周围的东西不用改,它还是合法的。 • 学到什么程度: 知道编译器是把高级语言翻译成机器码的,知道"上下文无关语法"是什么意思。不需要自己写编译器。 V 的建议: 体系结构和操作系统这两块,写点代码然后用 GDB 跟 AI 一起学,看里面发生了什么。AI 不一定能直接操作 GDB,你操作完截图问它就行。 gdb指令 7. 计算机网络 • 学什么: 了解现在的网络结构,以及各个协议的通信方式。 • 核心概念 ◦ TCP vs UDP:TCP 是可靠的(有重传机制),UDP 是快速的(不保证送达) ◦ 丢包率、延迟、带宽:这三个指标要知道是什么,怎么影响网络体验 ◦ IPv4、IPv6:知道有这两个版本,IPv6 地址更长 ◦ 端口号:知道是什么(同一个 IP 上不同服务的区分方式) ◦ 局域网地址:知道 10.x.x.x 和 192.168.x.x 是经典的局域网地址段 • 学习方法:装一个 Wireshark,抓包看看里面发生了什么。发过去一个请求,它就是一个包,而且这个包可能只有 1000 多字节,每个包都可能会丢。程序要设计得即使丢包了也不该直接出问题。 • 学到什么程度:用 TCP 写一个小聊天程序,能和另一台机器(或同一台机器的另一个端口)建立连接、互相发消息。能通就算过关。 实操用wireshark看看 8. 数据库系统 • 学什么: ◦ 增删改查(CRUD):基本功 ◦ 索引:知道能干啥,为什么有索引查询就快(从 O(n) 变成 O(log n) 或 O(1)) ◦ 排序(ORDER BY):知道怎么排,多列排序是什么意思(第一列相等看第二列) ◦ Group By:分组聚合 ◦ 求和等聚合函数 • 学到什么程度: 能用 SQLite 写点小练习,知道增删改查、索引、排序、分组这些操作在底层大概是怎么执行的。不需要深入数据库引擎的实现。 9. Web 开发 V偏后端,这个他也不太熟了,但核心东西就这些 • 学什么: ◦ 三件套:CSS / HTML / JS,知道各自负责什么(结构、样式、交互) ◦ 一个前端框架:React(生态大、复杂)或 Vue(简单一点) • 学到什么程度: 知道这些里面有什么东西就行。AI 时代不需要自己从零手写,但要能看懂框架生成的代码,知道组件、状态、路由这些基本概念。 十、数学相关 这部分对偏工程的朋友其实可以跳过,但希望和各种算法打交道的、尤其是CS科班的还是得学,依然划了个重点。 微积分 • 学什么:微分(尤其重要)、积分 • 学到什么程度: 知道导数是什么意思(变化率)、积分是什么意思(累积)。能算基本的求导和积分(比如 x³ 的积分是 1/4 x⁴)。不需要背一大堆凑微分、换元的技巧。 线性代数 这里我学得还行就没划太多重点。可以找3B1B的视频看看,理解下线性变换 信息论 • 学什么 ◦ 编码、压缩、通信 ◦ 信息熵:公式要记住,H(X) = Σ p(x) log p(x),衡量信息量的大小 • 学到什么程度: 只需要有概念就行,不需要算。找点科普看看,或者跟 AI 聊聊:"我是个 80 岁好学的人,你给我介绍一下什么是信息论。" 知道信息熵、编码、压缩这些词大概在说什么。 图论 • 学什么:无向图、有向图("向"是方向的向)、连通性、最短路、树、环 • 学到什么程度: 知道这些概念,能看懂算法题里的图论描述。不需要手写最短路算法。 密码学 • 学什么 ◦ 对称加密解密:一把钥匙锁和开(AES 等) ◦ 非对称的公钥私钥:公钥加密、私钥解密,和 SSH 的密钥对是一个道理(RSA 等) ◦ 签名 / 验证签名:证明这个文件确实是我发的 ◦ 密钥交换:双方怎么安全地协商出一个共同密钥(DH 等) ◦ 密码学的哈希函数:SHA256,要知道它是干什么的(防篡改、唯一标识) • 学到什么程度: 知道这些概念分别解决什么问题,知道公钥私钥和对称加密的区别。不需要自己实现加密算法。 信号与系统 • 傅立叶变换:知道基本概念就行——任何信号都可以拆解成不同频率的正弦波的叠加 图形学 • 学什么 ◦ 三角形:渲染的最低单位。游戏里的球,其实是一堆三角形拼出来的。三角形越多,渲染越复杂,游戏就越卡。 ◦ 投影:3D → 2D 的转换 • 学到什么程度: 知道渲染的基本单位是三角形,知道投影是什么。不需要写渲染引擎。 5. 软件工程 这部分V会觉得他现在也不知道还有哪些值得学的。因为过往的软件工程经验在失效,旧的课和教材都旧了,新的还没有共识。 如果不亲自当开发写大型项目,V认为这部分就当词典查,知道概念就行,部分概念如下 • 黑盒测试 / 白盒测试:黑盒就是你不知道里面在干嘛,只测输入输出;白盒就是你要看代码内部逻辑来测试 • Unit Testing:一次只测一个小功能(一个函数、一个模块) • CI/CD:每提交一次代码,自动跑一段测试/自动部署 • A/B Testing:同时上线两个版本,看哪个效果更好 • Infrastructure as Code:不是手装软件,而是写配置文件告诉服务器该装什么 学到什么程度: 当词典查,听到这些词知道别人在讲什么。要做项目的话,项目中再理解。让专门的开发去搞。 6. 体系结构、操作系统、系统 这部分看教学材料都感觉特别复杂深奥。V 只划了很宽松的重点,核心是会用 GDB 指令来学习。 体系结构 • 学什么: ◦ 计算机是怎么运行的。CPU 只有少量寄存器(工作记忆),每条指令只做一件事,要么改一个寄存器的值,要么改一块内存的值。程序就是一条条这种基本指令拼凑出来的。编译器的作用就是把高级语言翻译成这些基本指令。 ◦ 边界意识: 体系结构要知道什么是计算机能写的、什么是不能写的。比如你想写个程序让电脑去给一盆花浇水——前提是你得有一根线从电脑连到机械臂上。计算机本身不能"长出手来"浇花,它只能通过已连接的硬件来控制物理世界。 ◦ 计算机是怎么运行的。CPU 只有少量寄存器(工作记忆),每条指令只做一件事,要么改一个寄存器的值,要么改一块内存的值。程序就是一条条这种基本指令拼凑出来的。编译器的作用就是把高级语言翻译成这些基本指令。 ◦ 边界意识: 体系结构要知道什么是计算机能写的、什么是不能写的。比如你想写个程序让电脑去给一盆花浇水——前提是你得有一根线从电脑连到机械臂上。计算机本身不能"长出手来"浇花,它只能通过已连接的硬件来控制物理世界。 • 学到什么程度: 写一个简单程序,用 GDB 逐行执行,看懂每一条指令在改哪个寄存器、哪块内存。理解"每条指令只做一件事"这个核心思想。 操作系统 • 学什么: ◦ 进程、线程、内存:一个进程有一块内存,里面可以有很多线程。线程共享同一块内存,你在一个线程写东西,另一个线程迟早会看到。但每个线程有自己的寄存器,看不到别的线程的寄存器。 ◦ 二进制、电路设计、汇编语言:大概知道基本概念 ◦ 文件系统、IO 设备、死锁:这些知道在干啥就行 ◦ 进程、线程、内存:一个进程有一块内存,里面可以有很多线程。线程共享同一块内存,你在一个线程写东西,另一个线程迟早会看到。但每个线程有自己的寄存器,看不到别的线程的寄存器。 ◦ 二进制、电路设计、汇编语言:大概知道基本概念 ◦ 文件系统、IO 设备、死锁:这些知道在干啥就行 • 学到什么程度: 理解进程、线程、内存的关系就行。其他的翻翻教科书,知道概念。用 GDB 跑起来看里面发生了什么,比纯看书有用。 并行与分布式系统 • 学什么: ◦ Raft:分布式共识算法。核心要求是——至少一半以上的服务器在线,系统才能正常工作。比如三个服务器,至少要两个在线,否则系统不可用。 ◦ 并发编程相关概念:deadlock(死锁)、各种 lock(锁)、multithread(多线程)、context switch(上下文切换) ◦ Raft:分布式共识算法。核心要求是——至少一半以上的服务器在线,系统才能正常工作。比如三个服务器,至少要两个在线,否则系统不可用。 ◦ 并发编程相关概念:deadlock(死锁)、各种 lock(锁)、multithread(多线程)、context switch(上下文切换) • 学到什么程度: 知道 Raft 的"过半存活"原则,知道并发编程里有哪些经典问题。不需要自己实现一个分布式系统。 编译原理 • 学什么: ◦ 上下文无关语法:最核心的概念。知道什么是"上下文无关"——就是你可以挑出其中一小段,只要这段本身符合语法规则,它外面的东西不受影响。比如 HTML 标签,你把一个 div 改成 span,周围的东西不用改,它还是合法的。 ◦ 上下文无关语法:最核心的概念。知道什么是"上下文无关"——就是你可以挑出其中一小段,只要这段本身符合语法规则,它外面的东西不受影响。比如 HTML 标签,你把一个 div 改成 span,周围的东西不用改,它还是合法的。 • 学到什么程度: 知道编译器是把高级语言翻译成机器码的,知道"上下文无关语法"是什么意思。不需要自己写编译器。 V 的建议: 体系结构和操作系统这两块,写点代码然后用 GDB 跟 AI 一起学,看里面发生了什么。AI 不一定能直接操作 GDB,你操作完截图问它就行。 7. 计算机网络 • 学什么: 了解现在的网络结构,以及各个协议的通信方式。 • 核心概念 ◦ TCP vs UDP:TCP 是可靠的(有重传机制),UDP 是快速的(不保证送达) ◦ 丢包率、延迟、带宽:这三个指标要知道是什么,怎么影响网络体验 ◦ IPv4、IPv6:知道有这两个版本,IPv6 地址更长 ◦ 端口号:知道是什么(同一个 IP 上不同服务的区分方式) ◦ 局域网地址:知道 10.x.x.x 和 192.168.x.x 是经典的局域网地址段 ◦ TCP vs UDP:TCP 是可靠的(有重传机制),UDP 是快速的(不保证送达) ◦ 丢包率、延迟、带宽:这三个指标要知道是什么,怎么影响网络体验 ◦ IPv4、IPv6:知道有这两个版本,IPv6 地址更长 ◦ 端口号:知道是什么(同一个 IP 上不同服务的区分方式) ◦ 局域网地址:知道 10.x.x.x 和 192.168.x.x 是经典的局域网地址段 • 学习方法:装一个 Wireshark,抓包看看里面发生了什么。发过去一个请求,它就是一个包,而且这个包可能只有 1000 多字节,每个包都可能会丢。程序要设计得即使丢包了也不该直接出问题。 • 学到什么程度:用 TCP 写一个小聊天程序,能和另一台机器(或同一台机器的另一个端口)建立连接、互相发消息。能通就算过关。 8. 数据库系统 • 学什么: ◦ 增删改查(CRUD):基本功 ◦ 索引:知道能干啥,为什么有索引查询就快(从 O(n) 变成 O(log n) 或 O(1)) ◦ 排序(ORDER BY):知道怎么排,多列排序是什么意思(第一列相等看第二列) ◦ Group By:分组聚合 ◦ 求和等聚合函数 ◦ 增删改查(CRUD):基本功 ◦ 索引:知道能干啥,为什么有索引查询就快(从 O(n) 变成 O(log n) 或 O(1)) ◦ 排序(ORDER BY):知道怎么排,多列排序是什么意思(第一列相等看第二列) ◦ Group By:分组聚合 ◦ 求和等聚合函数 • 学到什么程度: 能用 SQLite 写点小练习,知道增删改查、索引、排序、分组这些操作在底层大概是怎么执行的。不需要深入数据库引擎的实现。 9. Web 开发 V偏后端,这个他也不太熟了,但核心东西就这些 • 学什么: ◦ 三件套:CSS / HTML / JS,知道各自负责什么(结构、样式、交互) ◦ 一个前端框架:React(生态大、复杂)或 Vue(简单一点) ◦ 三件套:CSS / HTML / JS,知道各自负责什么(结构、样式、交互) ◦ 一个前端框架:React(生态大、复杂)或 Vue(简单一点) • 学到什么程度: 知道这些里面有什么东西就行。AI 时代不需要自己从零手写,但要能看懂框架生成的代码,知道组件、状态、路由这些基本概念。 十、数学相关 这部分对偏工程的朋友其实可以跳过,但希望和各种算法打交道的、尤其是CS科班的还是得学,依然划了个重点。 微积分 • 学什么:微分(尤其重要)、积分 • 学到什么程度: 知道导数是什么意思(变化率)、积分是什么意思(累积)。能算基本的求导和积分(比如 x³ 的积分是 1/4 x⁴)。不需要背一大堆凑微分、换元的技巧。 线性代数 这里我学得还行就没划太多重点。可以找3B1B的视频看看,理解下线性变换 信息论 • 学什么 ◦ 编码、压缩、通信 ◦ 信息熵:公式要记住,H(X) = Σ p(x) log p(x),衡量信息量的大小 ◦ 编码、压缩、通信 ◦ 信息熵:公式要记住,H(X) = Σ p(x) log p(x),衡量信息量的大小 • 学到什么程度: 只需要有概念就行,不需要算。找点科普看看,或者跟 AI 聊聊:"我是个 80 岁好学的人,你给我介绍一下什么是信息论。" 知道信息熵、编码、压缩这些词大概在说什么。 图论 • 学什么:无向图、有向图("向"是方向的向)、连通性、最短路、树、环 • 学到什么程度: 知道这些概念,能看懂算法题里的图论描述。不需要手写最短路算法。 密码学 • 学什么 ◦ 对称加密解密:一把钥匙锁和开(AES 等) ◦ 非对称的公钥私钥:公钥加密、私钥解密,和 SSH 的密钥对是一个道理(RSA 等) ◦ 签名 / 验证签名:证明这个文件确实是我发的 ◦ 密钥交换:双方怎么安全地协商出一个共同密钥(DH 等) ◦ 密码学的哈希函数:SHA256,要知道它是干什么的(防篡改、唯一标识) ◦ 对称加密解密:一把钥匙锁和开(AES 等) ◦ 非对称的公钥私钥:公钥加密、私钥解密,和 SSH 的密钥对是一个道理(RSA 等) ◦ 签名 / 验证签名:证明这个文件确实是我发的 ◦ 密钥交换:双方怎么安全地协商出一个共同密钥(DH 等) ◦ 密码学的哈希函数:SHA256,要知道它是干什么的(防篡改、唯一标识) • 学到什么程度: 知道这些概念分别解决什么问题,知道公钥私钥和对称加密的区别。不需要自己实现加密算法。 信号与系统 • 傅立叶变换:知道基本概念就行——任何信号都可以拆解成不同频率的正弦波的叠加 图形学 • 学什么 ◦ 三角形:渲染的最低单位。游戏里的球,其实是一堆三角形拼出来的。三角形越多,渲染越复杂,游戏就越卡。 ◦ 投影:3D → 2D 的转换 ◦ 三角形:渲染的最低单位。游戏里的球,其实是一堆三角形拼出来的。三角形越多,渲染越复杂,游戏就越卡。 ◦ 投影:3D → 2D 的转换 • 学到什么程度: 知道渲染的基本单位是三角形,知道投影是什么。不需要写渲染引擎。 三、写在最后 以上不是教程,只是个学习目录,仅供参考。 我的计划是按这个目录,每个模块去找科普视频、教学博客或者教材的对应章节,把划重点的部分看了。看不懂的地方问 AI,跟 AI 一起读代码、看解释。中间混一点点练习,比如GDB 跑一遍、Docker 起个容器、TCP 写个聊天程序,不需要多,够理解概念就行。还是计划从项目中学习。 粗略估算,全部过一遍应该不会超过 100 小时。但这是螺旋式的:第一遍肯定不可能完全理解,很多概念要到具体项目里才会真的懂。后续做 project 遇到问题时,再回来补对应的部分。 如果是计算机科班、希望转行的,对这些概念的理念+实践项目,应该是一年所有的时间深入学习。 这些补到最后,目的不是变成专业开发,而是能做更多 project、能读代码、能在实践中继续学。V 说学完至少能知道什么是计算机能做到的、什么是不能做到的,知道 AI 的边界在哪里,不至于 vibe coding 的时候完全失控,跟技术团队沟通时也能听懂他们在说什么。 我后续争取每个模块学完都补点学习笔记。如果有同样在学习的朋友,欢迎交流 benchmark 和踩坑经验。 其他参考链接: https://bugstack.cn/md/road map/road map.html https://www.programmercarl.com/ https://csdiy.wiki/ https://www.douban.com/group/topic/316068246 https://www.douban.com/group/topic/303221274 其他参考链接: https://bugstack.cn/md/road map/road map.html https://www.programmercarl.com/ https://csdiy.wiki/ https://www.douban.com/group/topic/316068246 https://www.douban.com/group/topic/303221274 CS科班自学指南原始材料参考:csdiy.wiki 还没用过vibe coding、只想学AI的参考我写的:Yitong:普通人的AI系统学习指北(2026.04) 这篇文章的公众号版:https://mp.weixin.qq.com/s/ldxhLglQ4xv7Dj4ugRX3QA csdiy.wiki Yitong:普通人的AI系统学习指北(2026.04) CS科班自学指南原始材料参考:csdiy.wiki csdiy.wiki 还没用过vibe coding、只想学AI的参考我写的:Yitong:普通人的AI系统学习指北(2026.04) Yitong:普通人的AI系统学习指北(2026.04) 这篇文章的公众号版:https://mp.weixin.qq.com/s/ldxhLglQ4xv7Dj4ugRX3QA 一、写在前面:为什么有这个文档&适合谁 1. 为什么有这个文档? 我其实一直很想重学一下CS。 我相信只会vibe coding,一定会有很大的瓶颈。我也见到了我身边的开发用的Codex、ClaudeCode和我用的非常不一样。 我试图去学习,去找了一些大家转码的经验贴,也去看了一些付费课程,但这往往有以下特征: • 科班向的推荐:非常多、非常扎实的资源推荐,学下来至少上千小时,而且里面很多细节其实AI时代不需要掌握了 • 求职导向:很多八股、面经,快速转开发,偏“应试”导向,而这里面有些上千块的AI开发教程,我去看了看目录,讲 AI IDE、Coding Agent、Supabase 部署,最多加点 web 三件套。这些我基本也都会,依然不本质。 所以我一直在想: • Vibe Coding时代,大家该掌握的CS知识到底是哪些?又要怎么学习? • AI时代刚开始学计算机的大一新生/其他专业转码的学生又该如何入门? • 哪些知识是AI时代,人一定要会的?怎么能更好的知道AI的边界、更好的应用AI?怎么能抓到20/80定律中,计算机领域中那最关键的20%内容? 2. 这个文档是怎么来的? 这件事我思考了很久,也去看了一些大家的经验贴,也问了身边的一些程序员朋友建议,但一般也偏零散不系统。 于是这个周末,我找到了北大的一份很有名的CS学习规划项目(csdiy.wiki),尝试拉身边的程序员V一起划个重点。 V 是 NOI 竞赛出身、北大图灵班本科,从小学开始写过十多年代码,研究生在做编译器,实习做过大模型算法,算是工程和算法都比较懂,并且比较早就用AI辅助编程,知道AI的边界在哪。 他划的重点我感觉也很有个人审美,加上我也只是划了重点还没仔细学,所以可能缺少一些细节。只是给大家分享这个重点,仅供参考,后续学习资料,争取每个模块学完都有点学习笔记。 本次是软件工程开发相关,所以数学和算法等只是简略带过了,这个也之后说。 以下为我和V对着CSDIY项目为主体,个别去看了一些课程/教材目录划出来的重点。 一页总结版如下(是边聊边记的、人写的总结版),懒得看全文的可以保存: 3. 这个文档适合谁? 如果你: • VibeCoding遇到瓶颈,希望学习更多技术知识,知道AI的上限是什么、AI具体在做什么 • 希望在自己工种里成为偏技术的存在(如懂技术的产品、运营,而非直接转开发) • 是CS专业的大学新生,希望知道AI时代的专业课哪些是重点 那么你可以看下去。 这依然是一份自学攻略,我相信对于目标人群来说,需要的教程,应该是: • 相对轻量化的:因为目标是更好的驾驭AI,知道AI的边界,边界外哪些事不能做、边界内怎么更好指挥 • 螺旋式的:AI可以帮我们更快做project,我们要想的是怎么在project学习,一个project里怎么和AI分工,项目中学习,而不是死磕概念 前排提醒术语较多,且基于AI Coding的能力来说,所以如果你没有用过vibe coding,对AI没什么了解建议先看我的另一份教程:Yitong:普通人的AI系统学习指北(2026.04) Yitong:普通人的AI系统学习指北(2026.04) 另外补充我的基础给大家做参考: 我本科就是数据科学专业,算计算机大类。但当时确定不走技术岗,课上学的只为应付考试:编程语言写过几个学生作业,数据库、操作系统、计算机网络全靠期末抱佛脚,概念之间毫无体系。信息论、图论、离散数学完全没碰过,微积分线性代数也只到应试水平。机器学习知道一些概念,但只会调包,原理一概不熟。 上学期间对软件工程没有实感,写的都是 jupyter notebook 里的小脚本,没想过当程序员。 我后来做了一年半的产品经理实习,对一个应用的上线有哪些工作有了实感,和UI/UX、前端、后端、算法、测试等工种都有一定接触了解;同时vibecoding写过几个自己能用的小服务,和能有部署的、有数据库的网页,但多一点就觉得吃力了;再后来打黑客松&后续进一步做项目,跟更专业的技术组队时,发现自己的技术术语和边界认知明显不够。 另外补充我的基础给大家做参考: 我本科就是数据科学专业,算计算机大类。但当时确定不走技术岗,课上学的只为应付考试:编程语言写过几个学生作业,数据库、操作系统、计算机网络全靠期末抱佛脚,概念之间毫无体系。信息论、图论、离散数学完全没碰过,微积分线性代数也只到应试水平。机器学习知道一些概念,但只会调包,原理一概不熟。 上学期间对软件工程没有实感,写的都是 jupyter notebook 里的小脚本,没想过当程序员。 我后来做了一年半的产品经理实习,对一个应用的上线有哪些工作有了实感,和UI/UX、前端、后端、算法、测试等工种都有一定接触了解;同时vibecoding写过几个自己能用的小服务,和能有部署的、有数据库的网页,但多一点就觉得吃力了;再后来打黑客松&后续进一步做项目,跟更专业的技术组队时,发现自己的技术术语和边界认知明显不够。 二、划重点:要学什么&怎么学? 1. 《提问的智慧》 这是Github一个经典博客文章,V认为这是第一步,对于程序员如何思考问题。强烈推荐所有想和程序员交流、想转技术的人都先看看。 它教你怎么在开源社区、技术论坛上正确地提问——怎么描述问题、怎么给上下文、怎么展现你已经做过的尝试。看完它的收益是:你以后向 AI 提问、向人提问,都会更有章法。 2. 环境、工具与命令行 这部分以MIT的项目 Missing Semester 为主,拓展《命令行的艺术》。 Missing Semester 需要掌握的内容有 Git & Version Control • 学什么: 分支、合并(merge/rebase)、推送、版本回退。 • 学到什么程度: 能在终端里独立创建分支、合并代码、解决冲突、推送到远程。不是"AI 帮我配好了我会点按钮",而是你知道每一步在干什么。 SSH • 学什么: 公钥/私钥的原理,怎么在终端连接远程服务器。 • 学到什么程度: 能在终端里独立连上一台 Linux 服务器,知道公钥存在哪、私钥存在哪、连接过程中发生了什么。没有 AI人也能连。 Tmux • 学什么: 终端复用器,解决"网络断了/终端关了,服务器上的进程就消失了"的问题。 • 学到什么程度: 能在服务器上跑一个进程,用 Ctrl+b 然后 d detach,关掉终端,重新连上服务器,attach 回去,进程还在。理解 session、pane、window 的基本概念。 Shell 命令行 • 学什么: Linux/Unix 哲学的核心,知道每个工具只做一件事,用管道(pipe)连接起来完成复杂任务。 • 学到什么程度: 能读懂 Missing Semester 的 shell 教程,知道 shell 可以编程。能独立写出类似 ls | grep epub | wc l 这种过滤+统计的命令链,知道 grep、awk、sed 是干嘛的。 Vim • 学什么: 终端里的文本编辑器,服务器上没有 VS Code 时的兜底方案。 • 学到什么程度: 知道 i 进入输入模式、esc 退出输入模式、:wq 保存并退出、:q! 强制退出。主要是这几个指令,不需要成为 Vim 高手,但要知道怎么进去、怎么出来、怎么改个文件。 Make • 学什么: 定义依赖关系,让计算机按顺序完成一系列步骤。它不一定是用来编译的,它本质上是"我要做 X,X 依赖 Y 和 Z,Y 又依赖 A..."这种依赖图的自动化执行。 • 学到什么程度: 简单学学,知道 Makefile 是干嘛的,能读懂一个简单的 Makefile,知道 target、dependency、command 三个部分的关系。不需要自己写复杂的 Makefile。 Docker • 学什么: