一年一度分流季,如今再次回看大一在知乎收藏的一系列计算机专业选择的问答,感慨万千。《文心雕龙》有言:“驭文之首术,谋篇之大端”,值得深思。在看到有关计算机各种讨论的热度之下,思考再三,作此篇。

0. Preface

什么是计算机科学与技术?为什么国家需要计算机科学与技术这个专业?这个专业的出路是什么?下一个计算机的风口是什么?计算机未来还会热门吗?

在2年前,我做专业选择的时候,也遇见了这些问题。2年以后,当我以“过来人”的身份,向学弟学妹们介绍这个专业时,一时也难以下笔,一来担心自己能力不足,目光短浅,带来了各种误导;二来本科阶段的专业选择或极大概率影响着一个人的一生,误了他人前程。

所以,在本文,我尽量以一个称述者的身份来讲一讲我两年来在计算机专业的经历、所思所想,希望读者能有所收获。所分享的内容,也仅代表我的看法/观点,不代表绝对理论。全文难免有主观倾向,如果有不合适之处,可以评论/联系我,我会尽快更改。

1. Our Environment

这是一个繁荣和危机并存的时代:中国经济稳中向好发展,世界也正经历百年未有之变局。

每年的春招秋招都是计算机行业发展的晴雨表,从去年的腾讯白菜40w高薪炒上了热搜,再到前段时间各大互联网大厂中概股集体跳水,因疫情的重来一边裁员的同时一边也锁HC,至今日总裁刘炽平发文:“内部人力投入将从边缘业务调整至核心业务,在行业发生根本性变化时积极拥抱变化”。

大环境下,如今的互联网已远比不上10年前的所谓的“风口浪尖上,猪都能飞起来”,对此知乎大V霍华德的评价是:”现在互联网从增量时代进入存量时代。大家都没有办法把蛋糕做大了,就只能相互抢对方的蛋糕了“。

软件工程领域的圣经《The Mythical Man-Month》指出,以大量人员和较短的时间,并不能缩短软件的开发进度,用“人月”来衡量工作规模的大小是危险的。正因人数≠效率,当下各大厂调整组织结构的途径也非常直白——留下最卷的一批人。这个环境下,只在一个小池子里挖人才,互联网起薪也就显得非常高。

如果只是为了高薪/好就业而盲目选择计算机,那也只能说进入了幸存者偏差。实际上,一个客观的事实便是,我校毕业的学生的平均薪资,远远达不到知乎、脉脉的平均水平。优秀的同学能够各家大厂offer拿到手软,平时虚度光阴的学生,尽管选择了计算机,最后出路也往往远没有大家想的那么好。这个行业的薪资分布不是正态分布而是幂律化分布,只有最优秀的一小批人能分到最多的蛋糕,同行业未来发展的方差会非常大。如果你未来会选择入行,请努力成为最前面的那一批人。

对此,我认为选择这个专业的理由应是“你足够热爱”,而不应该是“这个专业很火”。在大一阶段学习的C语言即可判断,如果你喜欢这种通过一个个流程控制(状态机)构建整个秩序世界的流程,并对这个专业有着些许兴趣,那不妨接着阅读后文。

2. About CES

关于我校的计算机工程与科学学院,当下一共开设了4个专业,计算机科学与技术,智能科学与技术,网络空间安全和人工智能,以下分别简称计科,智科,网安,AI。

事实上这些专业之间,在本科阶段所学的专业课体现来看,差距并不会有那么大,至少大部分基础课程如数据结构、计算机组成原理、操作系统、计算机网络(即考研408学科)等都是一视同仁的。对应专业的课程会在学习内容上有所侧重,具体细节参考2019级上海大学本科专业培养方案2020级上海大学本科专业培养方案

