软件工程专业这两年有很多变化。新的参考文献告诉我们很多事。这些文献讲了软件怎么开发。它们讲了人工智能怎么影响编程。它们讲了团队怎么合作。它们讲了代码怎么写得更好。我们一点一点来看这些内容。
人工智能现在很重要。很多软件工程师用人工智能帮忙。人工智能可以写一些代码。人工智能可以检查代码的错误。人工智能可以帮助我们想问题。参考文献里有很多研究。这些研究说人工智能工具越来越好。工程师用这些工具工作更快。但是人工智能也有问题。人工智能写的代码不一定都对。工程师需要仔细看人工智能写的东西。人工智能需要人告诉它做什么。工程师要学怎么和人工智能说话。这就是提示工程。提示工程的意思是怎么问人工智能问题。问得好人工智能回答得好。问得不好人工智能回答不好。软件工程师要学这个新技能。
参考文献还讲了低代码平台。低代码平台让编程更简单。普通人也能做一些软件。不用写很多复杂的代码。拖拖拽拽就能做出东西。这对企业很好。企业可以更快做出软件。专业软件工程师的工作也在变。工程师要设计这些平台。工程师要处理平台做不了的复杂部分。工程师还要把平台做的和其他系统连起来。低代码平台不能做所有事。复杂的业务逻辑还是需要人写代码。软件工程师要明白什么时候用低代码。什么时候自己写代码。
现在大家很关心软件安全。这两年安全的事情更多了。参考文献里安全的内容很多。软件安全要从开始就想到。不能等软件做完再加安全。这叫安全左移。意思是安全的工作要早点做。写代码的时候就想安全。设计软件的时候就想安全。参考文献教了很多安全的方法。比如怎么检查代码的安全问题。比如怎么处理用户的数据。比如怎么防止坏人攻击软件。软件工程师都要懂这些基本的安全知识。不是只有安全专家才需要懂。
软件开发的方式也在变。很多人远程工作。团队不在一个办公室。参考文献研究远程团队怎么合作。远程合作需要好的工具。需要好的沟通习惯。大家要经常开会。开会要说清楚事情。写文档也很重要。文档要清楚明白。别人看了才知道怎么做。任务要分得清楚。每个人知道自己做什么。远程工作容易让人感觉孤单。团队要想办法让大家有联系。偶尔聚一聚也很好。软件工程师要适应这种工作方式。
软件测试不一样了。现在测试更自动化。人工智能也帮助测试。人工智能可以找测试的地方。人工智能可以做一些测试数据。但人还是很重要。人要设计测试的思路。人要检查测试的结果。测试要早点做。代码写一点就测试一点。这样问题发现得早。问题发现得早就好解决。测试不仅仅是测试工程师的事。写代码的工程师也要做测试。这叫开发者自测。参考文献说这样软件质量更好。
软件工程教育也在变。学校教的东西要更新。学生要学人工智能。学生要学云计算。学生要学网络安全。学生还要学和人合作。写代码的技术重要。和人沟通也重要。参考文献说项目实践很重要。学生要做真实的项目。学生要团队一起做项目。这样学到的东西更有用。工作中需要的东西学校要教。
云计算现在很普遍。软件很多都在云上。软件工程师要懂云计算。要知道怎么把软件放到云上。要知道云服务怎么用。云服务有很多种。有的提供计算能力。有的提供数据库。有的提供人工智能功能。软件工程师要会选择。参考文献讲了很多云的最佳实践。比如怎么设计才能在云上工作得好。比如怎么保证云上的软件安全。比如怎么控制云上花的钱。这些都是新知识。
开源软件很重要。很多软件用开源的东西。软件工程师经常用开源的代码。参考文献说用开源代码要注意法律问题。要注意安全问题。开源代码不是想用就能用。有些开源代码有要求。用了以后自己的代码也要开源。软件工程师要懂这些规则。公司要有政策管理开源代码的使用。用的时候要检查开源代码有没有安全问题。有问题要赶快解决。
大数据和软件工程有关系。软件要处理很多数据。参考文献讲怎么设计处理大数据的软件。这样的软件要能处理很快的速度。要能处理很大的数量。软件的结构要设计好。传统的软件结构可能不够用。要用新的结构。比如流处理。比如分布式计算。软件工程师要懂这些概念。
软件工程师的职业道德被更多讨论。参考文献提到工程师要对社会负责。写的软件要公平。不能有偏见。人工智能软件尤其要注意。数据可能有偏见。算法可能有偏见。工程师要想办法减少偏见。软件要保护用户的隐私。不能乱用用户的数据。工程师要思考软件的影响。软件可能改变人们的生活。要想清楚改变是好是坏。
微服务架构还在发展。很多公司用微服务。把大软件分成很多小服务。每个小服务做一件事。这些小服务一起工作。参考文献讲微服务的好处。也讲微服务的困难。好处是每个服务可以独立开发。独立部署。容易扩大规模。困难是管理很多服务很复杂。服务之间要通信。出了问题不好找原因。软件工程师要学微服务的开发。要学相关的工具。比如容器技术。比如服务网格。这些都是现在需要的技能。
软件开发要求速度。业务变化快。软件要跟着快。这叫敏捷开发。参考文献还在深入研究敏捷。敏捷不仅仅是开会。敏捷是一种思维方式。要快速做出东西。要快速得到反馈。要快速改进。团队要能自己决定事情。沟通要直接。文档要够用就行。太多文档浪费时间。软件工程师要适应这种快节奏。
软件工程研究重视实践。新的参考文献很多来自企业。企业分享它们的经验。什么方法有用。什么方法没用。企业遇到的实际问题。企业解决问题的办法。这些经验对别的公司有帮助。学术界和企业合作更多。学者研究企业的问题。企业试用学者的新想法。这样软件工程的知识增长很快。
软件工程师要一直学习。技术变化快。新的东西一直出来。参考文献说学习能力很重要。工程师要自己主动学。公司要给工程师学习的时间。学习的方式很多。可以看书。可以看网上的课程。可以参加技术会议。可以和同事交流。学习不只是学新技术。也要学软技能。比如怎么说话清楚。怎么写文档明白。怎么和别人合作好。
软件工程的范围变大了。软件现在到处都有。手机里有软件。汽车里有软件。家电里有软件。甚至衣服里也有软件。这叫物联网。软件工程师要懂硬件吗。要懂一点。至少要懂怎么和硬件交互。参考文献讲嵌入式软件。讲边缘计算。这些领域和传统软件不一样。资源更有限。可能没有很强的计算能力。可能没有一直联网。软件要更小。更高效。更可靠。这是新的挑战。
软件工程专业这两年很活跃。参考文献反映了这种活跃。新技术带来新机会。也带来新问题。软件工程师的工作内容在变。需要的技能在变。教育的方式在变。研究的重点在变。看这些文献能帮助我们理解方向。能帮助我们准备未来。软件工程还是关于造出有用的软件。这个核心没有变。变化的是怎么造软件。用什么工具造软件。和谁一起造软件。为什么人造软件。这些问题的答案一直在更新。参考文献就是这些更新的记录。我们读这些文献。我们学这些新知识。我们就能跟上时代。我们就能做出更好的软件。