前段时间收到过来自本科母校的对于高年级学长的几个问题,个人感觉问得挺好。这里放出来:
-
对于一个计科的大学生来说毕业时应具备哪些专业技能,达到一个怎样的水平?
计算机专业的本科毕业生,我认为应当已经具备极强的学习和工程实践能力。举两个方面为例:
- 对于编程来说,至少熟练掌握一门语言,并具备能够在极短时间内快速学习并切换到另一种语言的能力,即极强的语言学习能力。也就是说,『会十几门编程语言』并不是什么值得骄傲的事情,这很普通。
- 对于实际开发来说,在熟练掌握的语言上,还至少需要熟练使用这门语言常用的、在自己研究或兴趣领域中常用的框架:以Python和机器学习为例,至少应当对 numpy, scikit-learn, tensorflow 等 相当熟悉;以 Python 和后端开发为例,至少应当对 flask 或 django 及其相关工具链非常熟悉;以 JavaScript 和前端开发为例,至少应当能够熟练使用 css 切页面,熟练使用 jquery 书写各种炫酷特效,更进一步者则应当对 es6+ 语法非常熟悉,对当前 react/angular/vue 等具有前端工程化组件化思想的框架至少熟悉其中之一,对相关工具链如 webpack/babel 等非常熟练。
-
就自身而言,你对之后的学习或工作的道路有什么规划吗?
- 这个问题常见,本科毕业后我们都面临这样三个选择:1. 直接就业 2. 国内深造 3. 出国留学
- 就我自己而言,其实三条道路都走过,我毕业后去了一家公司实习了三个月,后国内研究生开学后我离职开始读研,读研一个月后我又主动休学现在正在国外留学。就这三条路来说,其实第一条是非常有诱惑的,但时间长了之后就很容易发现学历存在的瓶颈,而第二、三条路本质上都是一样,第二条路的好处在于能够让你在这个专业方向上积累更多身边的资源,第三条路的好处则在于能够让你更加了解这个世界是怎样运作的,思维便不再局限于国内自身。所以我个人规划会是继续在国外将研究生读完,有机会的话试试申请美国的phd,若到时候我已经没有读phd的想法,就直接多薅一些资本主义羊毛,再回国工作或创业。你可能会问为什么不考虑久留在国外,是因为我个人认为:祖国大法好。
-
经过一段时间的学习,你认为计科专业的学生应当重点掌握哪些课程的知识?
数据结构、操作系统、编译原理、数据库、(也许可以多了解组成原理)原因如下:
- 数据结构帮助写出更加具有逻辑性和结构性的代码,而不是外行人在那里糊一堆垃圾代码
- 操作系统帮助理解机器底层运作机制,进而写出更好更快的代码
- 编译原理是唯一一门能够将计算机专业学生和其他专业最终转行从事计算机专业的学生的区分开来的课程,这部分知识对日后深入阅读一些源码是非常有用的,比如前端开发的babel框架
- 数据库就不用说了,一切数据都需要持久化,虽然课上我们学的是 SQL ,但是自学一些 NoSQL 也是很有必要的,推荐 mongodb
- 组成原理能够详细了解机器硬件的基本构造,例如缓存之于CPU的三级结构是其实受限于制造成本,是妥协的艺术;又例如在编写并行执行的代码时,发生伪共享是由于不同的CPU核心在使用同一个缓存行导致,从而拖慢运行速度;组成原理的知识有时候看似没有用处,但对日后的发展是有着潜移默化的作用的。
-
如果想要攻读本专业研究生,需要注重自己哪些方面的知识储备?
四个字:多写代码。我见过很多读到研究生的学生虽然考试能够考得很好,但是却连一句 helloworld 都写不出来,这点非常糟糕。你可能不知道自己应该去写些什么,这点很简单,多逛技术社区,比如 github/hacker news 之类的网站;如果还是不知道能干什么,就试着出去找一找实习,看看企业都需要什么,这样你就知道自己该干什么了。
-
你现在对计科这个专业有什么看法吗?及对计科专业学弟学妹们有什么建议吗?
总的来说,计算机专业是一门落实到实践的学科,没有实践,什么事都玩不成,永远只是脑子里的东西。如果你以后想从事这个行业,那么就多积累一些专业知识,不仅仅是深度,广度也是需要的。另外,这个行业也不仅仅只是写代码,但你如果一点代码都不写,最好趁早考虑以后的事情。 分享一个我自己身边的故事,我有一个在金融行业工作的朋友,有一次他跟我聊到:『你的职业,在我们眼中,是超级VIP客户』,我回到『为啥』,他解释说:『得当上帝供着的,稳定啊,收入还高,工作好找,上哪儿都饿不着,一般情况不会欠钱不还的,所以你们贷款我们的政策是:利息最低,放的钱最多,时间还最长。你们的职业我们统称为「高企行业」』。由此可见一斑。