教授讲专业 | 柴云鹏:软件工程——学以致用,改变生活
编者按
“大学之道,在明明德。”大学是学问的中心,是帮助青年人涵养心智、锤炼意志、放飞理想的平台。而大学的专业教育本质上是一种博雅和理性的活动,是志趣相投的一批人的智慧激荡。在【教授讲专业】栏目,我们邀请了人民大学的名师大家、杰出学者讲述专业的历史积淀、特色亮点、发展前景等,为高中生们找寻专业兴趣、确立专业目标、理性选择专业提供权威参考。
柴云鹏,中国人民大学信息学院副教授、博士生导师,现任中国人民大学信息学院计算机系副主任,兼任CCF信息存储技术专委会委员,TPDS、TC、TOS、JCST、计算机学报等期刊匿名评审专家。主要研究方向为云计算、存储系统、分布式系统等。主持和参加国家重点研发计划“云计算和大数据”重点专项项目、国家自然科学基金重点项目、国家自然科学基金面上项目、北京市自然科学基金等项目10余项,在ASPLOS、ICDE、IEEE TPDS、IEEE TC、MSST等知名国际期刊和会议上发表学术论文30余篇,出版学术专著一部。
软件工程:学以致用,改变生活
现代人的生活是什么样子呢?人们住在安装着自动控制空调的家里;上班开着自动挡的私家汽车,或者乘坐自动挡的公交车,或者乘坐地铁;购物可以通过网上进行,也可以在商场等实体店通过刷卡、支付宝、微信等渠道付费消费,各种商品的质量、产地可以通过标签追踪;外出人生地不熟,随时可以用手机搜一下感兴趣的饭店,导航一下就过去了,还有一些系统能够根据语言或动作完成使用者提出的要求。这些现代生活的场景林林总总,不胜枚举。这些便捷生活的背后是许多专业的知识和技术,其中计算机及其相关技术是关键一环。比如恒温空调,在设定温度后,它的温度感应器随时测试温度并报告给内置的程序控制模块决定降温、升温,还是维持不变,各种支付手段,最终都要和银行账户关联,这些都是通过计算机系统来完成的。这些计算机系统的建设和运行大多需要计算机软件来支持,没有了计算机,生活将停留在过去。
软件工程专业的内容核心是计算机软件相关能力的培养
学生毕业时所得的分数只是数字,更重要的是后面所隐藏的能力。软件工程专业的核心任务就是学习、掌握、运用和研究各种设计、制造、维护和改进现代计算机系统的各种知识、方法和技术,培养发现和解决各类相关问题的能力。
比如要实现简单的恒温控制,必然需要掌握具体的软件编程知识和技术,设计并实现控制程序,使它能够设置温度判定条件,根据检测到的温度的变化选择不同的处理并反馈给控制设备。比如在建设某个支付系统时需要很多人员参与,工作要按照项目来进行工程化管理,那么网络技术、软件工程、项目管理等有关的知识和技术的运用,也是不可或缺的。如果希望在某个网站上找到热点新闻或事件以及判断它们之间是否关联,就需要信息检索和数据挖掘的相关知识和技术,比如在网站服务系统中统计对不同新闻的阅读次数或人数,来显示各条新闻的热点程度。
除了能够设计和制造计算机系统之外,还要想方设法改进它。比如同样是支付系统或购票系统,有的可以同时满足几千人使用,而有的则只能供几百或几十人使用。分析系统与实现方法间的差别,可能需要对这些不同的知识、原理、技术等的充分掌握和运用,还可能需要其他的知识,比如数学、物理、外语、法律、管理等方面的知识,从而形成系统设计与研发能力、项目管理能力。通过专业学习和训练,具有设计和制造计算机软件系统能力的同学,在现代生活的各种竞争中就有更大可能拔得头筹。
学好这个专业要有计算思维
中国有句老话,叫“心之官则思”,实际上讲的是思考的重要性。那么要学好软件工程专业应该怎么做呢?一个观点是:计算是一种思维能力,计算就如同读写能力一样,是人必须掌握的基本能力之一。计算思维(Computing Thinking)是每个人的基本技能,并不仅仅属于计算机科学家。在阅读、写作和算术之外,应当将计算思维加到每个孩子应该掌握的能力中去。培养计算思维会极大地帮助你学好计算机专业。
计算思维这个貌似抽象的术语是什么意思呢?它就是让我们如同计算机专家一样进行思维,或者说掌握他们解决问题的方法,让我们知道什么是可计算的,什么事情计算机做得比人好,什么事情人比计算机做得好。软件工程专业会培训和增强你的这种判断力,并且通过软件控制计算机如你所愿地做复杂的事。
玩转数据提供给你设计和改变生活的钥匙
最后要说的是:软件工程≠编程!许多人认为软件工程没什么基础研究,只是工程而已。但事实上,新的需求不断涌现,新的问题和方法层出不穷。特别是今天我们生活在一个数字时代,生活的方方面面都是数字化的,比如智能手机中的各种内容都是数字的,不同种类的数据使用和维护的技术都会有所不同,一个微信就有N多的功能,我们可以如何适应它、丰富它、利用它?这些都为计算机专业的发展和壮大带来了大量的机遇和挑战。诸多的例子已经证明,有很好的计算机软件专业基础之后再去学习其他学科将更容易获得成功!
专业常见问题解答
社会上对软件工程专业存在哪些理解误区
一是有些人认为软件工程专业与计算机专业没有区别。软件工程专业源自计算机专业,二者在人才培养方面有很多共同或相近的基础课程,但是软件工程专业还是有很明显的特点的。软件工程专业更关注“软件”,比如编程、算法、系统软件等,对硬件等方面的要求相对较低;软件工程专业对较为实用的技术,或者比较流行的技术会更为关注一些,相对而言,计算机专业更加注重扎实的功底和知识的全面性。
二是有些人认为软件工程专业的档次比计算机专业低。软件工程专业实际也是从计算机大专业中分离出来的,重点是学习计算机软件相关技术,尤其重视对实际动手能力的培养。从实际就业角度来说,软件工程专业和计算机专业的就业重叠率非常高,并没有明显的区别。
三是学习软件,将来只能做程序员,每天的工作就是编写代码。本专业学生毕业时就业去向一般是各类互联网/计算机软件企业,也有很多同学去了各个行业的信息部门,工作类型多种多样。程序员的工作也不是每天10个小时坐在电脑前敲代码,像机器人一样。软件产品或互联网产品需要各种工作,有很多沟通、设计、讨论、研究的工作,工作有深度,有乐趣,形式也多样化,并不枯燥。
现实中有哪些问题需要软件工程专业的人才来解决
目前互联网企业发展非常迅速,人们日常生活的方方面面都离不开互联网和手机。买东西用淘宝、京东,打车用滴滴,吃饭先看大众点评、美团,买机票和住宿用携程、去哪儿,出门用百度地图、高德地图,互相联系往往首选微信。很多企业行为也依靠互联网,比如租用服务器用阿里云、京东云等,原材料的采购、产品的销售也有专门的服务网站。这些互联网服务的背后,需要大量的、越来越多的计算机软件人才来支撑,因此软件工程专业毕业生的就业在未来很长一段时间都是非常好的,收入也会非常高。
软件工程专业毕业生就业和升学情况如何
同计算机专业类似,软件工程专业毕业生就业方向主要有以下几类:一是阿里巴巴、腾讯、百度、微软等互联网或软件领域的大企业;二是与数据库系统紧密相关的企业,例如Oracle, TeraData,还有现在国内也在积极推进云计算或数据库系统的公司,例如阿里云、腾讯云、京东云、华为、人大金仓等;三是去银行、保险等金融领域企业,主要是国有几大银行和保险公司;四是去事业单位或当公务员。
选自《你的专业—中国人民大学本科专业介绍》