她在计算机科学与技术和软件工程之间纠结了一个星期。问了班主任,班主任说「都差不多」。问了在深圳做开发的表哥,表哥也说「没区别」。问了网上的咨询师,一堆人吵成一团——有人说计科是正统软工是水货,也有人说软工更实用计科太理论。
其实很多学生和家长都搞不清计算机科学与技术和软件工程到底有哪些区别,感觉这两个专业很像,设置的课程高度重叠,毕业后的就业出路也雷同,但为什么会开设这样两个很像的专业?软件工程为什么就比计科的学费高不少?是软件工程更好吗?
其实,如果「是想去互联网公司写代码,这两个专业真的选哪个都一样。但今天我想给大家讲清楚,为什么软件工程学费更贵,计科和软件工程到底有什么区别。」
我先说个结论,对开发岗而言,这两个专业真的完全一样
讲真,我在IT行业混了十多年了,从G7到百度,面过的人也上百了。
做Java后端的、写前端的、搞移动端开发的...招人的时候根本不管你是计科还是软工。对开发岗而言,根本不会在意你的专业是计科还是软工。两个字,没区别。
所以,简历上写「计算机科学与技术」或者是「软件工程」,在开发岗面试官眼里其实是一样的。HR筛简历的关键词是「计算机相关专业」,这两个都是最典型的。
你面试的时候,面试官会问你数据结构、算法、操作系统、数据库、项目经验。这些课,两个专业都讲,甚至很多高校里面还是同一个老师给两个专业的学生上这些课。
所以,不会有人因为你专业那一栏写的是「软件工程」而不是「计算机科学与技术」就把你筛掉。同样,也不会有人因为你是计科的就觉得你比软工的强或者差。
开发岗看的是你能不能干活,不看你能不能在简历上写对专业名称。
说白了就这么简单。
但,为什么它们是两个专业?
既然就业一样,那教育部和高校吃饱了撑的设两个专业干嘛?
区别不在结果,在过程。
计科想培养的是「知道计算机是怎么运转」的人,软工想培养的是「知道软件是怎么交付」的人。
我们可以翻翻培养方案,最核心的差异主要集中在个别几门课上。
计科必学计算机组成原理——你得上实验课搭一个CPU架子出来,学数字逻辑设计,要搞清楚寄存器和流水线,而软工不学这个。
计科必学编译原理,要写一个微型编译器,把高级语言翻译成汇编或机器码,软工大概率不用碰这些。
计科可能还要学嵌入式系统、微机原理,软工几乎不涉及。
那软工学什么?软件需求分析——怎么跟客户聊清楚他要什么。软件架构设计——系统怎么分层怎么解耦。软件测试和质量保障——单元测试、集成测试、自动化测试。敏捷开发、项目管理、DevOps——这些东西在计科培养方案里一般是选修或者干脆不讲这么细。
共同课有很多。数据结构、算法、操作系统、计算机网络、数据库、某个编程语言(C/C++/Java/Python)——这些是共同的基础,两个专业都得学,缺了哪个都毕不了业。
换句话说,四年大学,计科和软工大概有60%的课是完全一样的。剩下40%,计科主要是往底层钻(偏硬件一点),软工往工程走(偏软件一点)。
说说钱的事,软工为什么学费更贵?
我朋友的女儿听了我的分析,最后选了计科。
原因之一就是我给她算了一笔账,计科一年学费5000到6000,软工呢?很多学校的示范性软件学院,一年8000到16000。四年下来,差了两三万。
如果是中外合作办学的软件工程,比如某些985的中外合办软工,一年三四万的都有。
凭啥贵?
东西不一样。很多示范性软件学院有专门的实验室、企业导师、项目实训基地,师资和教学资源的投入确实比普通计科要高。还有一部分学校的软工是按「成本分担」收费的,也有专业共建的,就是国家不给全额拨款,学校和企业联合办学,学校自己定价。
但贵出来的这部分,换来的是什么?
硬件条件好一点、项目实训多一点、可能大三大四有企业合作课程。
对就业有加分吗?
说实话,按我自己面人的经验来说,没有!面试官根本不关心你上过企业合作课还是自己自学的,他只看你会不会写代码,能不能把算法题做对,项目经验有没有料。
所以你交的那多出来的一两万学费,对你找工作的帮助,大概等于零。
当然,如果你是冲着那些额外的实训资源和项目经历去的,而且你确定自己需要在那个环境里被推着走,那也值。但如果你自己能折腾、能自学,这笔钱完全是多余的,你还不如省下这笔钱买台好的电脑。
到底该选哪个专业?
这个问题我每年都会被问到,我的答案一直没变:
第一,先看你以后想干什么。
如果是想去华为海思做芯片设计、去大厂搞AI算法、去科研院所搞底层系统,首选计科。硬件课、底层理论课就是你的地基,没这个地基你后面很难爬上去。
想去互联网公司做后端开发、前端开发、全栈工程师、移动端开发,其实选哪个都一样。计科行,软工也行,四年后HR看的是你的项目和技术栈,不是你的专业名称。
想去银行、国企做信息化,还是选哪个都一样。甚至你选计算机科学与技术可能更占便宜,因为国企HR有时候对「软件工程」这个专业名称不太熟,看到「计算机科学与技术」更顺眼。这是事实,不是偏见。
第二,看你的分数能去哪个学校的哪个专业。
软工在很多学校的录取分比计科低5到15分。你如果分数卡在边缘,选软工可能能上一档学校。这个时候,学校档次比专业名称重要得多,一个985的软工和一个211的计科,肯定闭眼选985。
第三,看你是不是那种能自学的料。
软工的课程偏「应用导向」,意思是你上课学的东西离企业实际用的更近。如果你是需要别人推着走的类型,软工可能更适合你,因为实训多、项目多、有人带着你做。
计科的课程更偏「原理导向」,学的底层更多一点,应用类的没有软工多。好处是基础扎实后面什么都不怕,坏处是你可能大三了还不知道怎么搭一个完整的前后端项目。所以选计科的人,自学能力一定要跟得上,课外的项目经历必须自己补。
我个人是比较偏爱计科的,因为我自己就是这个专业毕业的,嘻嘻。底层原理这种东西,越到后面越值钱。当你理解了操作系统怎么调度进程、CPU怎么执行指令、编译器怎么优化代码,这些知识不会像框架那样两年换一代,它们是长效资产。
但我也得说实话,如果你四年只学课内的东西,没有任何课外项目,那计科毕业可能不如软工毕业的好找工作。因为软工至少简历上有实训项目,你计科简历上只有成绩单。
两类人,两种选法
说到底,到底该选计科还是选软工,取决于你是哪种人。
第一种,如果你对计算机是怎么工作的更感兴趣,你想知道硬盘里的0和1怎么变成了屏幕上的网页,你想搞清楚操作系统、编译器、计算机网络的底层原理,你可能以后想读研、做研究、搞AI、搞底层系统。
那你应该选计科,因为软工不会教你这些,它的课程体系就不是为这个设计的。
第二种,如果你对用计算机做东西更感兴趣,你想早点上手写项目、搭网站、做App,你的目标是毕业进互联网公司做开发,拿高薪;你对编译器、计算机组成原理这些东西没太大热情,甚至一看到电路图就头大。
那你选软工会更省力。因为你不用花时间去学你以后大概率用不上的硬件课和底层理论课,多出来的时间可以深入技术栈、积累项目经验。
但不管你选哪个,记住一件事:开发岗不挑专业,只挑能力。专业名称只能管你拿到面试机会,拿到之后,能不能过,全看你自己的活。
最后说一句我在山科经常跟学生讲的。
「有些东西,刚开始的时候你觉得是天大的事,几年后回头看,它可能连个屁都不是。」
专业名称就是典型的这种东西。很多学生在填志愿的时候为了「计算机科学与技术」还是「软件工程」纠结到失眠。但四年以后,你面了哪家公司、拿了几个offer、第一份工作的平台和方向,才是真正塑造你职业生涯的东西。
所以,不必有选择恐惧症,这两个都是好专业,选完就别回头看了。把纠结的时间省下来,暑假学个Java或者Python,比什么都强。
好途工坊· 好途相伴,前程无忧
夜雨聆风