业界科研相对而言不太需要)。
大学教授的主要任务就是科研,其次是承接一些重要项目以及教学。在刚毕业入职时基本都是「助理教授」/「青年教师」,需要在最长六年的时间内在科研、国家项目、博士生培养、教学、社会服务多个方面达到学校的考核要求,成为「副教授」的终身教职,俗称tenure或「上岸」。这个过程是比较辛苦和艰辛的,在某些大学里更是招募一大群助理教授内卷争夺上岸席位。
学术对于工作的创新性要求很高,你永远需要追逐在某一个领域的技术和科学发展的前沿,提出全新的方法、做出前所未有的工作。换言之,学术研究的过程里永远在探索未知,没有人告诉你该怎么做,也没有任何人可以保证现在采取的方法路径是否能够有成果。这是学术迷人却又痛苦的地方。
所以,如果想要走学术这条道路,必须有强烈的intellectualinterest,对于某类问题的研究很感兴趣;百折不挠,不会轻易被失败的探索打倒;能够忍受学术天然的judge属性,成天被审稿人指指点点、质疑、不理解;善于系统性规划时间,并能够对于某一个特定问题深入且不懈的挖掘探索。
这条路的优势在于,如果你对于自己研究的内容拥有浓厚的兴趣,那么相较于打工而言,研究全新的技术、拓展知识边界时工作的意义感会更强,而且学术界的一个重要好处是每个人都可以完全获得自己工作的credit(可以理解为著作权,这一点在公司中则非常不同)。
此外,教职相对于工业界大厂而言更为稳定、好的大学往往还能解决住房和子女教育问题(上岸后)。
劣势在于基本收入相对而言较为清贫,相比业界的收入要少很多,想在大城市维持生活基本都要靠项目等副业(而这件事高度取决于学校资源的好坏);其次,科研教学社工等压力非常非常大,而且学术岗的坑位相对而言比较少、竞争激烈,且存在不能上岸的风险。
大厂打工
走上学术之路的毕竟还是少数,绝大多数人可能还是想要进入大厂(如腾讯、阿里、字节、微软等)成为程序员。
这里需要首先说的是,「码农」或「程序员」的称呼是一种太过概括的统称,其内部具体的细分工作性质仍然有很多不同,例如「开发岗」要做的事情就是开发大型的软件系统、服务维护、成套的解决方案;「研发岗」负责研发新的技术路径;「安全岗」负责的就是筛查网络和系统漏洞,应对潜在威胁;「算法岗」负责优化整个公司产品的服务逻辑、推荐系统、匹配调度等;「前端」负责设计交互页面、优化用户体验;「后端」则涉及到应用程序的实际逻辑,需要处理并发、数据库维护等等问题。
在大厂工业界打工,其实说白了要的就是一个「业务熟练」。每一个具体的岗位会有不同的知识和技术的侧重,其实日常涉及到的东西也不算太多,但是作为一名搬砖的码农一定要做到足够熟练。
如果能够稍微多一些更深层的理解(例如作为算法岗的人,除了会python调包调参之外,懂得很多传统机器学习的算法以及整个「机器学习」的底层逻辑),那么就会相对有竞争力的多,其在岗位上的不可替代性也就更强。如果学习能力很强,及时丰富自己的知识和技能树,那么也会更吃香一些。
因此,大厂在招人时,往往也会格外关注基本技术的熟练程度和贯穿这些技术之上的理解深刻性。
在目前互联网整体旺盛的生态下,大厂的薪资还是可观的,一个能力基本过关的985计算机专业的学生,本科应届生拿到一万到两万的月薪不是难事,硕士和博士毕业生也常见能够拿到几十万的年薪。随着在公司工作年数的增加,资历更深的员工如果可以上升到主管的位置,年薪基本上也有接近翻番的提升空间。
当然,缺点也大量存在,一方面是工作压力同样很大,且目前的生态中相当多的公司存在比较严重的加班现象;二是当前形势下,无论是大到某一个产业的公司、还是小到每个人具体所在的职位,市场和人事都存在不稳定性,没有学术的编制那么「铁饭碗」。
有关「程序员35岁被榨干后失业」这一说法,笔者自己作为一名博士生,其实也没有什么发言权。多方打听之后大家的共识观点是,近期大厂的裁员潮主要来自互联网此前过度狂热、垄断内卷的降温,但从其客观体量上来说,其实并非每一个程序员到35岁都要面临「卸磨杀驴」的处境(事实上,任何一个大厂里都有相当数量的35岁以上的员工)。对个体而言,掌握真正的核心技术、提升自己整体的专业能力、永远学习新知识新技术,就是能做到的最好的事情了。
对学弟学妹的职业规划建议
对于一名高中生或本科生而言,如果想要走上计算机专业的道路,应该准备些什么?又该在每个阶段做些什么?
首先,对于没有学过编程、中学也没有参加过编程竞赛的同学而言,我认为在本科初期以稳定持续的频率(例如每天几道