“ 阅读本文大概需要12.5分钟 ”
你是软件工程专业的吗?如果不是或许也可以往下看一看,本篇我将聊一聊软件工程专业的那些事~
1.
在高考之后,我被软件工程专业录取,至少我未来的大学生涯都将是一名名副其实的“软工”。
很多人经常问我同样的问题,“你报考啥专业呀?”,我总是自信地说“软件工程”。“哇塞,学软件的啊?挺有前途的啊!”。
对于他们的反应,我总不由地生出一种飘飘然的自豪感。“软件工程”四个字,一看就是搞大项目的人,软件诶!现在互联网时代有谁不在用软件?而且未来还是向着互联网+时代去发展的,所以一听是软件工程的学生,大家就竖起大拇指,赞扬道“小伙子,有前途!”。
那么那时我对软件工程专业的未来发展是一种怎样的理解呢?
我那时对软件工程专业的理解还是很含糊的,你让我说出我毕业之后是干什么的,我还真回答不上来。但我只知道很多人都说:“软件工程读完出来就是程序员,程序员的工资很高的,基本月入过万”。我那时听得呀,可是激动万分,热血澎湃的啊,于是我就开始想象我未来月入过万的场景,哇塞,想想都觉得美啊!
至于自己未来的工作场景,其实也是有想象和幻想过的。
在未来四年大学毕业后投身阿里巴巴或者百度,或应聘华为高级程序员,再不行的话,投身滴滴总行了吧?等到中年时期,年薪百万,哈哈哈·······
嘿!嘿!!嘿!!兄弟醒醒,醒醒!睡醒了没啊?你以为你是谁啊?
大学期间没认真把基础知识学扎实,可能毕业后就是做与专业无关的事情了,最好尽早了解好自己专业的职场方向。。。
现在就来聊一聊一名软件工程专业的学生,未来的职场方向和大学期间必须学好的哪些专业基础知识吧。。。
如果专业知识学得扎实,再加上职场一两年的出色表现,月收入过万还是非常可能的。更优秀的人早在学校学习的时候就被某公司看中,高薪聘请过去了。
其实我觉得软件工程专业出来的并不一定就是程序员,因为当你仔细了解了软件工程专业的学生未来的就业趋势之后,就不会再笼统地认为软件工程专业出来就是程序员。
那么软件工程专业出来的学生的就业方向是怎样的?
我在网上查了一些资料,其实涉及的领域都很广泛,但是一般都会归纳为四大领域。它们分别是:计算机软件工程师 、信息技术(IT)项目经理 、移动客户端开发工程师 、软件测试工程师。
上面的这四个领域对于需要掌握的专业知识要求可能都会不太一样,那么下面就聊一聊这四个领域。
1.计算机软件工程师
其实我们老师也会跟我们说过分专业方向会有软件开发和软件测试这两个重要方向。计算机软件工程师当然就是做软件开发的。
软件开发的工程师其实又有前端开发和后端开发。我们很多事也分不清楚什么事前端开发工程师,什么是后端开发工程师
所谓的前端开发工程师,就是设计我们眼前看得到的。比如:我们打开某软件或者是某APP,我们会看到我们看到的软件里面那些精致的排版,或者是页面布局,这一些就是前端开发工程师设计的。
举个计算器的例子吧。
在电脑或者是手机打开计算器,这就显示出一个计算器的模样。有+、-、*、/等等键显示。我们按1+1,它就可以算出是2来。这样就好解释了,计算器在电脑或手机所呈现出来的画面就是由前端开发工程师设计出来。而计算器计算的原理和算法就由后端开发工程师进行设计。这下应该明白啥是前端和后端了吧?
软件工程师是与从事软件开发相关工作的人员的统称。其实软件工程师的岗位就是从事软件开发生产的相关岗位,比如:软件设计人员 、软件架构人员 、软件工程管理人员 、程序员。
那么对软件工程师的专业知识背景的要求如何?
软件工程师必须掌握的几门知识有: 操作系统 、计算机组成原理 、数据结构 、 算法分析与设计 、基本的编程语言 、 编译原理 等。
软件工程师一定是要软件工程专业的学生才能担任吗?
不一定,软件工程师的专业可以是 电子信息工程 、计算机科学与技术 、 软件工程 等···
如果大家将来想从事软件工程师相关岗位的,建议在大学期间一定一定要学好这几门课程。
算法分析与设计 、操作系统 、数据结构 、 程序设计语言 、软件工程 、数据库原理 、 编译原理 等······
如果大学期间,你对着几门功课只满足与60分万岁的话,那么毕业后的命运就只能看自己的努力了,一定要理解到知道怎么应用和操作。
对于编程语言就看自己个人的兴趣了,一般常用的编程语言有 C 、C++ 、java 、Python 等···能够掌握两门语言是最好的,我个人还是觉得java会更常用一些。
2.信息技术(IT)项目经理
项目经理是项目团队的领导者,项目经理首要职责是在预算范围内按时优质地领导项目小组完成全部项目工作内容,并使客户满意。为此项目经理必须在一系列的项目计划、组织和控制活动中做好领导工作,从而实现项目目标。
专业知识背景要求
对计算机基础知识有一定程度的了解,熟悉编码流程以及业务流程,有一定的项目管理经验,能够根据项目的具体状况写出相应的文档,并且针对项目当前的状况写出相应的文档。
重要的大学课程:
操作系统 、计算机图形学 、软件工程 、数据结构 、编程语言
需要掌握的软件开发语言有:C++、java、C#
说实在的,信息技术项目经理这个岗位一般都是由老码农担任,毕竟这个岗位是要求有丰富的经验和扎实的技术基础,才能够保证很好地管理团队。
通常来说,这一职业从业者年轻时会从事代码编写工作,随着经验的丰富,逐渐成长为高级软件开发工程师,从技术岗位转为管理岗位。
3.移动客户端开发工程师
移动客户端开发工程师是进行手机应用程序开发、手机视频播放器开发、手机游戏开发、SIM卡应用开发等一系列开发设计并提供现场技术支持的专业技术人员。移动客户端开发工程师,是负责移动设备上的软件或系统开发的程序开发人员,其工作同时涉及项目系统的设计与开发等方面。主要包括 Android 开发工程师、IOS 开发工程师、Windows Phone 开发工程师。
专业知识背景的要求:
主要需掌握 Android 开发所用的Java语言, IOS 开发所需的 OBJ 语言及 Swift 语言,对其他编程语言有一定了解。了解计算机及网络通信的基本原理,以及数据结构、算法、数据库等知识。
对于移动客户端开发工程师的专业要求分别是: 计算机科学与技术 、 软件工程。
重要的大学课程有:
高级语言程序设计 、 数据库原理 、 数据结构与算法 、 操作系统 、 移动计算
移动客户端开发工程师的研究方向一般都是面向手机发展需求的。
移动客户端行业发展前景:
目前随着移动互联网以及互联网+的发展趋势,同时借着移动网络4G、5G的迅猛发展,Android和iOS并肩成为主流的移动端操作系统,而移动端也逐渐取代PC成为大众主要的通讯工具。Android应用、游戏等用户数量越来越庞大,因而Android开发工程师的需求量也越来越大,并且技术要求也越来越高。
个人发展路径:
1、横向发展:游戏类开发 (使用计算机图形学等技术知识进行游戏开发或移植), 应用类开发 (类似手机QQ、微信、手机淘宝等应用的开发),系统级开发(基于移动平台的定制系统的开发,如小米的MIUI系统,乐视的eUI系统)。
2、纵向发展:对技术进行深入研究,成长到技术经理,技术总监;或向管理方面转型。
4.软件测试工程师
软件测试工程师 指理解产品的功能要求,并对其进行测试,检查软件有没有错误(Bug),测试软件是否具有稳定性,写出相应的测试规范和测试用例的专门工作人员。简而言之,软件测试工程师在一家软件企业中担当的是“质量管理”角色,及时发现软件问题并及时督促更正,确保产品的正常运作。
软件测试工程师按照级别和职位的不同,可以分为三类:
1. 高级软件测试工程师:熟练掌握软件测试与开发技术,且对所测试软件对口行业非常了解,能够对可能出现的问题进行分析评估;
2. 中级软件测试工程师:编写软件测试方案、测试文档,与项目组一起制定软件测试阶段的工作计划,能够在项目运行中合理利用测试工具完成测试任务;
3. 初级软件测试工程师:其工作通常都是按照软件测试方案和流程对产品进行功能测验,检察产品是否有缺陷。
专业知识背景的要求:
测试开发工程师一般为计算机相关专业本科及以上学历毕业,如计算机科学、软件工程、网络通信工程等,这些专业对于计算机及网络通信原理比较熟悉,具有一定优势。其他专业的学生在通过自学后也可以从事。
重要的大学课程:
高级语言程序设计 、 面向对象程序设计 、 数据结构与算法设计 、 数据库系统原理 、 计算机组成原理
行业发展前景:
随着信息技术、物联网技术、互联网+等概念的提出和发展,大型复杂信息系统越来越朝着精细化、智能化、高集成度、高互联度的方向发展,因此对于这些系统的功能、性能、可靠性、安全性等测试工作,有着更高的要求,进而市场对软件测试工程师的需求越老越旺盛,行业发展前景广阔。
软件测试工程师的发展路径:
1、深入技术,对测试和技术进行深入研究,成长到技术经理,技术总监。
2、向产品研发转岗或向管理方面转型。
谈谈个人感受:
上面的专业发展方向可能并不是很全面,但是大家可以做一个参考,大致了解一下软件专业未来的就业趋势。。。
还有的就是,我认为软件工程专业和管理专业的是相辅相成的。工程本来就是一种规模化的多人协调合作完成一定规模化的项目。也就是有团队,人多就要管理,否则,一个大的工程团队没有统一的管理与指挥,那这么样的一种工程项目就很难成功。
我们在年轻的时候一般都是从事技术开发或者技术测试等工作,但是这种工作做到一定的年龄之后就不再适合继续做了,这时候就需要转型,从技术开发层转为技术管理层,带领团队去开发项目。这就需要扎实的专业基础和管理能力。如果我们从年轻时就有意识培养管理能力的话,那么等我们中年危机的时候,还是很容易进行职位转型的。从事技术管理的相关岗位。
我认为,软件工程就是一套管理理论,从软件研发,测试,投入使用,维护,更新等一系列进程进行科学合理的管理。明确某一阶段,该做哪种事情,将软件的开发进行规范化,科学化,从而保证软件领域的良好发展。
综合上面的描述,建议大家仅供参考,毕竟有些领域我个人的理解还比较片面,不够全面。但是大致方向是没有问题的。
感谢大家的阅读,这篇文章打了四千多字,大家能阅读到最后也不容易。谢谢大家的支持~
![关注微信公众号“苦逼的学生仔”,可以获得更多码农的资讯哦~~](https://img-blog.csdnimg.cn/20200203213308360.png)