许多人看到“软件”二字便立刻想到了代码。事实上对于“软件”的定义,迄今为止业界仍然没有一个统一的答案,很多学者和组织机构分别提出了自己认可的定义:电气和电子工程师协会提出,软件工程是将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;《计算机科学技术百科全书》中提出,软件工程是应用计算机科学、数学、逻辑学及管理科学等原理,开发软件的工程。软件工程借鉴了传统工程的原则、方法,将计算机科学、数学用于构建模型与算法,将工程科学用于制定规范、设计范型、评估成本及确定权衡,将管理科学用于计划、资 源、质量、成本等管理。由此看出,软件工程研究的不仅仅是代码,还涉及到数学、计算机科学、逻辑学、工程学、管理科学等多种学科,研究的是如何从零开始开发、运营和维护一款软件。
学习内容,不止于“软件”
随着第三次科技革命的展开,人类文明进入了一个信息化和智能化的时代,这个时代的躯体是精细的机械制造,大脑就是软件,是信息技术和智能化发展的幕后操纵者。与计算机科学与技术专业相比,软件工程专业没有在计算机硬件方面“较真”,它综合了工程学、管理学、经济学中丰富且具有社会实用性的知识。当然,高等数学、线性代数、离散数学、概率论等基础数学知识是计算机类专业必不可少的基础,大学物理、数字电路等物理学知识也在其中,接下来则是C语言为代表的一系列编程语言,数据结构与算法、计算机组成原理等计算机科学知识。大三进行的项目实践过程中会学习到工程学、管理学、经济学方面的知识,尝试从零开始设计软件,并进行持续的运营、维护。
学好知识,思维与能力兼备
软件工程作为一门工科专业,需要缜密的逻辑,结构化、系统化的思维能力,一丝不苟的细致,一定的艺术鉴赏和创造能力,精益求精的精神,最重要的是对知识的渴求和对困难的不畏惧。比如在离散数学这门课程,我们会学到命题逻辑、谓词逻辑、假言推理等逻辑推理手段,学到计算机如何保存和理解“知识”,人工智能是如何进行“学习”的一系列逻辑思维相关内容。再比如千行代码的程序项目,锻炼着我们的结构化和系统化思维能力,如果不事先确定好结构体系,项目进行到后期,甚至连自己都看不懂自己写了些什么,写在了哪里。在日常运用中,对于后端软件工程师,其核心在于设计底层算法,哪怕只是写错一个字母也会造成巨大影响。对于前端软件工程师,需要设计软件交互界面,未来不遭用户诟病,一定的审美能力也是必要的。归根结底,学好软件工程专业要不断实践,在实践中发现和总结错误,追求进步。
在鼓励创新创业的浪潮中,软件工程专业具备了天生的优势,不论是进入创新公司,还是另起炉灶,都有着广阔的市场。因此软件工程专业的毕业生们,大部分集中在相关产业就业,且就业率近年来始终排在本科毕业生就业率前列,当然,薪资待遇仍然视个人综合素质和能力而定。