准大三,计算机专业如何确定工作方向?

马上大三,目前在成都互联网公司做实习,主要的工作是python爬虫。 熟悉linux操作,写过正则表达式引擎,简单的虚拟机,数据库存储引擎,正在写编译器。对编译原理非常感兴趣,但是看了一下网上的招聘,编译器方面的工作比较少,个人不太喜欢前端和安卓,iOS. 求建议如果确定自己的方向。
关注者
486
被浏览
23170
编译器研发,或者其它与编译原理相关的职位,例如做静态代码分析、信息安全/逆向工程之类的,虽然职位的数量是不太多,但会跟你竞争的靠谱的人也不多,总体来看是一个可以过得了日子的方向,经济上不会很富有也不会很穷。

如果有爱的话就继续沿着编译的方向走下去,能参与相关工作的话得到的最大回报就是对编译的爱有了用武之处的满足感。
如果对生活中别的东西的爱比对编译的爱更多,那就去做您觉得更爱的事情。

(同时也要有心理准备,燃烧自己的爱也可以是很可怕的事,也可能会损失许多东西。是要短之间燃烧出一点闪光,还是慢慢烧到熊熊大火,有许多值得权衡的选择——但在当时未必会意识到那就是一种选择。诶。)

我现在从事JIT编译器的研发工作。开始对编译原理感兴趣大概是大二的时候,而真正停止徘徊、开始着重学习编译原理则是大三。那段时间对我来说真是人生的分歧点…(省略人生经历废话)…我的经历可能过于曲折不适合一般参考,但至少现在我回过头看大三的“颓废”并非一无所获,当时鼓捣的东西收获的经验现在能用上,还是有那么一点欣慰的。
要看黑历史的来这里:你对自己玩的游戏研究到了什么程度? - RednaxelaFX 的回答

要在从学校出来的时候就有竞争力,我觉得从三个方面着手是很有用的:
  1. 打好扎实的基础,该掌握的基础概念、算法、数据结构之类的都好好掌握了。看书,做习题。
  2. 自己做些小项目来在实践中更扎实的掌握理论,并且最好开源出来让大家能看到。题主显然已经在这个正确的方向上了。之前就看到过题主做的小虚拟机和编译器,这是非常好的开始。唯一要注意的是做小项目之后要不忘初心,实践出真知是好的,但切莫实践了小项目就以为掌握了整个领域的全貌。
  3. 参与现有的开源项目,与项目的活跃参与者打好关系。我能参与到现在的工作,恐怕很离不开我在OpenJDK项目中的参与。“参与”不一定是直接贡献代码,详细的报告bug以及说明自己做过的分析、积极在邮件列表中提问和回答问题也是一种很好的参与方式。

我觉得这三点是相互增益的,特别是写自己的小项目与参与现有的开源大项目,前者有助于理解领域里的基础知识,后者则有利于了解领域中的先进或实用知识,反过来可以让自己的小项目变得更先进。
Constellation大大的lv5 JavaScript引擎(Constellation/iv · GitHub)就是这两者间相互反馈的一个很励志的正面故事。这个JS引擎见证了Constellation大大的学习历程,从一个非常小、非常简单、完全按照ECMAScript 5规范直观实现的小东西,进化到了颇完整、有一定水平的、现代的实现。他不断的在自己的小项目中实践,感悟各种道理,同时也不断从现有的高性能JavaScript引擎学习,吸取营养,形成了很好的反馈。
关于lv5的简介请跳传送门:[链接帖] 各JavaScript引擎的简介,及相关资料/博客收集帖