《名校学子谈专业》
软件工程:面向就业的计算机专业
文 / 陈同学
2022-06-08
软件工程的学科建立是希望培养具有扎实的软件基础理论,熟练掌握软件设计、开发、测试、维护技术,具备软件开发组织管理能力的专业人才。

  作者:陈同学,清华大学软件学院软件工程硕士在读。

关于学科本身

  当下社会,手机上的软件已经充斥在我们生活的各个角落,最大程度的改变了人们的生活,包括移动支付、网上购物、社交聊天、娱乐休闲都离不开“软件”,而这些软件的编写、安装、优化正是软件工程专业同学们的看家本领。但是软件工程专业的同学们能做的远不止这些,和软件相关的底层所有工作都离不开软件工程学科人才。举个例子,例如网上购物的淘宝软件,是由软件人编写代码并开发完成,包括交互页面的实现、页面背后的逻辑设计、推荐系统工程决定给哪些人推荐哪些商品、利用银行卡绑定移动支付完成付款并实现对账、保证整个支付流程正确性、保证账户的安全性防止受到不法分子的攻击等等。软件工程人能做到的不仅仅是一个软件中能看到的部分,更多的是其中“看不见”的底层逻辑的设计和实现。

  软件工程专业在国内是一门21世纪新创立的学科,在2001年,全国35所高校一起创立了首批软件学院、软件工程专业,这时软件工程专业与计算机科学与技术专业拆分开,很多院校的软件学院的教师队伍是从计算机学院或计算机专业划分来任职。因此,当下时期,可以发现各个高校的软件学院与计算机学院仍旧过从甚密,公用同一套教师、行政班子,与计算机学科同根同源,但是在学科的设置和重点关注的方向上略有不同。

  软件工程的学科建立是希望培养具有扎实的软件基础理论,熟练掌握软件设计、开发、测试、维护技术,具备软件开发组织管理能力的专业人才,可从事高层次软件研发、管理和软件产品开发项目管理岗位的工作。专业注重培养服务于国家重大的战略需求,培养出一批卓越的软件工程师。当今社会社会对于高素质的软件工程人才需求十分旺盛,软件人才培养的速度和质量均难以满足实际需求,因此,软件工程学科可能仍是未来几十年热门的专业。

