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

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

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

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

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

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

下面是一些典型的例子:

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

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

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

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

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

什么是软件工程?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

总结

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

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



欢迎关注微信公众号:知行始终,成长经验及思想分享

为什么应该学好软件工程?相关推荐

  1. 102.怎么学好软件工程?软件工程 = 工具 + 方法 + 过程

    文章目录 3.怎么学好软件工程? (1)首先必须了解一下软件工程的道.术.器 (2)软件工程知识全景图 (3)何为工具?何为方法?何为过程? 1️⃣ 什么是过程? 2️⃣ 什么是方法? 3️⃣ 什么是 ...

  2. 该怎么学好软件工程这门课?

    软件工程 顾名思义就是以计算机为主 来进行软件设计 说实在 对计算机类的科目不太感兴趣 所以之前的基础不算牢固 但是 既然开设了这门课程 我就会摆正心态 认真学习 和擅长计算机的同学一起研究向他们学习 ...

  3. 怎样学好软件工程专业!!!

    1.扎实的基础.数据结构.离散数学.编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的程序.据我的观察,学计算机专业的人比学其他专业的人更能写出高质量的软件.程序人人都会写,但当你 ...

  4. 现代软件工程 第一章 概论 第9题——邓琨

    我采访了一只开发了天津8890便民服务网站系统的团队. - 当时的项目有多少用户,给用户多少价值? 现在还有人用吗? 答:当时项目有近万用户,为天津市民提供便民服务平台,例如联系修理家电.水电气.咨询 ...

  5. 现代软件工程 作业 团队第一个作业

    这是现代软件工程作业系列的一部分 1. 团队成员介绍 介绍每个成员(照片,主页,技术特长,在团队中担任的角色). 建议拍一张有创意的合影. 在介绍的时候,可以采用艺术照等形式, 保护同学的隐私,不想说 ...

  6. 现代软件工程 学生阅读和调查作业

    大学生都是读书人,  要多读书,多向前人学习, 多思考.下面的读书和调查作业必须在截止日期前发表在个人博客上 (也可以转发到团队博客). 同学们的博客都在这里: http://www.cnblogs. ...

  7. 现代软件工程讲义 0 课程概述

    这门课的教学方案在这里. 根据学生和学校的具体情况, 可以进行调整. 师生关系 首先要明确的是, 在这门课中的师生关系是什么样的.  大学目前的师生关系是怎样, 什么样才是理想的师生关系?  我们先看 ...

  8. 软件工程 案例分析作业

    现代软件工程  构建之法 作业https://bbs.csdn.net/forums/SoftwareEngineering?typeId=1723 软件工程作业  案例分析 (建议作为个人或结对作业 ...

  9. 软件工程实践2017结对第二次作业

    结对成员:吴君毅(031502629),吴伟根(031502631) Github链接:https://github.com/n9705/Dep-Stu 一. 题目要求 构造部门和学生输入数据的生成程 ...

最新文章

  1. 链接1: 学习Python以及SQL的好去处----仅链接
  2. 你可以把编程当做一项托付终身的职业
  3. ajax dojo deferred,dojo(四):ajax请求
  4. UVA 10795 新汉诺塔问题
  5. WSO2 API Manager安装部署配置
  6. mysql -- 死锁
  7. MyEclipse-6.5注冊码生成器源代码
  8. C# Winform用户体验整理【原】
  9. stm32之I2C编程前期准备
  10. C#对Java--微软的反击
  11. etoken显示连接服务器失败,etoken
  12. 字体变形html,SVG文字变形动画特效
  13. 使用vscode开发apicloud
  14. mybatis中如何防止sql注入和传参
  15. c语言 英文课本词汇表的生成,【C/C++】词汇表生成
  16. python爬虫之爬取网页基础知识及环境配置概括
  17. 【Linux共享内存】
  18. android调用虚拟摄像头方法,Android:如何在模拟器中使用摄像头?
  19. 冒泡排序和字符串(String)对象及处理字符串的方法
  20. 【T3】查看畅捷通T3软件所连接的sqlserver数据库口令/密码

热门文章

  1. windows系统:Xshell下载安装+连接服务器
  2. oracle中取月初和月末的方法
  3. Java 获取月初时间
  4. MATLAB2016笔记(七):数据分析
  5. python中scale啥意思_scale什么意思
  6. UE4--用插件加载第三方库lib/dll(lsl)
  7. antv L7地图 绘制大小不受控制bug
  8. 对SendMessage与PostMessage的理解
  9. 淘气的小丁-简易聊天器
  10. java实现倒酒的问题_倒酒问题