本文翻译自 The Missing Semester of Your CS Education,原载于 Hacker News。
为什么需要这门课?
大学计算机课程教会你各种高级主题——从操作系统到机器学习,但有一个关键主题几乎从未被覆盖,而是留给学生自己去摸索:对工具的精通。
这门课教你如何掌握命令行(command-line)、使用强大的文本编辑器、运用版本控制系统的高级功能,以及更多实用技能。
想一想,学生在教育过程中会花费数百小时使用这些工具(职业生涯中更是数千小时),所以让这个体验尽可能流畅、无摩擦是非常有意义的。掌握这些工具不仅能让你少花时间在”如何让工具按你的意愿工作”上,还能让你解决以前看起来不可能复杂的难题。
课程内容
这门 IAP(Independent Activities Period)课程涵盖以下主题:
| 日期 | 主题 |
|---|---|
| 1/13 | 课程概述 + Shell 基础 |
| 1/14 | Shell 工具与脚本编程 |
| 1/15 | 编辑器(Vim) |
| 1/16 | 数据处理(Data Wrangling) |
| 1/21 | 命令行环境 |
| 1/22 | 版本控制(Git) |
| 1/23 | 调试与性能分析 |
| 1/27 | 元编程(Metaprogramming) |
| 1/28 | 安全与密码学 |
| 1/29 | 杂项技巧 |
| 1/30 | Q&A |
所有讲座视频都可在 YouTube 上观看。
个人感想
作为一名开发者,我深有体会。在学校里,老师会教你算法、数据结构、操作系统原理,但很少有人教你:
- 如何高效使用终端:很多人只知道
cd、ls、cp,却不知道grep、awk、sed这些强大的文本处理工具 - 如何真正用好 Git:除了
add、commit、push,还有rebase、cherry-pick、bisect等高级操作 - 如何定制你的编辑器:Vim/Emacs 的强大远超大多数人的想象
- 如何自动化重复任务:写脚本、配置 alias、使用 tmux
这些”软技能”实际上每天都在影响你的工作效率。一个熟练掌握工具的开发者,可能在 5 分钟内完成别人半小时的工作。
如何学习
这门课程完全开源,所有资料都在网站上。推荐的学习方式:
- 看视频:每个讲座都有配套录像
- 做练习:每节课都有精心设计的练习题
- 动手实践:在自己的机器上复现所有操作
- 融入日常:把学到的技巧应用到实际项目中
课程还提供了中文翻译版本,对于中文开发者来说非常友好。
关键收获
- 时间投资回报高:花 10-20 小时学习这些工具,能在未来节省数百小时
- 降低认知负担:当工具使用变成肌肉记忆,你可以专注于真正的问题
- 解锁新能力:很多以前觉得”太复杂”的任务,变得触手可及
- 终身受益:这些技能在你的整个职业生涯都有价值
如果你觉得自己每天在和工具”搏斗”而不是”合作”,这门课绝对值得一学。
这门课由 MIT 的 Anish、Jon 和 Jose 共同讲授。所有内容采用 CC BY-NC-SA 协议开源。