开云APP 开云官网入口「软件工程」专业是一门怎样的专业?
Kaiyun 开云Kaiyun 开云Kaiyun 开云软件工程是啥?软件工程是一门女生少,课程多,经常熬夜,压力大,知识更新迭代快,基本上要的专业,画重点,基本上靠自学!而且一生都要不断学习,技术牛逼工资就高,没有技术就没有饭碗。有些专业可能你毕业了就能找到工作,但是软件工程你不努力,给台电脑你敲不出东西,留给你打下手的机会可能都没有。
网上经常看到IT行业工资高,好好好得不得了,但是不可能平白无故工资高,工资是和你的辛苦程度挂钩的,有多辛苦?996这个词貌似就是最先由程序员提出来的,有个网站:996.icu,这就是程序员对996无声的反抗。
再说学校,老师讲的只是冰山一角,两节课就解决一章,不会深入讲解,说不定讲的还过时了,上机课用的编程工具还是最古老的VC6.0,然而现在实际开发中早已淘汰这种工具,大学一般只会教C,C++,Java,HTML基础,有些学校可能还教一下Python,教的都是基础,你要是想学其他方面的比如Android,iOS,C#,golang,,或者说你要深入学习,那没办法,学校不教,你得自己抽时间学。如果身边没有和你一个方向的,你遇到问题只能上各大论坛,群聊求助。老师在有限的时间不可能教太多,不自学,还不如趁早转行,或者从一开始就别选这个专业。
说啥搞这行业的头发少,容易秃头,这多多少少有点儿夸张,至少大学生我是没见过头发少的,但是洗头的时候会掉很多头发是真的。
除了数据库,数据结构,各种编程语言等等专业相关的东西以外,思修,历史,毛概,数电,微积分,离散数学,线性代数,大学物理,英语……都会学的。(然而个人认为有些课程并没有必要学,相反专业课课时太少,并不能满足需求,班上有些致力于IT行业的大佬都有自己的方向,有些课去上了,但是人坐在教室并没有听老师讲,而是根据自己的规划在自学,包括我也是这样,虽然我知道大学课程的设置有他的道理,全面发展之类的,但是我还是向现实低了头)
还有就是熬不熬夜,压力大不大,取决于你自己,大学的所有考试及格很容易,甚至你平时不听,期末前两天复习一下,看看老师给的模拟题,考试就过了,(事实上好多人都是这样,起码我身边的很多人都是这样)你可以早睡早起,打打游戏,参加各种活动,吃嘛嘛香身体棒棒的,甚至可以成绩优秀,社团学生会部长,拿奖学金,但是,如果你不自学,没有压力,那么不管你有多优秀,毕业就等于失业(如果毕业不选择IT行业或者富二代就当我没说过),如果你不安于现状,对这东西有一种渴求,对它感兴趣,对编程有一种瘾,那么,熬夜学习真的司空见惯。
拿我自己来说,现在在自学Python和Golang,有时候经常一两点睡,大学是个不太好的二本,软件工程专业虽然有170多人,开云体育 kaiyun.com 官网入口现在大二了,但是我感觉线个,或许有些大佬在悄悄努力我不知道,自己平时敲代码学东西经常遇到不懂的问题,在学校里缺少交流平台,基本上下课了就见不到同学,而且愿意搞的都各有各的方向,所以遇到问题只能百度或者求助各种论坛的大佬,没有人亲自带你,许多坑需要你自己去填,弯路要自己走,而且自学还要有耐心,一个问题也许会花费你一天的时间甚至更长都有可能,没有耐心和毅力真的不行。
最后,我始终相信一句话,兴趣是最好的老师,当初也是有这个兴趣才选的软件工程,也是我能一直坚持学下去的动力。
随便写写,想到啥写啥,没有什么逻辑,只是说说我的真实感受,希望能对即将选择这个行业的同学有所帮助!
相比其他答主的答案,这篇答案主要说给对大学还没太多感受的高中生,入门向,结尾有几个对于程序员工作的常见误区(因为某个原因从而想当程序员的人极少,但因为某个原因不想当程序员的人极多)。
因为之前在一个高考志愿填报机构实习过,利用一下资源~然后本身也是SE专业的,补充了一些个人心得
软工,绝对的热门专业,就业容易,起点高上限也高,有人说热门专业迟早有一天会供大于求,没错,但现在互联网行业发展本身就很迅速,供大于求的一天,有,但还比较远。
非专业必修课程有:高数、大学语文(我没搞懂为啥有)、大学英语、体育、军理、航概、线性代数、大物、思修、概率、物理实验、数学建模、经济管理
专业必修课:计算机导论、离散数学、c++、数据结构、计算机组成与体系结构、算法分析、数据库、物联网、软件工程导论、操作系统、计算机网络、系统分析与设计、软件工程过程
专业选修课:系统管理、java、编译原理、数字电路、网络存储、web网页、网络管理、数据挖掘、嵌入式设计 (可能少了一两个课,因为有的课我没选也忘记了它们的存在)
不止软件工程几乎所有的专业都是这样,你要学很多实际上和你的专业并没什么关系的必修课,这些课集中在大一大二,特别是理工科有不少课是挺硬的!
专业课大家也可以发现,学的特别特别全面,说好了是全面,不好听就是杂。如果仅限于上课,基本上最后屁都不会。这就是完完全全的师父领进门修行在个人,甚至有的课进门都没进(虽然也能及格)。以就业的角度来看,不需要你会得很多,但需要你会得很深很精,这个光靠上课是上不出来的,就看各位课下的努力了。
摘自2017年12月教育部第四次全国高校学科评估(最新的,这玩意隔几年评估一次)
说来也是很有趣,13年的时候北航软院还属于过了提档线就能上的情形,软件工程也是我的第三志愿,而全系有小一半都是调剂来的。四年大学上完了,不禁感叹,这么吊了吗,我等也没干啥事啊。
所以排名这玩意大家还是理性对待,而最理性的方式在我看来就是睁一只眼闭一只眼,顶多区分学校的层次,至于非要争个你先我先没必要。
不管什么时候,唯一重要的是自己的真实能力,而不是学校名头。去掉学校后还剩下什么才是今后傍身的本事。(这句话特别送给天天在知乎上撕学校的朋友们)
现在社会普遍把“非对口就业”看成了一个常规操作,那是因为很多专业对于就业而言是供大于求的。而当你仔细去了解那些“非对口就业”都去干什么了的时候,你会发现很多人去写代码了。
因此对于软件工程我敢说,绝大多数学子都是对口就业的,最起码跳不出互联网这个大圈子。
我的同学基本上也都是写代码的,比如算法,研发;不写代码的也有去做产品的。基本上在第一part里列出的每个专业课都是一个对应的岗位。
至于发展前景,确实还没到那个年龄,了解的不多,大概会有人转管理,少数人去开公司,多数人还是在一个高级职位继续写代码吧。
换句话说,每个行业想获得好的薪水所需要的行业内排名百分比是不同的,比如当老师你需要到到前30%,当演员你需要当到前10%,当作家你需要做到前5%,而写代码你只需要做到前70%就能获得相当的收益(这个数字是瞎编的,莫杠)。
可能有人说演员和作家上限那么高,你程序员怎么比?马化腾,比尔盖茨,这上限不更牛逼嘛。
至于是不是臭丝······那主要要看你学软工之前是不是臭丝。比如很多人上大学之前就丝,然后不过是始终保持着丝身份,我觉得这个锅软工不背(收入不丝);当然也有很多人有人大学期间或者工作后从丝慢慢就变得没那么丝了;最关键的!没有人本来不丝,然后学了软工变成了丝的。总的来说我还是觉得互联网行业的人算是比较前卫的,毕竟整天在和先进的玩意打交道。相比之下,传统行业里可能丝更多。
误区2:现在懂编程的人太多了,好多培训班里出来的程序员抓来也能用这句话其实没错,但即便懂编程的人很多,但这个行业还是需要懂编程的人,不然也不会成热门专业。然后就算大家都会编程,水平也差不多,但有学历优势的人一定不会吃亏,至少简历关好过。
这个不说是误区了,因为这话没错,程序员是挺累的,但这个梗在我看来已经被过度夸张了,以至于很多人对于程序员这个职业望而却步。
说个事就一目了然,我经常约别人打篮球,约两个程序员朋友比较好约,每周工作日晚上都能约出来至少一次。约一个健身教练,半年来愣是一次没约出来过,一问,人家每天十点半准时下班,没有例外
最后,因为做过离散助教,离散也是计算机专业早期的一门必修课,分享几个可能会遇到的问题。
最最后,感觉中国的教育使得同学们对于大学的认知太偏执了,写过一篇文章diss一下。
软件工程专业是2002年国家教育部新增专业。软件工程专业以计算机科学与技术学科为基础,强调软件开发的工程性,使学生在掌握计算机科学与技术方面知识和技能的基础上,熟练掌握从事软件需求分析、软件设计、软件测试、软件维护和软件项目管理等工作所必需的基础知识、基本方法和基本技能,培养能够从事软件开发、测试、维护和软件项目管理的高级专门人才。
计算机专业很早就有,而软件工程专业却是一个相对较新的专业。“软件”大家已经比较熟悉了,我们在电脑上、手机上都用着各种各样的软件和APP。可以简单的理解“制作(开发)软件”和“软件工程专业”的关系,就像“造建筑”和“土木工程专业”的关系。
可见课程设置主要以扎实的计算机基础与经典工科教育为主,再加上软件工程领域的原理、方法论和实践课。各种“编程”与“编程语言”的课基本都是选修课,可以根据自己的兴趣自由选择。
大部分院校的软件工程专业都放在软件学院,在2001年经教育部和国家计委批准,全国首批试办成立了35所示范性软件学院,大致可以代表国内软件工程专业最好的学校。它们分别是:
北京大学 清华大学 北京工业大学 北京航空航天大学 北京邮电大学 北京理工大学
南开大学 天津大学 东北大学 大连理工大学 吉林大学 哈尔滨工业大学 复旦大学 同济大学 上海交通大学 华东师范大学 南京大学 东南大学 浙江大学 中国科学技术大学 厦门大学 山东大学 武汉大学 华中科技大学 国防科学技术大学 湖南大学 中山大学 华南理工大学 重庆大学 四川大学 电子科技大学 云南大学 西安交通大学 西北工业大学 西安电子科技大学
A-级:天津大学,东北大学,哈尔滨工业大学,同济大学,上海交通大学 ,中国科学技术大学,四川大学
B+级:北京交通大学,北京工业大学,北京理工大学,北京邮电大学,大连理工大学,吉林大学,复旦大学,东南大学,山东大学,华南理工大学,重庆大学,电子科技大学,西北工业大学,西安电子科技大学
我个人对于各种排名不敢苟同,比较认同的观点是“本科看学校,研究生看专业”。加上软件工程是一个比较看自学的专业,因此个人建议是尽量选择名气大的学校。
计算机相关专业应该算是“万金油”专业,基本上各行各业都有需求,所以就业面十分广泛,薪水也比较不错。比较受大家欢迎的就业方向有:
具体从事的岗位除了众所周知的“程序员”以外,还有涉及到软件开发整个过程的相关职位,比如项目经理,售前工程师,测试工程师,运维工程师等。另外只要是计算机相关的岗位,也都是软工同学可以考虑的去向。
详细说一下程序员吧,就像学医的同学大部分人毕业后会当医生,学软工的同学大部分人毕业后会当程序员(也叫搞开发,技术岗)。就像医生会有儿科医生、五官科医生、外科医生等不同的细分,程序员也会有很多细分,以拉勾网(一个程序员招聘网站)的分类为例:
比如你擅长制作网站,那你对应的岗位很可能就是“web前端开发工程师”。一般在学校里并不会分这么细,这都需要同学们根据自己的兴趣选择其一去钻研,努力打磨自身本领。
上面的内容都相对客观,最后分享一些自己的观点吧,兼听则明偏听则暗,仅供学弟学妹们参考。
观点:有个比较粗暴的说法叫“富,穷IT”,对于很多家境普通的同学来说,学IT都是个错不到哪去的选择。IT相对其他方向更容易找工作,薪水也相对不错。
观点:如果选择IT方向,建议优先选择“计算机科学与技术专业”,这两个专业所学内容相似度高,找工作也差不多,但软工的学费大都比较高昂(主要是政策原因)。另外“计算机科学与技术专业”是最经典的计算机相关专业。
观点:我有很多同学在上大学前都没怎么碰过电脑,有的人甚至连开关机都不会,但他们最后都能学好。虽然大一刚开始容易自我怀疑(因为也有不少人在高中就已经非常厉害了,一进大学看起来什么都会),但只要努力去学,都能追上甚至反超那些有经验的同学。不过每个人都有自己的长处和短处,选专业时“扬长避短”+“选自己感兴趣的专业”会更适合自己,也更有可能把专业学好。我个人觉得,对于“自学能力强”与“脑子比较聪明灵活”的人来说,学软件工程学起来可能会更游刃有余。
软件工程专业在国内是一门 21 世纪新创立的学科。在 2001 年,全国 35 所高校一起创立了首批软件学院、软件工程专业,这时软件工程专业与计算机科学与技术专业拆分开,很多院校的软件学院的教师队伍是从计算机学院或计算机专业划分来任职。
因此,当下时期,可以发现各个高校的软件学院与计算机学院仍旧过从甚密,公用同一套教师、行政班子,与计算机学科同根同源,但是在学科的设置和重点关注的方向上略有不同。
软件工程本科毕业的同学完全支持就业的,达到了就业的水平。现阶段下市场的环境比较好,因此就业难度较低,往往大部分同学都可以找到较为满意的工作,但是本科毕业的同学待遇普遍会低于继续攻读研究生的同学,进入一些优质的互联网大厂难度也会更高。
当下社会,手机上的软件已经充斥在我们生活的各个角落,最大程度的改变了人们的生活,包括移动支付、网上购物、社交聊天、娱乐休闲都离不开「软件」,而这些软件的编写、安装、优化正是软件工程专业同学们的看家本领。
但是软件工程专业的同学们能做的远不止这些,和软件相关的底层所有工作都离不开软件工程学科人才。
举个例子,例如网上购物的淘宝软件,是由软件人编写代码并开发完成,包括交互页面的实现、页面背后的逻辑设计、推荐系统工程决定给哪些人推荐哪些商品、利用银行卡绑定移动支付完成付款并实现对账、保证整个支付流程正确性、保证账户的安全性防止受到不法分子的攻击等等。
软件工程人能做到的不仅仅是一个软件中能看到的部分,更多的是其中「看不见」的底层逻辑的设计和实现。
软件工程专业在国内是一门 21 世纪新创立的学科。在 2001 年,全国 35 所高校一起创立了首批软件学院、软件工程专业,这时软件工程专业与计算机科学与技术专业拆分开,很多院校的软件学院的教师队伍是从计算机学院或计算机专业划分来任职。
因此,当下时期,可以发现各个高校的软件学院与计算机学院仍旧过从甚密,公用同一套教师、行政班子,与计算机学科同根同源,但是在学科的设置和重点关注的方向上略有不同。
软件工程的学科建立是希望培养具有扎实的软件基础理论,熟练掌握软件设计、开发、测试、维护技术,具备软件开发组织管理能力的专业人才,可从事高层次软件研发、管理和软件产品开发项目管理岗位的工作。专业注重培养服务于国家重大的战略需求,培养出一批卓越的软件工程师。
当今社会社会对于高素质的软件工程人才需求十分旺盛,软件人才培养的速度和质量均难以满足实际需求,因此,软件工程学科可能仍是未来几十年热门的专业。
常情况下,各院校的培养方案中有校级通识课、专业课程两大类。各院校对通识课的安排不尽相同,但专业课程的设置较为类似。以清华大学软件工程为例,专业课程按照知识深度递增,可分为以下几类:
基础课:通常在大一一年学完。数学和物理相关的课程更接近在高中已有的数学与物理知识上的拓展,使用微积分、线性代数求解略微复杂一些的数学问题。专业相关的有一些信息科学技术基础、数字电子基础等,用于了解信息技术领域的基础概况,作为软件工程的入门课程。
核心专业课:课程分布在大二、大三两年。这些课程建立在上一阶段课程的基础上,培养动手能力与应用实践能力,注重在理论的基础上,培养学术研究与应用落地实践的思维。这一阶段的数学课程,如离散数学与图论,也是为了学习计算机类学科常用的符号表达和概念。
按细分方向的选修课:这些选修课的内容或是为接触科研前沿做铺垫,或是为了培养学生的应用技能开设的理论课,课上通常同时有本科生和研究生。
其中数理基础课和核心专业课程都属于必修内容,而后续的选修课程则与各类细分的专业方向相关。如深度学习领域课程的机器学习、计算机图形学领域的计算机图形学基础课程、系统基础架构领域的云服务性能优化课程、硬件与软件领域的物联网工程课程和嵌入式系统课程。
软件工程内部的细分方向相当之多,未来一般可以分为软件系统领域与其他的学术领域,其中最主干的方向包括:
软件测试:包括软件的形式化验证、软件的自动化测试等领域研究。就业方向也与软件系统的形式化验证有关,如华为操作系统团队,或者相关科研院所。
软件安全:研究对象针对区块链或者软件系统,检验系统的安全可靠性,防止受到攻击,与科普文章经常听到的「黑客」相对抗。当今社会非常缺乏网络安全、信息安全等领域的人才,也是信息时代必不可少的一部分,符合国家战略需求。就业方向从国家信息安全相关的研究院到各个互联网、工业界公司网络安全部门。
有其他答主贴了软件工程专业的课程清单和学习计划,但是单看这些课名,其实很难对软件工程这个专业有一个整体的认识。
我们要做一个软件项目,从开发部门的角度看,要选择合适的开发语言和架构、数据库类型、操作系统运行环境。
从项目的角度看,要对接非IT专业的需求方(甲方),要尽可能快速开发可靠的程序,要交付质量有保证的程序。
有其他回答从院校排名、就业前景很多角度说过了。不和大佬们撞车,我从软件工程的内涵来说一下吧
有些概念的特性,是可以通过比较差异,来辅助定义的,我觉得软件工程就是这样的概念。
软件工程和计算机科学都要写代码,都是使用代码把自己的想法变成现实(与人脑内的想法相比,代码是存在于计算机中的现实)
软件工程更侧重“工程”,更接近解决实际问题。比如写一个小程序,写一个飞鸽传书,写一个淘宝……
计算机科学算法更侧重“研究”,更加抽象,比如图像分类模型,同样一个抽象的“卷积神经网络”思想,可以用于实现“猫狗图像分类器”,也可以用于实现“人脸图像分类器”。但从工程上,这显然是两种问题。就像我们可以说,京东和天猫都是电商(抽象概念),但他们各有差异(工程实践)
软件工程更需要考虑很多琐碎的细节,根据工程需求,要做一些权衡。比如,要开发一个网站,效率和稳定性选要开发速度选PHP/Python。所以你会看到很多政商以及企事业单位的网站,以至于校内的教务系统会更多使用前者;而互联网企业的站点子模块,会见到Python/PHP的身影(只是举例子,并不绝对,不引战)。同样,需要对数据库、运行环境……等等工程内容做权衡。
计算机科学算法本质上是“语言无关”的,假设我们的研究中,需要使用抽象的加法运算概念“A+B”,我们可以从逻辑上定义这样的运算。而无需指定必须用哪个编程语言/运行环境去实现这个A+B,因为无论什么编程语言,加法运算这个抽象概念是不会变的。严格来说,深度学习模型不必须用Python去写,只是现有深度学习代码大多基于Python,为了避免重复制造轮子,所以大家比较爱用Python。(事实上机器学习领域内也并不全是Python)
中高阶软件工程中,会混入算法特征。比如负载均衡调度,MapReduce。它们背后都是一篇篇抽象的论文,而我们会以代码工具的方式来具象化这些概念,就获得了像Hadoop这样的东西。但这样的算法,是为工程服务的。
计算机科学算法中,也会有软件工程的特征,因为算法不是纯数学,而是需要用实验去支持的。要做实验,开云体育 kaiyun.com 官网入口就需要开发实验环境和代码,来验证自己的想法。因此在做实验时,我们一样会考虑算法运行速度,开发语言,负载IO,数据集加载方式…等等内容。但这样的工程,是为算法实验服务的。
软件工程就是这样一种工程学科,使用代码为工具,来解决现实生活中的实际问题。所以软件工程专业对应的职业方向(如果做程序员的话),经常需要解决很多细节问题。
软件工程对应的开发者,与驻工地工程师/工人更相似。需要解决实际问题,精细到“如何把混凝土泵上200米高空”这样的问题
扫一扫关注微信公众帐号