软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发和维护计算机软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术和方法结合起来,以经济地开发出高质量的软件并有效地维护它。
软件工程旨在开发满足用户需求、及时交付、不超过预算和无故障的软件,以质量保证为基础,包括过程、方法和工具三个要素。软件工程不是单纯的开发或者测试,而是围绕着用户需求的一系列的activity以及资源的分配和利用。
IT行业的发展造就了无数的程序员,尽管大家开发的软件应用于不同的领域,但是大家都是程序员,好听一点,叫软件工程师。所以申请的时候,写过程序的,都可以说有这方面的实际经验。因此,软件工程,除了学校的学生们,公司里工作的人也很喜欢申请,申请人数就特别多,而拿offer也就显得比较难了!一清二白的学生们拿什么跟有数年工作经验的软件工程师PK?但是软件工程不仅仅是工作经验这么简单,不是单纯的比谁会写编码,谁的编码写的好。
软件工程是一个很好的方向,很适合将来在美国就业立足。比如说,如果你作一个关于测试理论或者开发方法的论文,接触一些软件开发和测试过程中的问题,找工作面试的时候,你可以拿你的论文项目当成经验来说,容易跟别人谈的来。而且,由于很多软件工程的研究项目适用于各个领域,找工作局限性小。所以不管是EMC这样的存储公司,还是CISCO这样的网络公司,或者是ORACLE这样的数据库软件开发商,你都可以兜售自己的项目,都可以说你自己似如何在开发的过程中用什么样的方法开发,问题何在,用什么样的方法测试,coverage如何。
但如果你是CS的其他方向,比方说AI研究intelligent tutoring system的,尽管你写过几行程序来验证自己的idea,但是公司可能想,这是个AI的项目,我们是网络公司,不需要。对于硕士生找工作来说,软件工程方向局限性小一些,更容易找到工作。博士就有所不同,但是很多博士也得放下身价,到公司里写程序作高尚的软件工程师。