学科的知识结构

  1、培养方案

  通常情况下,各院校的培养方案中有校级通识课、专业课程两大类。各院校对通识课的安排不尽相同,但专业课程的设置较为类似。以清华大学软件工程为例,专业课程按照知识深度递增,可分为以下几类:

  基础课:通常在大一一年学完。数学和物理相关的课程更接近在高中已有的数学与物理知识上的拓展,使用微积分、线性代数求解略微复杂一些的数学问题。专业相关的有一些信息科学技术基础、数字电子基础等,用于了解信息技术领域的基础概况,作为软件工程的入门课程。

  ・数学课程:微积分、线性代数、概率论

  ・物理课程:大学物理

  ・专业课程:信息科学技术概论、数字电子技术基础

  核心专业课:课程分布在大二、大三两年。这些课程建立在上一阶段课程的基础上,培养动手能力与应用实践能力,注重在理论的基础上,培养学术研究与应用落地实践的思维。这一阶段的数学课程,如离散数学与图论,也是为了学习计算机类学科常用的符号表达和概念。

  ・数学课程:离散数学与图论

  ・专业课程:软件工程、面向对象程序设计基础、数据结构、计算机组成原理、操作系统、计算机网络、汇编与编译原理、数据库原理

  按细分方向的选修课:这些选修课的内容或是为接触科研前沿做铺垫,或是为了培养学生的应用技能开设的理论课,课上通常同时有本科生和研究生。

  ・学术科研基础课程:机器学习、计算机图形学基础、云服务性能优化、物联网导论

  ・软件应用技能课程:嵌入式系统、模型驱动的软件开发、大数据系统软件

  其中数理基础课和核心专业课程都属于必修内容,而后续的选修课程则与各类细分的专业方向相关。如深度学习领域课程的机器学习、计算机图形学领域的计算机图形学基础课程、系统基础架构领域的云服务性能优化课程、硬件与软件领域的物联网工程课程和嵌入式系统课程。

  2、细分方向

  软件工程内部的细分方向相当之多,未来一般可以分为软件系统领域与其他的学术领域,其中最主干的方向包括:

  ・软件测试:包括软件的形式化验证、软件的自动化测试等领域研究。就业方向也与软件系统的形式化验证有关,如华为操作系统团队,或者相关科研院所。

  ・软件安全:研究对象针对区块链或者软件系统,检验系统的安全可靠性,防止受到攻击,与科普文章经常听到的“黑客”相对抗。当今社会非常缺乏网络安全、信息安全等领域的人才,也是信息时代必不可少的一部分,符合国家战略需求。就业方向从国家信息安全相关的研究院到各个互联网、工业界公司网络安全部门。

  ・基础架构与系统内核:主要研究系统调度、分布式架构,方向俗称的“基础架构”,是针对一个软件系统底层的性能和可靠性的研究,也是近些年各个互联网公司的就业方向中非常吃香的方向,难度和薪酬均高于普通的软件开发人员。

  ・工业系统软件与数据智能软件:主要研究有国产数据库、国产工业场景使用的大数据软件、国产的机械设计制图软件(CAD)等,其中的细分方向包括软件的性能研究、分布式数据库的存储等。国内的软件发展起步较晚,现阶段在尽可能填补软件系统流程中国产软件的空白,该方向是国家发展的重要方向,研究的是工业流程中被“卡脖子”的必不可少的软件。

  ・深度学习与迁移学习:该方向和计算机大类的研究方向重合,研究的方向包括传统的机器学习、深度学习、迁移学习、半监督学习、神经网络等等方向,或者是以上方向和工业场景相结合的交叉方向。

  ・物联网或网络相关:该方向和物联网工程的研究方向重合,包含物联网、智慧城市、射频识别技术等和传感器有关的方向,也包括无人车、无人机等方向,研究对象和硬件关联度较大。

  这几个方向是软件工程学科之下的细分方向中最主要的几个,除了这些方向外,发展出了一些非常新方向,如数据可视化技术、数字货币等随着时代变迁较逐渐衍生出的新兴方向,由于软件工程存在于各个领域,因此有与不同的学科交叉的方向,如车辆、核电、金融等方向,因规模相对较小,在此不再赘述。

  3、交叉学科

  软件工程基本上与所有使用到软件的专业都有交叉,很难总结出交叉学科列表,一个优秀毕业生可以在一段时间的补课后胜任大多数学科的理论研究,只要是需要计算机类、信息技术类人才的各个领域,包括金融、工业界等等,也均可以作为交叉研究方向。

  4、软件工程、计算机科学与技术、物联网工程

  部分院校会在信息学院或者计算机学院下设计算机科学与技术学科、软件工程学科、物联网工程学科。它们都属于计算机类学科,但是在课程设置和培养目标上略有不同,如软件工程设立了更多与软件有关的课程,包含软件系统测试等,偏重于应用实践;计算机更多偏向于学术研究的,包括计算机系统底层体系研究、深度学习、人工智能、操作系统等方向侧重;而物联网工程更偏向于硬件编程开发,或者网络相关的如传感器等,更加侧重区别于软件的“硬件”知识学习。

  在被软件包围的社会中,高中生、家长可能认为软件工程学的是安软件、修电脑,或者觉得不像计算机科学与技术专业,软件工程没有可以学术研究的领域,只有应用。实际上,软件工程不仅可以研究和计算机技术相关的领域,还有很多软件独有的专业领域。软件工程也非常适合于希望未来培养更加偏向于应用技能的同学。

  另外值得提醒的是,很多学校的计算机专业的录取分数线往往高于软件工程专业,但是培养方案和学习课程却非常相似,因此,如果是为了报考录取性价比考虑,也可以考虑软件工程专业。

