你真的理解 “软件工程” 吗?
小灰和软件工程的故事
直到现在,小灰还记得当年高考前填报志愿的情景。
小灰很喜欢计算机,理想中的学校也确定了,可是这学校开设的相关专业有两个,一个是“计算机科学与技术”,一个是“软件工程”。
计算机科学与技术再明白不过,里面学的肯定和计算机技术相关。可是这软件工程又是什么鬼呢?怎么听起来这么虚?
小灰在这两者之间纠结了许久,终于坚定下来,填了个“电气自动化”专业。
大学时候学的软件工程有用吗?
有些人觉得这门课很虚,似乎都是一些条条框框的知识点。比如说书中提到的软件过程、敏捷方法、需求分析等等内容,读起来有些道理,但细想又觉得是正确的废话。
但当我们开始投入软件开发工作,回过头来想想,是不是经常遇到这样的场景:
- 你接到一个开发任务,想开发出需求的功能,你是不是先要做需求分析;
- 你接手一个复杂的、大的功能模块,是不是先要做设计,才能把复杂的拆成简单的,才能和大家一起分工去开发;
- 你完成一个功能模块,如果要保证质量,是不是需要写一些测试代码,还要做一些功能测试;
- 还有日常用的那些工具,像源代码管理、Bug跟踪;
可以确定的说,不管你用什么开发语言,不管是前端还是后端,现代软件项目开发,都离不开软件工程知识的应用。
既然工作中在用,为什么很多人会觉得大学时候学的软件工程很“虚”,却又能作为国家教育体系中的一门必修学科呢?
那是因为大学期间的“软件工程”更侧重理论,缺少问题导向意识,理解起来枯燥乏味,很难学以致用,但众所周知“程序=数据结构+算法”,而“软件=程序+软件工程”,跟数据结构、算法一样,软件工程也是技术人的“基本功”。
从当下考虑,学好了软件工程,你的工作可以按时完成,你的软件质量有保证,你做开发的时间和成本都可控。
经常有人说程序员是吃“青春饭的”,“中年危机、码农、搬砖”,这些程序员的日常焦虑,究其根本,是计算机技术更新迭代太快,大家总在追赶潮流,担心被淘汰。
更长远的去想,在软件开发领域,有哪些知识是10年前很重要,现在仍然重要,未来可能同样重要的?哪些知识会决定你发展的高度?
相信大家心里是有答案的,无外乎就是数据结构与算法、操作系统、计算机网络、编译原理,以及软件工程这些“基本功”。
技术更新迭代速度再快,软件开发背后的逻辑和知识体系却万变不离其宗,这些过去在用,现在在用,未来还会用的知识,就是经典的价值,就是行业最为本质的东西。
2019年1月,任正非还发表了一封刷屏朋友圈的公开信《全面提升软件工程能力与实践,打造可信的高质量产品》,相信大家都不陌生。越是优秀的技术公司就越强调软件工程的应用,Google、Facebook、百度、阿里巴巴、华为、微软这些公司的方法论和软件开发流程里处处渗透着软件工程的影子。
软件工程作为工程师必修的基本功,很多人觉得它难学又不得不学,这里必须推荐一下极客时间宝玉的专栏《软件工程之美》,不同于学校里枯燥的理论,他将结合国内外前沿的、典型的项目案例进行讲解,让你即学即用,真正地解决程序员在软件开发全流程中的疑难杂症。
本文来源于网络,若有侵权请联系3449817223#qq.com,将在第一时间删除。