软件工程专业应该学什么?

昨天,我朋友的孩子报考了软件工程专业,问我软件工程到底学啥?所以我给他开列了一个书单。

现在高校开了一堆花名头的专业:

偏技术类:云计算、大数据、人工智能、物联网

偏应用类:电子商务、信息管理

但我个人感觉,会编程语言、会使用开源框架的人一堆,但是中国太缺系统分析、系统设计、系统架构的人才了,而且这些课程我个人认为应该是软件工程的核心课程,但是好像我国高校的软件工程专业也不教这些东西。

(1)

软件工程也是工程。

一想到工程,我们就想到:

规划、勘察、设计、试验验证、评审

标准规范、注册认证

建造、预构件、大型施工工具

质量监理质量保证、生产安全监管

项目进度管理/成本管理/变更管理、工程文档管理

(2)系统分析

需求分析、系统分析这块我一直没学过什么好书,我自己上大学时考系统分析员也没考通过。

我在需求分析这方面看过的书,只有:《用户故事》。

我在系统分析这方面看过的书,我推荐:《分析模式:可复用对象模型》。其实这本书命名为《分析模式》可能会更好,不用带副标题。

如果说分析的方法论,我感觉推荐一本:《金字塔原理》。

(3)系统设计

系统设计,我特别注重层与层、块与块的关系。这个关系如何既解耦又关联,这是需要技巧的。所以我推荐两本书:《领域驱动设计:软件核心复杂性应对之道》、《设计模式》。

设计标准符号:《UML精粹》。还有一本国人写的《大象:Thinking in UML》也非常好。

(4)架构设计

关于架构,这两本挺好:《企业应用架构模式》《架构整洁之道》

软件架构风格,这些年从组件到SOA服务到微服务,所以我推荐:

面向对象时代:我没看见过好书。另外,大师Booch的《面向对象分析与设计》,我个人感觉,不是一本关于使用面向对象方法进行架构设计方面的好书。

组件时代:《COM本质论》《J2EE Development without EJB》

SOA时代:《SOA核心技术及应用》

微服务时代:《服务架构设计模式》

(5)软件开发

关于编程语言、编程框架的书汗牛充栋,但是站在软件工程角度看软件开发实现的书就很少了。

我推荐几本:

《测试驱动开发》

《重构》

《代码整洁之道》

《极限编程》

(6)质量保证

本来软件测试、质量保证,这是软件工程非常重要的组成部分。可惜,我一本好书也没见过。可见大家对软件质量的事实的不重视。

(7)工具

说起软件开发的各种工具,大家对开发IDE、框架、前端UI组件、运行中间件、数据库如数家珍。站在软件工程的角度,大家对各种CI持续集成、CD持续发布、DevOps工具也不太陌生。

也许是我孤陋寡闻,我个人在这方面看过的唯一一本感觉好的书就是:《持续交付:发布可靠软件的系统方法》。

(8)过程管理

软件工程管理,如果大家想从整体框架概要上学习,我首推《TOGAF标准手册》。不知道啥原因,好多人把TOGAF当做软件架构方法来看,我个人感觉不妥。如果大家真要做软件架构,建议还是看看我上述在系统架构设计一节中推荐的书,那些知识才能让你的软件真正具有架构性。你看完TOGAF你也不会让你的软件具有架构性。很多企业IT决策人特别喜欢引入TOGAF,以为TOGAF学习了使用了就能让软件有架构性,这真...。

综合类的我推荐《代码大全》,实践类的我推荐《微软的秘密》。

论项目管理图书,我推荐《PMBOK指南》。我是强烈推荐在软件研发过程中引入专职的项目经理的,不要让产品经理、开发部门经理或开发Leader担任项目管理的职责,这是大大的误区。

《人月神话》是软件工程类非常知名的书,不过我不推荐阅读。

大家一想到软件工程就想到项目周期非常长、参与人数非常多、项目流程非常重。我个人在软件研发领域从业这么多年,给我一个感受就是:各专业部门各目标不一致、共享信息传递信息效率慢/信息失真变形。所以我一直推崇小团队、精益小团队、全职能团队、外科手术医生式团队。我推荐给大家一本书:《SCRUM敏捷软件开发》。

另外我个人不太喜欢敏捷Agile这个表达,我感觉这个词让大家产生了误解,我更喜欢用精益Lean这个词,就是现在经常讲到的市场-产品匹配、需求-实现匹配。这几年随着华为国产化崛起,大家一窝蜂学华为,所以IPD这个很古老的词汇和方法又在中国IT业界流行了。大家一想到IPD来自IBM就觉得这个方法很笨重。不过我倒推荐两本书:《IPD华为研发之道》《IPD重构产品研发》。这两本书都是离职的华为人写的,但是实际上写的也不是IPD更不是IBM的那套IPD,只不过打的是IPD的名头,不过内容蛮鲜活的,市场-产品匹配、需求-实现匹配、市场-需求-产品-实现各部门各岗位如何串联。