前景:深造与就业

  根据不同学校的样本,软件工程学科的本科生毕业之后的去向差异性非常大。有的学校的软件工程的学生继续攻读研究生的比例非常高,有的学校依据学院的就业风气,就业的比例非常高,因此,本科生毕业不具备通用的读研比例或就业比例,这样也恰恰说明,软件工程本科毕业的同学完全支持就业的,达到了就业的水平。但是不得不承认的是,大部分情况下学历越高,就业的机会越广,未来的就业发展也越高。以下按照几个方面介绍本科毕业的前景:

  1、本科毕业的方向与路径

  本科毕业的同学很大比例会选择保研、考研等继续升学的方向,但是也有很大比例的同学直接就业。以下根据不同水平的学校介绍未来的方向:

  全国顶尖的软件工程学科

  分类中包括清北、华五、北航、北邮、国科大等科研教学实力都在全国一流的软件工程专业。这些院校的毕业生中,大多数都会选择继续深造,直接就业的比例一般在50%或更低。

  继续深造的去向是出国+国内(保研/考研),在疫情之前各院校出国读研的比例在20%~30%区间,美国、中国香港、新加坡是主要的出国目的地。国内读研的选择受推研政策影响,这一档的学校中,毕业成绩在前50%-60%的学生基本都可以拿到推研资格。只有推研失败或希望选择的专业与本科专业跨度太大时才需要加入考研大军,往往这个分类下,保研比例较低的院校学生会在本科早期就开始准备考研事宜,考研成功率也比较高。

  在研究生阶段,大部分同学会继续选择软件工程方向就读或者转为计算机大类的相关方向,比如由软件工程专为计算机、电子等专业。在研究生毕业后也会依旧依照这些方向就业。

  其他院校的软件工程学科

  分类中包括大部分985及较为强势的211院校。这一类院校的毕业生中继续深造的比例大概为30%-60%,普遍低于全国顶尖的软件工程学科。但由于出国的难度显著提升,推研资格要求的成绩也更加严苛(部分院校要求成绩前20-25%),加入考研大军是大部分毕业生的命运,此时提前规划好方向并做出准备就显得尤为重要。而若能在研究生阶段进入与上一类学校毕业生类似的院校与方向,后续出路便不会有太大差异。

  除了继续就读的同学,在这个分类下的院校的同学很大比例会选择直接就业,现阶段下市场的环境比较好,因此,就业的难度比较低,往往大部分同学都可以找到较为满意的工作,但是本科毕业的同学待遇普遍会低于继续攻读研究生的同学,进入一些优质的互联网大厂难度也会更高。

  2、就业待遇

  ・依据专业知识就业:在当下互联网时代,对于软件工程的同学来说是良好的机会,软件工程这一计算机类学科对口各类型的互联网大厂、工业界、外企,因此,依据时代机遇、顺势而为,是大部分软件工程学科同学的选择。就业方向也有开发、算法、基础架构、测试等方向。同公司同级别的工资待遇一般:算法=基础架构>开发>测试,以上方向入门难度顺序与工资完全相反。软件工程学科同学的整体待遇是在现阶段就业机会中等偏上的水平,是很多专业同学口中的高薪专业。很多其他专业的同学会跨行进入计算机类方向就业。

  ・科研学术道路:因国内外各类科研岗位都高度饱和,选择继续学术理想一般意味着长时间的激烈竞争与在非升即走制度下能否留到最后的问题,因此,占较少的比例。

  ・选调、公务员进入政府部门、国企等:占非常少的比例,具体待遇视各学校各公司政策而定。

  3、转行难度

  很少听说转行的同学,大多数是继续从事与软件工程相关的交叉学科领域,该情况根据个别学生的个人理想而定。

专业整体的文化氛围

  由于软件工程学科在当下的高校培养机制中非常注重实践与运用,因此软件工程专业的同学在本科期间不仅需要在理论学习上花费较多的时间,更重要的是提升应用实践能力,比如专业课的大作业、各种的竞赛、各类型的实习等项目都是能够在实际应用中学到“吃饭”的本事。本专业的“卷”更多的是在“实践”上的“卷”,但是相信通过较多的实践积累,不论是对未来的硕博升学,还是就业都会非常有帮助。

简介
集智汇聚来自清华、北大、上交、人大、北师大等著名高校的五十余名同学,根据自己的学习经历,推出了这套专业探索文章。
联系
手 机 扫 码 查 看