写给即将读研的你:一个老程序员的入行指南
Posted on Wed 14 January 2026 in Journal
| Abstract | 写给即将读研的你:一个老程序员的入行指南 |
|---|---|
| Authors | Walter Fan |
| Category | career advice |
| Status | v1.0 |
| Updated | 2026-01-14 |
| License | CC-BY-NC-ND 4.0 |
写给即将读研的你:一个老程序员的入行指南
研究生不是终点,而是你职业生涯的"新手村"。 在这里,你有试错的资本,也有迷茫的权利。
你正站在一个绝佳的起点
说实话,当我听说你——一个机械专业的本科生——要跨考计算机研究生的时候,我的第一反应是:这小子,眼光不错。
为什么这么说?因为"机械 + 计算机"这个组合,在今天的市场上,简直是黄金搭档。
纯 CS 的人,写代码溜,但对物理世界的理解往往停留在"理论上"。而你,学过机械原理、材料力学、控制理论,你知道一个齿轮怎么转、一个电机怎么驱动、一个机械臂怎么运动。这些东西,是那些从小到大只碰过键盘的程序员学不来的。
换句话说:你不是"转行",你是"升级"。
当然,我也替你捏把汗——这个行业的变化速度,快得令人窒息。我刚入行的时候,Java 还是"新语言",云计算还是"概念股",AI 还只存在于科幻电影里。而今天?LLM 能帮你写代码,AI Agent 能帮你做决策,甚至有人开玩笑说"程序员要被自己写的程序淘汰了"。
但别慌。越是变化快的时代,越需要扎实的基本功和清醒的方向感。而你的机械背景,恰恰给了你一个独特的视角和差异化的竞争力。
这篇文章,我想和你聊聊三件事:定方向、打基础、赶潮流。不是什么高深的道理,都是我这二十多年踩过的坑、走过的弯路。希望对你有点用。
一、定方向:别急着"选赛道",先去"试错"
你不需要现在就想清楚
"我到底该做前端还是后端?""大数据和人工智能哪个更有前途?""网络安全会不会更稳定?"
这些问题,我相信你已经在脑子里转了无数遍。
我的答案是:不知道,也没关系。
真的。我见过太多人,在研一的时候就给自己贴上了标签——"我是做 Java 的""我是做算法的"——然后在研二发现自己其实更喜欢另一个方向,但已经"沉没成本"太高,不敢转了。
方向这东西,不是想出来的,是试出来的。
但有一个方向,你天然有优势:机器人
说实话,如果我是你,我会认真考虑机器人方向。
为什么?因为机器人是少数几个真正需要"软硬结合"能力的领域。
一个机器人工程师需要懂什么?
- 机械:运动学、动力学、机构设计——你本科学的
- 电子:传感器、电机驱动、嵌入式系统——你多少接触过
- 软件:算法、控制、AI——你研究生要学的
看到没?你的知识结构,几乎是为这个方向量身定做的。
而且,机器人行业正在迎来一个爆发期:
- 工业机器人:制造业升级,协作机器人(Cobot)需求暴增
- 服务机器人:送餐、配送、清洁、陪护,场景越来越多
- 人形机器人:特斯拉 Optimus、Figure、波士顿动力,巨头都在押注
- 具身智能:AI + 机器人,让机器人真正"理解"物理世界
我之前在一家机器人创业公司待过一年多,深刻体会到:这个行业最缺的,不是会写代码的人,而是"懂机械又会写代码"的人。
你想想:一个纯 CS 背景的人,让他调一个机械臂的运动规划,他可能连"关节空间"和"笛卡尔空间"的区别都搞不清楚。但你不一样,你学过机械,你知道一个六轴机械臂的每个关节是怎么转的,你知道奇异点是什么意思,你知道为什么有些姿态到不了。
这就是你的护城河。
具体怎么入门?
- 学 ROS(Robot Operating System):机器人领域的"通用语言",几乎所有机器人项目都用
- 学运动规划:MoveIt、OMPL 这些库,了解 A*、RRT、PRM 等算法
- 学 SLAM:同时定位与建图,机器人导航的核心技术
- 学强化学习:让机器人通过试错学习技能,是具身智能的关键
- 玩玩硬件:买个树莓派、Arduino,或者一个便宜的机械臂套件,动手做点东西
推荐的学习资源:
另一个你可能感兴趣的方向:游戏开发
我知道你喜欢玩游戏。那你有没有想过,把"玩游戏"变成"做游戏"?
游戏开发是一个非常有趣的领域,而且它和你的机械背景也有交集——游戏物理引擎。
你知道游戏里的角色为什么会"摔倒"吗?为什么车会"漂移"?为什么布料会"飘动"?这些都是物理引擎在模拟。而物理引擎的核心,就是你学过的那些东西:刚体动力学、碰撞检测、约束求解……
游戏开发有几个主要方向:
1. 游戏客户端开发
- 主要语言:C++(Unreal Engine)、C#(Unity)
- 核心技能:图形学、物理引擎、性能优化
- 你的优势:机械背景让你更容易理解物理模拟
2. 游戏服务器开发
- 主要语言:C++、Go、Java
- 核心技能:网络编程、分布式系统、高并发
- 适合:喜欢后端、对"看得见的画面"不那么执着的人
3. 游戏 AI / 技术美术
- AI:行为树、状态机、寻路算法、机器学习 NPC
- 技术美术:Shader 编写、渲染管线、特效制作
怎么入门?
- 选一个引擎:Unity(C#,入门友好)或 Unreal(C++,画面强)
- 做一个完整的小游戏:不要眼高手低,先做个 Flappy Bird、打砖块、贪吃蛇
- 参加 Game Jam:48 小时做一个游戏,逼自己快速出活
- 研究你喜欢的游戏:它的战斗系统怎么设计的?它的关卡怎么做的?它的网络同步怎么处理的?
推荐资源:
一个真实的建议:游戏行业加班多、压力大,而且国内游戏公司的工作环境参差不齐。如果你想做游戏,要做好心理准备。但如果你真的热爱,那这些都不是问题。
怎么试?
-
跟着导师的项目走一遍:哪怕不是你最感兴趣的方向,也先做。做的过程中,你会发现自己对哪些环节有感觉、对哪些环节提不起劲。这就是信号。
-
主动找实习:课堂上学的和工业界用的,差距比你想象的大。一次三个月的实习,抵得上你在实验室里闭门造车一年。
-
听从内心,但也要验证:你觉得自己喜欢做游戏?那就去参加一次 Game Jam。你觉得自己喜欢做机器人?那就去参加一次 RoboCup 或者机器人比赛。别只是"觉得",要去"试试"。
一个反直觉的建议
很多人会说"选热门方向",我倒觉得:选你能坚持做十年的方向。
热门会变冷,冷门会变热。但如果你对一个方向有真正的热情,你就能在它冷的时候坚持,在它热的时候收获。
我 2002 年加入 WebEx 做实时通信的时候,这个方向冷得不行,大家都在追 Web 2.0。二十年后,疫情来了,Zoom 火了,WebRTC 成了香饽饽。你看,时间会奖励那些"选对了并且坚持下来"的人。
机器人也是一样。十年前,做机器人的人被认为是"不务正业",大家都在追互联网。现在呢?人形机器人成了最火的赛道,各大科技公司都在抢人。
二、打基础:这些"老古董"技能,比你想象的重要
数据结构与算法:不是为了面试,是为了"会思考"
我知道,一提到"数据结构和算法",你可能会想到 LeetCode、想到面试、想到那些让人头疼的动态规划。
但我想说的是:算法不是用来刷题的,是用来训练你的思维方式的。
当你面对一个复杂的业务问题时,你的脑子里会自动浮现出"这是个图遍历问题""这需要用堆来优化""这可以用动态规划来拆解"。这种直觉,不是天生的,是练出来的。
我的建议:
- 至少刷 200 道 LeetCode(Medium 为主,Hard 适量)
- 重点掌握:数组、链表、树、图、哈希表、堆、动态规划、回溯
- 不要只追求 AC:每道题都要问自己"还有没有更优的解法""时间复杂度能不能再降"
熟练掌握几门语言:深度比广度重要
"我该学 Python 还是 Java?Go 有没有前途?Rust 要不要学?"
我的建议是:先把一门语言学透,再去碰其他的。
什么叫"学透"?不是会写 Hello World,而是:
- 知道它的内存模型
- 知道它的并发机制
- 知道它的生态系统(常用库、框架、工具链)
- 能用它从零搭建一个完整的项目
对于你来说,考虑到机械背景和可能的发展方向,我推荐的学习顺序是:
- Python:入门快、生态好、AI/数据分析/机器人都用得上
- C/C++:机器人、游戏引擎、嵌入式的主力语言,性能敏感场景必备
- Java/Go:后端开发的主力语言,工业界用得最多
- C#:如果你想做 Unity 游戏开发
- JavaScript/TypeScript:如果你想做前端或全栈
特别说一下 C++:如果你想做机器人或游戏,C++ 是绑不开的。ROS 的核心是 C++,Unreal Engine 是 C++,大部分高性能计算库是 C++。这门语言学起来痛苦,但学会了受益终身。
Linux + Git + Bash:程序员的"基础设施"
这三样东西,很多学校不教,但工作中天天用。
Linux:
- 学会基本的命令行操作(
ls,cd,grep,find,awk,sed) - 学会用
vim或nano编辑文件(别一上来就依赖 IDE) - 学会看日志、查进程、管权限
- 推荐:在自己的电脑上装一个 Ubuntu 虚拟机,或者直接用 WSL
Git:
- 不只是
git add,git commit,git push - 要学会
git branch,git merge,git rebase,git cherry-pick - 要学会处理冲突、回滚代码、查看历史
- 推荐:去 GitHub 上参与一个开源项目,哪怕只是改个文档
Bash:
- 学会写简单的 shell 脚本
- 学会用管道(
|)组合命令 - 这会让你的效率提升 10 倍
动手搭一个个人网站
这不是作业,是给自己的礼物。
一个个人网站,能让你:
- 理解 HTTP、DNS、域名、证书这些"网络基础"
- 理解 Nginx、MySQL、Redis 这些"后端基础"
- 有一个展示自己作品的地方
- 有一个写技术博客的平台
最简单的方案:
# 经典的 LNMP 栈(Linux + Nginx + MySQL + PHP/Python)
# 或者更现代的方案:
# - 静态博客:Hugo / Hexo / Jekyll + GitHub Pages
# - 动态网站:Flask / Django / Express + 云服务器
别小看这个过程。当你第一次把自己的网站部署到公网、用自己的域名访问的时候,那种成就感,是刷 100 道 LeetCode 都换不来的。
三、赶潮流:AI 时代,你不能装作看不见
LLM:不是"会不会用",是"用得好不好"
2026 年了,如果你还没用过 ChatGPT、Claude、Gemini,那你真的需要赶紧补课了。
但"用过"和"用得好"是两回事。
初级用法:把它当搜索引擎——"Python 怎么读文件""Java 怎么排序"
中级用法:把它当结对编程伙伴——"帮我 review 这段代码""这个 bug 可能是什么原因"
高级用法:把它当思维工具——"帮我设计一个 XXX 系统的架构""这个需求有哪些边界情况需要考虑"
我的建议:
- 学会写好 Prompt:清晰的上下文 + 具体的要求 + 期望的输出格式
- 学会验证输出:LLM 会"一本正经地胡说八道",永远要自己验证
- 学会迭代对话:不要期望一次就得到完美答案,要学会追问、纠正、引导
AI Agent:下一个风口
如果说 LLM 是"会说话的工具",那 AI Agent 就是"会做事的助手"。
简单来说,AI Agent = LLM + 工具调用 + 记忆 + 规划能力。
它能:
- 自动搜索信息、整理报告
- 自动写代码、跑测试、修 bug
- 自动预订机票、安排日程
这个领域还在快速发展,但有几个概念你需要知道:
- Function Calling / Tool Use:让 LLM 调用外部工具
- RAG(Retrieval Augmented Generation):让 LLM 基于你的私有数据回答问题
- Multi-Agent:多个 Agent 协作完成复杂任务
推荐了解的项目:LangChain、AutoGPT、CrewAI、OpenAI Assistants API
Vibe Coding:用自然语言写代码
这是最近很火的一个概念——用自然语言描述你想要什么,让 AI 帮你生成代码。
Cursor、GitHub Copilot、Windsurf 这些工具,已经可以做到:
- 你描述需求,它生成代码
- 你指出问题,它自动修复
- 你给出反馈,它持续迭代
这不是"程序员要失业了",而是"程序员的工作方式要变了"。
未来的程序员,可能更像是"代码的审稿人"而不是"代码的作者"。你需要的能力是:
- 能看懂 AI 生成的代码(所以基础还是要打好)
- 能判断代码的质量(所以经验还是要积累)
- 能引导 AI 往正确的方向走(所以沟通能力很重要)
四、写代码之外:那些没人教但很重要的事
写技术博客:最好的学习方式
费曼说过:"如果你不能简单地解释一件事,说明你还没真正理解它。"
写博客,就是逼自己把学到的东西"讲清楚"。
- 不需要多高深,记录你解决的每一个 bug 都是好内容
- 不需要多完美,写得不好就改,改着改着就好了
- 不需要多频繁,一周一篇、两周一篇都行,关键是坚持
我从 2002 年开始写技术博客,到现在二十多年了。这些博客帮我:
- 整理了自己的知识体系
- 结识了很多同行朋友
- 在面试中成为加分项
- 最后还出了一本书
参与开源:最好的简历
与其在简历上写"熟练掌握 XXX",不如放一个 GitHub 链接,让面试官自己看。
参与开源不需要一上来就贡献核心代码,可以从:
- 改文档、翻译
- 提 issue、报 bug
- 写测试、补用例
- 回答社区问题
开始。重要的是参与进去,让别人看到你的代码、你的思考、你的沟通方式。
软技能:比你想象的重要
技术能力决定你能不能入行,软技能决定你能走多远。
- 沟通能力:能把技术问题讲给非技术人员听
- 协作能力:能和不同背景的人一起完成项目
- 学习能力:能快速上手新技术、新领域
- 抗压能力:能在 deadline 前保持冷静
这些能力,学校不教,但工作中天天考。
给你的 Checklist
读完这篇文章,如果你只记住一件事,那就是:研究生阶段是你最宝贵的"试错期",别浪费了。
如果你愿意多记几件事,这里有一份 checklist:
方向探索
- [ ] 和导师深入聊一次,了解实验室的研究方向和项目机会
- [ ] 找至少一份实习,体验工业界的工作方式
- [ ] 尝试至少两个不同的技术方向,找到自己的兴趣点
- [ ] 如果对机器人感兴趣:完成 ROS 官方教程,跑通一个 SLAM demo
- [ ] 如果对游戏感兴趣:用 Unity/Unreal 做一个完整的小游戏
基础技能
- [ ] 刷完 200 道 LeetCode(Medium 为主)
- [ ] 精通 Python,熟悉 C++(机器人/游戏方向必备)
- [ ] 熟练使用 Linux 命令行和 Git
- [ ] 搭建一个自己的个人网站/博客
- [ ] 学习一个专业领域的框架(ROS / Unity / Unreal)
AI 时代
- [ ] 熟练使用至少一个 AI 编程助手(Cursor / Copilot)
- [ ] 了解 LLM 的基本原理和 Prompt Engineering
- [ ] 尝试搭建一个简单的 AI Agent 应用
个人品牌
- [ ] 开始写技术博客(至少每月一篇)
- [ ] 在 GitHub 上有活跃的贡献记录
- [ ] 建立自己的 LinkedIn / 技术社区 profile
最后
我知道,站在研究生的起点,你可能会感到迷茫、焦虑、不知所措。
这很正常。
我刚入行的时候也是这样。那时候没有 Stack Overflow,没有 GitHub,没有 ChatGPT,遇到问题只能翻书、问同事、自己死磕。
但回头看,那些迷茫的时光,恰恰是成长最快的时光。
所以,别怕迷茫,别怕犯错,别怕走弯路。
只要你在走,就比站着不动强。
祝你在这个行业里,找到自己的位置,写出自己的代码,活出自己的精彩。
有任何问题,随时来找我聊。
扩展阅读
通用技能
- The Missing Semester of Your CS Education - MIT 的"CS 教育缺失的一课",讲 Linux、Git、Vim 等工具
- Teach Yourself Programming in Ten Years - Peter Norvig 的经典文章
- How to be a Programmer - 一份开源的程序员指南
- Prompt Engineering Guide - Prompt 工程入门指南
- Build Your Own X - 通过造轮子学习技术原理
机器人方向
- ROS 官方教程 - 机器人操作系统入门
- Coursera: Modern Robotics - 西北大学的机器人学课程
- 机器人学导论(Craig) - 经典教材
- 视觉 SLAM 十四讲 - 国内 SLAM 入门经典
- Awesome Robotics - 机器人学习资源汇总
游戏开发方向
- Unity Learn - Unity 官方学习平台
- Unreal Engine 官方文档 - 虚幻引擎学习资源
- Game Programming Patterns - 游戏编程模式(免费在线书)
- 游戏引擎架构(Jason Gregory) - 进阶必读
- Game Dev Resources - 游戏开发工具和资源汇总
本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。