大多数情况下,跨专业的同学日常学术交流也不会有明显的隔阂,因为你在未来工作中用到的技能,和你当前所选的专业关联未必会那么紧密。具体落实到你所学的方向(技术栈)其实与专业关系并没有那么大,比如你选择了计算机科学与技术依旧能去做人工智能方向的学习,选择了AI也可以研究网络安全相关的内容。但是细致来看:

  • 计算机科学与技术:可以理解为计算机行业的理工大类,属于计算机中的基础学科,软硬都有,可选发展方向范围很广,具体研究方向完全取决于你的兴趣。
  • 智能科学与技术:需要学习一些信号处理、矩阵代数、脑认知、运筹相关的课程,跨度较大。
  • 网络空间安全:在我那年新开的专业,学习范围也不仅仅局限于所谓的“网络安全”,实际上也会区分渗透,逆向,密码学等等。
  • 人工智能:所研究方向和专业课安排也与智科接近,包括数理逻辑、数据挖掘、脑认知等,建议数学较好的同学选择,需要非常好的线代与概率论基础,同时这也是数学系和通信方向的同学“抢饭碗”的方向之一。

具体专业孰优孰劣没有绝对答案。就个人来看,新专业的教学计划还需要时间沉淀,10周的短学期囫囵吞枣,即使拿了4.0也不见得你真的学会了这门课。大环境下,从事AI相关的大部分需要通过读研提升自己,名校+顶会可以成为真正的offer收割机。

切记学校教什么≠我要学什么,你要明确的是你自己未来在行业内的竞争力到底在哪里。如今大型互联网公司的面试内容,超过一半都不是学校能够教会你的,但是老师没有教并不能成为你不会的理由。

3. The future

进厂、考公、保研、考研、出国还是家里蹲?

实际上每条路的划分,选择上也会有所不同。

