最后更新:2025/05/17
主要目标人群: - (将)在中国内地就读计算机类专业的,有或无留学意向 - (准备)自学计算机的人员
计算机类专业包括但不限于:计算机科学与技术、计算机科学与工程、软件工程、网络工程、信息安全、网络安全、网络空间安全、智能科学与技术、人工智能,等等。 - 大数据方向的专业,如 “数据科学与大数据技术” 等,除了划归计算机学院之下,一些学校也可能将其归入数学学院或商学院等。不同学院开设的此类专业代表发展方向的不同。 - 有学校的计算机类专业颁发文学学位(如:文学学士)而非理学或工学学位,这代表该计算机类专业属于与文科的交叉专业,需要修读较多的文科课程。 - 信息管理与信息系统、商业分析等专业,虽可能含有较多的计算机类课程,但通常不认为属于计算机类专业。 - “信息与计算科学” 是数学类专业。 - 如果你无法决定方向,请选软件工程。虽然一些学校的软工方向授课质量不够高,但这一条启发式经验适用于大多数情况。 - 与大数据、人工智能、图形图像等有关的专业,对数学的要求往往高得多。信息安全等安全方向的专业,由于涉及密码学(信安等专业必修)等学科,也对数学提出了相当的要求。另一方面,软件工程对数学能力的要求相对较低。 - 近年出现了一些 “披皮” 的专业,例如 “智能制造” 实为机械工程,“智能建造” 实则土木工程。
2026/04/03
本《自救指南》并未停更。由于作者身体原因,2025 年以来未及时依照就业市场变化继续修订。随着作者的恢复,修订现已继续,不久将有重大更新发布。
拟进行的部分修订: - 降低数学难度 - 同步参考资料(书籍、文档等)的最新版次 - 引入新课程与新参考资料 - 考虑当下就业情况,本项目将全面 ECE/EECS 化 - 新增数学与 ECE/EECS 选修课 - 添加参考学习路线 - 按读者水平为课程内容分层 - 新增近期积累的大量实用建议 - 按章节添加 FAQ - 更改格式,增强可读性
新版预览: - main: - ⭐https://cs-first-aid.pages.dev/ - https://cs-first-aid.netlify.app/ - dev: - ⭐https://cs-first-aid-dev.pages.dev/
本章最后更新于:2024/08/29
相信许多人都有着高考失利未能进入理想大学的遗憾,也深知自己在大学里能够获得的资源远远少于本校和名校的各路学霸。即便侥幸进入名校,也总是很容易因为各种各样的不可抗力,走上许多弯路。
无数同学如履薄冰、步步为营,生怕在某个将自己导向不同世界线的关口做出令自己后悔一世的选择;好不容易下了决定赌一把,却只有在很久之后才有机会判断这一步棋是否走对;终于到了能发现走错了的时候,又早已无法选择退路。
行业乃至社会的容错率越来越低: - 学历歧视 - 一本、211/985、23 所、C9、还有所谓的 C7,甚至有只收清北、计算所、自动化所的。 - 年龄危机 - 我上初中的时候就算有年龄限制也还是普遍要求不超过 45 岁左右,当时除了这个词以外还有另一种流行的说法叫做 “中年危机”。上大学的时候就看到很多卡 35 岁的了。读研了以后多次看到卡 25 岁(可在各社交媒体搜索)的了。 - 往往只能找到无偿加班严重、全年无休的岗位 - 缺乏具有技术含量的实战经验,找第一份实习都困难,更别说日后的工作 - 大规模缩招、停招、裁员,就业卷情进一步恶化 - ……
卷,也要讲究方法。作为在 “大内卷时代” 摸爬滚打的一员,私以为:有必要将自己踩过的坑以及总结出来的经验与方法提供给后来者,帮助各位减少那些纯粹给自己的发展之路设下绊脚石且浪费社会资源的无效内卷,尽可能利用好最珍贵的在校时光;能运用自己的真才实学获得理想的职位并完成层次更高的任务,比如挤掉那些身居要职却尸位素餐的,或者为本行业乃至其它行业作出重大贡献,自然再好不过;即便没能卷赢一众卷王,也至少能减少光阴的浪费,并为日后的自己积累更多的选择筹码。俗语有云 “一步错,步步错” ,希望这份《自救指南》也能给到大家一些及时止损的机会,充分降低做错选择并继续错下去的概率。虽说 “普通人的人生,怎么选都是错的”,但至少也可以错得不那么离谱。
本《自救指南》长期更新。也欢迎大家批评指正。
撰写本《自救指南》的主要目的,是为了让大家真正学到有用的知识与技能。考研等各类考试并不是本《指南》主要针对的场景。
本章最后更新于:2024/08/17
有意向转入计算机类专业的同学(本科就读期间转专业、跨专业转学境外本科、重读计算机类本科、跨专业考研、跨专业申请境外高校的研究生等,均计入此类情形),一定要三思而后行。选择专业事关前途大业,万万不要头脑一热就跟着大家一窝蜂挤进来! - ⚠️本行业的卷情进展已经极其迅速,而且仍在猛烈加速,完全没有看到任何减缓趋势,就业形势相当危重(都不可以用“很差”之类的词来描述)! - ⚠️Senior(高级,一般不少于 5 年工作经验)受影响相对小一些。但 Junior(初级,一般 0 到 2 年工作经验)以及新毕业生(new grad,NG)的就业率早已惨不忍睹。 - 即便是顶校科班毕业+多段大厂实习(甚至还有对知名开源项目的贡献和/或高分期刊/顶会的科研成果)的也不能幸免! 大把顶校学生 / 毕业生连那些钱少事多烂简历的外包也进不去。 - ⚠️中🇨🇳、美🇺🇸、加🇨🇦等 IT 岗位较多的地区已经无一例外出现了非常大规模的招聘冻结(hiring freeze),并且依然在蔓延。预计未来相当长的时间内都不会有好转。 - ⚠️欧🇪🇺🇬🇧🇳🇴🇮🇸🇱🇮🇨🇭、日🇯🇵、澳🇦🇺、新🇳🇿🇸🇬、港🇭🇰等地区 IT 岗位相比中美等地相对较少,难以承载疯狂涌入的求职者。这些地区的就业市场亦受到经济不景气的冲击,求职难度陡然上升。比如荷兰🇳🇱,2022 年理工类毕业生找工作号称 “有手就行”(当然薪资未必好看);然而,自从 2022 秋冬(或 2023 年伊始),一下子就全面崩盘:千里冰封式招聘冻结;裁拿了永久合同的;越来越多具有资质却仍旧拒绝担保 Kennismigrant(KM)工作签证的;白嫖 Zoekjaar(search year)签证的;2500 欧一个月的前端岗位至少 100 多号人抢的…… - ⚠️人工智能(AI)的落地,并非就业的风口: - 相关岗位要求通常非常高,比如:博士学位 + 顶刊顶会(而且完全有可能同时要求业界的实习 / 工作经验)。 - 虽然 AI 在自动驾驶等领域已经遇到瓶颈,但目前 AI 已经能够取代极其多的岗位。翻译、客服、美术等行业为重灾区;本行业也不例外:无数初级程序员正在因为 AI 而失业。典例:GitHub Copilot 代码补全的正确率虽不特别高,但完全可以应付各种各样的课程作业、个人的课外软件项目,乃至工作任务中的相对简单的部分。总之,AI 创造的岗位数量远远少于消灭的岗位数量。 - 翻到了18年的校招 我破大防了 - 请在确认自己具有极大的兴趣的条件下,再进入本专业。编程不是一件容易的事情,而且对你的耐心提出了相当高的要求。如果你只是看重高薪🤑💰而不是发自内心热爱❤️,那么你迟早会发现自己在这条路上根本走不下去。 - 事实上,目前只有中🇨🇳、美🇺🇸的 IT 岗位的平均 / 中位薪资远远甩开其它行业。其它国家和地区的 IT 岗位,薪资水平不会比多数行业高出太多。由于经济下行、维持高息,以及本行业的各个泡沫相继破裂,许多 IT 岗位的工资必将接连跳水,招聘数量持续俯冲。 - ⚠️⚠️严重警告!由于信息传播的滞后性,目前每年冲入计算机类专业的本科生的数量仍然是天文数字,并且几何级数增长的趋势难以刹停。全球的就业市场根本无法消化天量的毕业生!不要再盲目攻读计算机类专业了!按照目前的卷情,别说总体工资被冲到低于其它行业了,整个行业能否在未来多年仅仅将现有的 Junior 大致消化完毕都是个大问题!别问能不能勉强糊口了,再这么不顾一切地冲,直接就是铁定要一直都一点饭也没得吃了!
本章最后更新于:2025/05/10
如果你不想: - 很多网页或程序不能同时开着,否则会卡,干起活儿来(尤其是需要同时参考、核对、整理大量资料的场景)巨麻烦。 - 卡顿到作业都不好做。
那么,还犹豫什么呢?想尽办法搞到一台能用的机子吧。
选机提示: - 假如想给老机器升级: - 首选部件是内存或 SSD。这对用户体验的提升是非常明显的。如果无法添加内存或硬盘,那么只能购入新机。 - 升级 CPU 和 GPU 的优先级位于增加内存与硬盘容量之后。除非硬性要求,例如:需要二级地址转换(SLAT)运行高版本的虚拟机监视程序(VMM,如 Hyper-V、VMWare Workstation、VirtualBox),或需要 Tensor Core 加速推理与训练。 - 不玩单机游戏,三四千来块(预算多一点的可以放宽到不低于五千)的机器通常也够做开发了。但是, - 内存和硬盘的容量一定要管够。 - 内存容量: - 不推荐:不少于 16 GB。 - 最低:不少于 32 GB。 - 次低:不少于 64 GB。 - 推荐:不少于 128 GB。 - 硬盘容量: - 不推荐:容量不少于 500 GB。 - 最低:容量不少于 1 TB。 - 次低:容量不少于 2 TB。 - 推荐:容量不少于 4-8 TB。 - 大量软件的体积都在不断膨胀。在 Windows 下,有的软件还会强制安装到 C 盘,或将自己产生的数据记录到 C 盘(且无法更改这些目录)。为使 C 盘空间尽量大,避免对硬盘划分过多的分区;只建立单个分区最好。 - 需要在本地运行机器学习训练任务的,配置需要高不少(CPU、显卡、内存、硬盘)。 - 不优先选择采用低压 U 的笔记本。除非你确实十分在意轻薄、续航、发热。 - 近年来,低压 CPU 提升不少,日常的轻负载应用的性能表现往往不错,且同时能维持相对低的功耗。 - 高分辨率屏幕(如:4K)是有用的:在小字体的条件下,高分屏能够显示更清晰的文字。这意味着能够同时在同一屏显示更多的内容,对效率有益。 - 一屏同时显示 2 页双列排版的论文的 PDF。 - 一屏同时显示多个文件乃至多个项目的代码。
如果经济实在困难,考虑常去学校机房或电子阅览室。
这里特别要说一下,有的同学的家里明明是有经济能力的,但是不知道为什么,家长就是不肯让子女用稍微贵一点的机子: - 我看到过一些读机械、建筑之类的专业的学生的家长,又不是没钱,却非得逼着子女卡死两三千的预算。这样的后果就是作业都难以做完,因为要用到的行业软件相当吃配置。总是不交作业或不按要求完成作业会是什么结局,不用我多说了吧。 - 有的家长呢,买奢侈品随随便便四五万就出手了,但允许子女买台几千的 PC 却万般不愿意。真不知道说什么好。 - 就算子女自己攒钱买机器,被家长发现了还要挨一顿臭骂,也都算轻的。
已知在这样的经济开销无法太高的条件下,也希望大家能够集思广益,一同想想办法,摸索出最适合自己的方法来,并分享给大家,共同进步。
HARDWARE IS CHEAP. PROGRAMMERS ARE EXPENSIVE.
为了进一步提升生产力,可以考虑: - 选用大屏的笔记本,不要怕重(背着锻炼身体)。屏幕够大,也是生产力;硕大的笔记本,散热通常更好,有机会更多地减少降频程度、提升性能,也是提升生产力。有条件的同学使用台式机亦可,并搭配大尺寸的显示器。但要注意配置 UPS(不间断电源供应系统),防止宿舍停电导致丢失数据。宿舍经常停电在一些大学并不少见。 - 多个屏幕。 - 购买外接显示器作为第二屏。如果不搞设计之类的工作,没必要买很贵的。 - 只要你的住处还有空间,完全可以考虑放置多于两个屏幕。 - 免费软件 Splashtop Wired XDisplay 可以将 Android 平板作为第二屏,但会给 PC 带来额外的 CPU 占用率。 - 经济能力足够的同学,可考虑使用两台计算机:一台高性能,可以是又厚又重的游戏本(砖头本)或台式机,一般放在住处(宿舍 / 家 / 出租屋);另一台主打轻薄,带去课室或者其它地方,方便在上课或出差等场合做笔记或写代码。
有条件的情况下,建议对电子书做 OCR(光学字符识别)。不过,各大软件的 OCR 功能一般都是收费的。
有的教材难以买到电子版,可以先买纸质版,然后在网上找店家扫描成电子版并识别文字(可将教材在下单后直接寄给店家进行扫描)。
如需在 PDF 上做笔记: - 推荐 Drawboard PDF(可从 Microsoft Store 获取)。有免费和收费的版本,但免费版本已经够用。 - 选用这个软件的一个重要原因是:其它很多软件有一个严重问题——如果增加了笔记又删除,保存的 PDF 文件的大小不会减小。Drawboard PDF 虽然默认情况下亦如此,但可以通过在保存 / 另存为时调节选项来压缩其大小。 - ABBYY FineReader PDF 在保存时会自动压缩到尽量小,但该软件在未输入序列号时只能保存少量页面(貌似 100 页?)。笔者购买了这个软件的长期授权,当时花了一大笔 RMB($210,折合¥1???.??)。但因为需要扫描的书非常多,相比之下,这笔一次性的购买很值得,即便无法升级大版本。不过,现在该软件只支持订阅制,不能再通过一次性付款买到永久授权了。
然而,PDF 并不是被设计为方便进行编辑的格式。因而对 PDF 的编辑并不如一些常见格式(如 DOCX、Markdown)来得方便。
做好多重备份(本地 + 网盘、乃至异地备份),特别是学习资料和其它重要数据。
主流云厂商提供了一些长期免费(always free)的服务。 - Azure - AWS - GCP - Oracle Cloud - IBM Cloud - DigitalOcean
可以识别数学公式,准确率较高。成功注册帐户后,每月可以免费识别 50 条。邀请其它用户成功注册后,自己和该用户都可以再获得 50 条免费识别公式的机会。
如有来自培训机构的一些书籍,价格比较正常的(比如几十块),可以购买用于参考,不建议用于主修。
对于能够提升学习效率的物件,确实有需要就不要犹豫,尽快买。不要老是等什么 618、双十一、双十二之类的活动。 - 现在很多商品,特别是数码产品,在这些活动之前经常会悄咪咪涨价,活动一开始再降下来,制造大力度打折的假象,进而使得实际上在这些购物节期间价格并不便宜多少。 - 软件上想省钱的,可以多找找(开源)免费的软件。 - 对于一门课,仅学习一本教材但需要多本参考书或其它参考资料是很常见的。多数时候,没有必要省去这些买参考资料的钱,即便这些资料只被自己偶然查阅。
不要去抢那些零碎的优惠。比如: - 学校附近某个奶茶店开张,为了几块十来块的优惠去排队一个下午。真的很没有必要。况且,奶茶喝多了也对身体不好。 - 笔者做志愿活动期间(18Q4),看到过有商家在某小区门口搞活动,奖品无非是粽子或者其它一些简单的吃的,或者一二十块这种程度的返现,结果那小区里外好多人(特别是老人家)就在那里挤着来参加,折腾了一上午。真替他们觉得累。 - “瓜分XX亿”?收皮啦你!
经济条件不错的,不建议勤工俭学。 - 与志愿活动不同。勤工俭学会有少量的工资(如,每月 400 块),因此不可以算作志愿活动。 - 实在有闲的情况除外(按照现在的卷情,已经几乎不可能,除非是有条件继承资产与人脉的各种二代)。
具体方式一般可参见就读单位的官方网站,或询问本单位的相关人员。
许多软件使用教育邮箱注册可享受极大优惠。例如: - Visual Studio Community。只有通过教育邮箱才可以使用,并且免费。另外两个版本 Professional 和 Enterprise 都是收费的。 - Windows 平台的 VS 主要使用 C# 开发,GUI 框架为 WPF(也有一部分 WinForms 或老旧的 C++ GUI 部件,猜测使用了 MFC)。大量实践表明,在 Windows 系统中,其运行速度显著快于 JetBrains 系列 IDE(Java / Kotlin + Swing)。美中不足的是,Visual Studio 尚不支持在 Linux 系统中运行。 - SQL Server 已经可以运行在 Linux 上。可能在未来的某一天,我们也会等来 Visual Studio 或 Microsoft Office 的原生 Linux 版本。但我个人感觉概率不大。 - Visual Studio for Mac 已经停止开发,最后一个版本的支持将于 2024 年 8 月 31 日结束。详情 - 请及时升级到 Visual Studio 2022 新版本。因为 VS2022 是 64 位的,允许使用超过 4 GB 的内存,并提升运行于 64 位环境下的性能,有利于顺利打开超大规模的解决方案(solution,VS 里面一个 solution 包含若干个工程或项目,也就是 project,很多 IDE 都只有 project 的概念)。另外,代码补全的改进也获得了较多来自开发者的好评。 - 非教育用户需要付费使用的 JetBrains 全家桶,对教育用户免费,免费,免费(不要再去找破解版了)!! 举例: - CLion:跨平台 C++ IDE,通过 CMake 完成构建自动化(CMake 已成为跨平台构建自动化的事实标准)。 - 2023 年 11 月,CLion Nova 进入早期访问(early access),虽然还有很多 bug,但性能提升明显。 - IntelliJ IDEA:最流行的 Java IDE,并支持 Kotlin、Groovy、Scala 等需要 JVM 的语言,支持使用 Spring 全家桶等知名 Web 框架的开发。 - Rider:跨平台 C# IDE,能够打开 Visual Studio 的 C# 解决方案(sln 文件)。 - PyCharm:广受好评的 Python IDE,支持 Django 等框架。 - WebStorm:相当不错的 Web 开发 IDE,支持 Angular、React、Vue 等主流的前端框架。 - DataGrip:支持操纵众多主流的数据库,包括成熟的关系型数据库和新兴的非关系数据库。 - Fleet(正在公测):有望挑战 Visual Studio Code 的文本编辑器。 - RustRover:新鲜出炉的 Rust IDE。 - Microsoft Office Home & Student
GitHub 学生开发包需要通过教育邮箱注册。
顺带一提,不仅仅是计算机行业的软件,其它领域也有机会充分享受教育优惠。例如: - Sonarworks SoundID Reference:校正监听音箱和监听耳机的频响曲线和延迟。教育优惠的折扣力度经常都在 40% 以上。
能记下来的就记下来,特别是那些主要靠记忆的、零散的知识点。 - 有可能因为失眠或者其它各种古怪的身体原因,而使得记忆受影响。 - 又或者,发现自己其实不是很适合这一行,或者兴趣没有预想中的高,进而使得相关的知识不是很好记。 - 还有一个重要理由:许多书的信息密度其实比较低。自己整理笔记,提高信息密度,日后复习查阅会很高效。
对于信息密度较低的书,可以开一个新的文档去记笔记。如果书的信息密度比较高,那么应当直接在书上画重点。
如何判断书的信息密度?每个人对信息密度的感觉不同,只能通过多读书来积累自己的直觉。 - 以本人为例,一般而言,数学类书籍的信息密度对本人来说比较高;而许多专业课教材的信息密度较低。 - 也可以尝试语音输入。但本人感觉语音输入的准确率还不够高,本专业的术语较难一次识别成功,导致语音录入的文段需要修订,使得语音输入不一定比通常的打字要快。
但无论采用何种笔记方法,笔记都不应过长。否则,需要考虑自己是否没有使用合适的方法记笔记。
本《自救指南》提供的教程亦多以文本为主。
尤其是学习编程语言期间,必须通过做项目来巩固知识,否则很快会遗忘。
想不到要做什么项目的,至少还可以: - 每天做一些数学题,微积分、线性代数、概率统计之类的。 - 提前去刷 LeetCode 或 HackerRank,或者到各大学校的 Online Judge(OJ)上做算法题。算法大佬可以刷 Codeforces。 - 在开源站点上找一些具有自己感兴趣的功能的软件,模仿它们的实现。 - 常见开源网站:GitHub、GitLab、BitBucket、SourceForge、Gitee …… - 并不是所有高 Star⭐ 的开源项目都具有良好的代码结构。每个程序员都应当形成最适合自己的一套代码风格。
你是否有经历过: - 做课设的时候,任课老师没有将需求限定得比较死,甚至直接来个内容不限、自由发挥;或者自己在课下想额外练习一下编程的时候,总是想不到要做些什么功能、使用怎样的技术? - 框架 / 库这么多,不知道怎么选、从哪里开始学。 - 不清楚自己是否只是在拙劣地重复:会不会正在做的东西其实老早就被前人做得更好了? - ……
是的,相信你也猜到了:只是完成课内的要求,是远远不够的。在平日,就需要不断地进行各种各样的积累。不熟悉计算机的同学(比如,因为出身边远地区,经济比较困难;或者因为初中和高中的学业问题而被管得死死的,结果大学之前一直都很少接触计算机)更要对此引起高度重视。方法有很多,这里按照个人经验提出一些较为可行的:
$ claude mcp add cs-first-aid \
-- python -m otcore.mcp_server <graph>