082b3cec3a0075f406dbc45f0b162568.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/56417.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI 绘画Stable Diffusion 研究(六)sd提示词插件

大家好,我是风雨无阻。 今天为大家推荐一款可以有效提升我们使用 Stable Diffusion WebUI 效率的插件, 它就是 prompt-all-in-one, 它不但能直接将 WebUI 中的中文提示词转换为英文,还能一键为关键词加权重,更能建立常…

【网络编程】利用套接字实现一个简单的网络通信(UDP实现聊天室 附上源码)

网络编程套接字 🐛预备知识🦋理解源IP地址和目的IP地址🐌认识端口号🐞 理解 "端口号" 和 "进程ID"🐜简单认识TCP协议🦟简单认识UDP协议🦗 什么是网络字节序 🕷相…

opencv36-形态学操作-膨胀 cv2.dilate()

膨胀操作是形态学中另外一种基本的操作。膨胀操作和腐蚀操作的作用是相反的,膨胀操作能对图像的边界进行扩张。膨胀操作将与当前对象(前景)接触到的背景点合并到当前对象内,从而实现将图像的边界点向外扩张。如果图像内两个对象的…

替换开源LDAP,某科技企业用宁盾目录统一身份,为业务敏捷提供支撑

客户介绍 某高科技企业成立于2015年,是一家深耕于大物流领域的人工智能公司,迄今为止已为全球16个国家和地区,120余家客户打造智能化升级体验,场景覆盖海陆空铁、工厂等货运物流领域。 该公司使用开源LDAP面临的挑战 挑战1 开源…

读取文件和写入文件操作

在java中会涉及到对文件进行读取和写入操作,以下将介绍如何用java对文件进行读取和写入 读取 通过Readr读取字符流文件中的数据 读取字符流文件中的数据表示以字符为单位进行读取 package 文件操作;import java.io.*;/*** Created with IntelliJ IDEA.* Descript…

ubuntu调整路由顺序

Ubuntu系统跳转路由顺序 1、安装ifmetric sudo apt install ifmetric2、查看路由 route -n3、把Iface下面的eth1调到第一位 sudo ifmetric eth1 0命令中eth1是网卡的名称,更改网卡eth1的跃点数(metric值)为0(数值越小&#xf…

Spring Boot集成Mybatis-Plus

Spring Boot集成Mybatis-Plus 1. pom.xml导包 <!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--mysql驱动--><dependency><groupId>mysql<…

【排序算法】python之冒泡,选择,插入,快速,归并

参考资料&#xff1a; 《Python实现5大排序算法》《六大排序算法&#xff1a;插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序》 --代码似乎是C语言 ———————— 本文介绍5种常见的排序算法和基于Python实现&#xff1a; 冒泡排序&#xff08;Bubble Sort&am…

【C++】哈希开散列 | unordered系列容器的封装

文章目录 一.开散列1. 开散列的概念2. 开散列结构3. Insert 插入4. Find 查找5. Insert 扩容6. Erase 删除7. 析构函数8. 其它函数接口9. 性能测试 二.封装1. 封装内部结构2. 实现接口 三.代器器1. 迭代器的定义2. 常用接口3. 迭代器4. begin()、end()5. find的改动6. 下标访问…

检查网站是HTTP那种协议与获取域名的ipv6地址

前言 最近在做HTTPS的应用&#xff0c;可能需要使用ipv6的地址做SLB&#xff0c;但是怎么检查配置正确&#xff0c;总不能每次都看日志吧&#xff0c;实际上客户端也很容易查看&#xff0c;总结工作经验。 检查HTTP协议版本 笔者想到了使用浏览器方式&#xff0c;或者抓包&a…

Java Selenium WebDriver 网页填报

一、windows环境安装配置 1.安装chrome浏览器 在“关于chrome”界面&#xff0c;查看浏览器版本号 2.下载chromeDriver 在https://registry.npmmirror.com/binary.html?pathchromedriver/下载对应版本的驱动&#xff08;如果浏览器版本过新&#xff0c;建议下载最接近的版…

Docker环境下MySQL备份恢复工具XtraBackup使用详解 | Spring Cloud 62

一、XtraBackup 简介 Percona XtraBackup是一个开源的MySQL和MariaDB数据库备份工具&#xff0c;它能够创建高性能、一致性的备份&#xff0c;并且对生产环境的影响很小。Percona XtraBackup通过在不停止MySQL服务器的情况下&#xff0c;复制InnoDB存储引擎的数据文件和事务日…