进厂:如果没有读研的打算,那么不太建议走算法方向,主要方向包括前端、客户端、后端、测试、运维、安全等。在大三前,务必修完专业课,不要把过多课程留到大四。尽早确定好前面试所用的技术栈,找网课(最好是国外名校公开课、书、博客等自学,求职前期努力刷leetcode背好面经,大三暑假(或大二结束的寒假)尽早去互联网大厂实习,多积累实习经历项目经历。

  • 实习方面,最好找学长学姐或者是网上的内推,更加了解部门的工作环境、加班情况等。实习的首要目的在于为简历镀金,不建议过度在意工资多与少,关键在于学到什么。
  • 在你拿着实习经历找工作的时候,你的实习公司名字对于面试官而言,只存在听过/没听过两种情况。如果目标是为了大厂,不是特别建议去外包公司和传统行业公司(即老本行不是互联网的公司),或是接老师的“私活”也务必辨别项目的好坏,参考上海交通大学生存指南

考公:主要取决于省市、单位、层级,具体细节并不了解。

保研:每年具体政策都会发生变化,参考上海大学计算机学院2022年推荐应届优秀本科毕业生免试攻读硕士学位研究生工作实施方案上海大学计算机学院2021年推荐免试攻读硕士学位研究生工作实施方案,政策的细节每年都在变化,但是需要明确的是自己需要在哪些地方拿到加分点。

  • 注意“学生与直系亲属或学历、职称、职务明显高于本人者合作的科研成果、竞赛奖项等仅作为参考,不纳入学生本人推免遴选综合评价成绩计算体系。”,意味着和导师合作发表论文、找研究生博士生联合竞赛等路线行不通。
  • 另一方面,上海大学有很多ACM牛人 = 上海大学ACM很强 ≠ 你来了上海大学ACM就一定会很强,CTF、ASC等同理,一些比赛会花费大量的时间投入,如果发现不合适也请及时放弃沉没成本,花时间刷刷leetcode比无意义浪费时间在竞赛要好的多。
  • 体育和入伍服兵役加分有则有无,除此之外需要特别重视绩点。志愿者方面的加分19年和20年不一样,反正证多不压身,这部分加分很容易,保研的同学尽量刷满。

考研:对于绩点不高同学,想圆国内名校梦的最后手段,也是较多数暂时不愿工作同学的选择。考研准备时间从大三下学期开始,主要为一个信息差,选择大于努力。备考流程,择校等,看个人情况,这里就不细讲。

出国:特别重视GPA,而且需要尽快确定去的国家,考雅思还是托福,是否需要GRE等。家境困难的同学可以尝试争取助教免学费。此外努力争取参加国际知名的比赛,争取发表一些学术成果,同时也可以积攒一些外企实习经验,在申请时都是非常加分的。至于出国读研结束是留下还是回国,最终还是根据个人情况而定。

家里蹲:欢迎来到HM University

4. Life

学院的生活是什么样的?

  1. 19级、20级寝室都分在新世纪,后续住宿情况未知,看学校安排。
  2. 部分课已经删掉了研讨,不过报告还是有不少,有的老师对报告的要求也很多,实际上大部分还是保研或者出国的同学在卷。
  3. 学院的学习资料,课本等,在各大群聊也可见,也可以参考SHU计算机学院资料整理
  4. 期末考试很多历年试卷远不如大一详细,数量较少且不全,需要一定的备考技巧。
  5. 上课方面,大部分女生坐前排较多,能不能脱单自凭本事。
  6. 班级活动上,因为我院上课都是自选的,大家生活轨迹都比较分散,或聚集在自己的小圈子内,自认为班级凝聚感并没有那么强,更多的是在里边催青年大学习(bushi。
  7. 大多数课程包括实验课,都会在东区上,还是比较远的,冬天早八东区很痛苦,建议学个骑车方便些。
  8. ACM和网安实验室分别在计算机大楼7楼和6楼,目前是对特定学生开放的。团队合作的竞赛务必找好志同道合,愿意投入时间且能力强(不体现在绩点)的同学。
  9. 搞AI的同学争取尽早联系导师,尝试借到GPU的服务器,实力强的同学也可以尝试提前联系导师进研究生课题组。希望科研保研加分的同学需划清利益边界,尽可能保证自己是一作。

5. On the way

如果你已经决定来计算机学院,以下是一些提前学习的建议可供参考

  1. 重视英语!重视英语!重视英语!
    • 学会使用Google,学会阅读英文资料。
    • 多在Github, Stackoverflow上学习,少看CSDN, 博客园。
  2. 创建一个GitHub账号,并在此上搭建个人的博客,可使用hugo, hexo等框架,具体流程全程跟着Google,这个过程你会学到很多,包括Git,读文档,写配置文件等操作。
  3. 明确学习方向,学好一门新的语言及相关技术,学习过程中记好笔记。
    • 后端:Java, Golang, C++, Rust等,以及Web框架如Springboot,Gin,能力强的同学可以提前了解DB、Redis、MQ、ES等技术;
    • 前端/客户端:JavaScript, TypeScript, Dart, Kotlin, Swift不限,框架包括Vue, React, Angular等,学习Node,以及代理、缓存、网关、隧道等等;
    • 搞AI的可以开始学习Python, matlab之类,以及常见的tensorflow或者是pytorch,努力提升英语水平,开始尝试提升找文献/阅读文献的能力。
  4. 学习Linux包括WSL,Docker使用,强烈推荐现代人学会Docker省去搭建环境的时间。
  5. 提前学习专业课程知识,参考北大信科的CS自学指南,重点学习考研408相关的课程。
  6. 当完成以上后,未来该学什么应该也有大致的方向了,也可以看一下我的计算机学习路线

6. Ending

本文也仅表达的是我个人的观点,希望学弟学妹们不要因为我提及的专业的不足而改变了你的看法,或是因为高薪而盲目下了决定。在专业选择的路上,往往一个决定会极大影响未来你的人生轨迹。

你有着能进计算机学院的成绩,也意味着你有几乎所有专业的选择权,请谨慎选择自己的专业。毕竟最终的专业选择权利还是在你自己,请一定根据自己的兴趣爱好,家庭环境,未来发展等因素做出决定,请记住在这时任何人,包括你的老师、家人、同学也只能提供建议而已。

四年大学生活说长也长,说短也短,在校园里享受着舒适生活的同时,不觉间也已成为温水中的青蛙。

我们需要跳脱学生思维惯性下的分数衡量体系,“请务必牢记:大学四年留给你的是你的人生,在你毕业之时,那一串苍白的分数其实就已经作废了。”


友链:上大计院报考指北

博客链接:https://chasing1020.github.io/