为什么应该学好软件工程?

为什么应该学好软件工程?_第1张图片
我大学学的专业是通信工程,设置的课程里没有软件工程相关的课。毕业后从事软件测试工作,作为测试人员,与开发人员沟通是重要的工作内容之一,所以做测试的十多年来,接触了很多的开发人员,有些开发人员留下了深刻的印象,当然这个印象有好的也有差的。

在这些开发人员中,有些人fix bug的速度超快,还不会引入新的bug,有点像武侠里的小李飞刀,刀无虚发,出刀必致命,用三个字形容:“快”、“准”、“狠”

而有些开发人员fix bug 的时候吭哧吭哧花费了很长的时间,QA提报的bug虽然解决了,又引入了新的bug,整个过程拖泥带水。

到底为什么差异这么大呢?诚然,和经验有一定的关系。久经沙场的老将,一眼能看出门道。

最近在抽空学习软件工程的课程,突然领悟到开发人员有没有系统地学习过软件工程?有没有学好?这个也是影响开发人员能力和素质的一个重要因素。

开发人员里不乏各种专业毕业的,相当一部分是非科班出身,也没学习过软件工程。
这种开发人员fix bug 时没有系统性的理论做指导,fix 一个是一个,经验没办法积累和系统化,所以会出现上面所提到的情况。

下面是一些典型的例子:

 开发时没有分析没有设计,上手就写,后期难维护,加班熬夜去填“坑”;

 缺少理论指导,遇到新项目不能举一反三,工作很平庸;

 遇到需求变更这种事,除了抱怨两句客户,只能闷头做,无力反抗;

 做项目没计划性,想到哪做到哪,总是延期,比其他同事做的慢;

 不知道如何与团队协作,职业发展遇到瓶颈,无法得到晋升。

什么是软件工程?

软件在我们的日常生活里无处不在。手机操作系统、微信、闹钟app、爱奇艺app 等,这些都是软件,我们的生活已经和这些软件密不可分。

有人参与、有计划、有步骤地造一件产品,通常称为“工程”

不用软件工程做指导,能不能开发? 能,但会出现一系列的问题。就像不用建筑工程去造房子,造出来的房子会出事故甚至死人的。

在计算机发明出来之后,随着软件的规模越来越大,复杂度不断增加,软件项目开发维护过程中的问题就逐步暴露出来:软件产品质量低劣、软件维护工作量大、成本不断上升、进度不可控、程序人员无限度地增加。所以在60年代,“软件危机”的概念被提出来。

为了摆脱软件危机,1968年秋季,北大西洋公约组织的科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定对策。在会议上第一次提出了软件工程的概念。

从此诞生了一门新兴的工程学科:软件工程,它是为研究和克服软件危机而生。

在这次会议上,同时也提出了“软件工程”的定义:为了经济地获得在真实机器上可靠工作的软件而制定和使用的合理工作原则。

1993年,电气电子工程师学会(IEEE)给出了一个更加综合的定义:
将系统化的、规范的、可度量的方法用于软件的开发、运行和维护的过程,即将工程化应用于软件开发中。

软件工程定义的本质:就是用工程化方法去规范软件开发,让项目可以按时完成、成本可控、质量有保证。

基于软件过程,有了角色分工,有了对过程的管理和工具,对工程中每个阶段细分的方法学和工具。用一个简单的公式表达,就是:软件工程 = 过程 + 方法 + 工具

亚马逊的创始人杰夫•贝索斯曾经在一次演讲中说:“人们经常问我,未来10年什么会被改变?我觉得这个问题很有意思,但也很普通。从来没有人问我,未来10年,什么不会变?”

在软件开发领域,有哪些知识十年前很重要,现在仍然重要,未来可能同样重要?

这些知识包括:数据结构、算法、面向对象思想、设计模式、软件工程

如果范围不局限于程序开发,还要算上测试、产品设计、项目管理、运维这些岗位。

掌握了软件工程的各种工具、方法、核心思想、本质规律,才能步步为营,持续积累经验。

总结

最近颇流行系统思维,系统性思考等,其实软件工程就是用系统化的思维去解决一个问题。有了软件工程的保障,才能把软件开发做好。

本文参考宝玉老师的《软件工程之美》课程,再加上个人的经历、想法总结而来。本博客会做持续更新软件工程内容,也欢迎大家订阅宝玉老师的课程。

为什么应该学好软件工程?_第2张图片
为什么应该学好软件工程?_第3张图片
欢迎关注微信公众号:知行始终,成长经验及思想分享

你可能感兴趣的:(软件工程,软件工程)