跳转到内容

专业主义/伊恩·博戈斯特、娜迪亚·埃格巴尔和软件工程师

来自维基教科书,开放的世界,开放的书籍

2015年,伊恩·博戈斯特,一位游戏设计师和佐治亚理工学院媒体研究和交互式计算教授,在《大西洋月刊》上发表了一篇文章,名为“程序员:停止称自己为工程师”,讨论了他对使用“工程师”一词来描述软件工程师的看法。 [1][2]博戈斯特认为,现代软件工程原理和方法论已经偏离了传统工程领域,因此“软件工程师”一词不再适用,这样做是对工程行业的伤害。娜迪亚·埃格巴尔在回应博戈斯特的文章中指出,博戈斯特的观点虽然部分正确,但没有考虑到让该领域发生如此变化的软件工程师。 [3]

职位名称差异

[编辑 | 编辑源代码]

博戈斯特强调软件工程和传统工程原理之间的差异,作为他对“软件工程师”一词看法的理由。

传统工程

[编辑 | 编辑源代码]

博戈斯特将传统工程学科定义为机械、土木、化学、电气和环境工程,强调它们对基础设施和公共福利与安全的关注。这些工程领域的​​设计过程是一个非常谨慎而彻底的过程,它依赖于准确性和精确性,以确保产品在现实世界中的成功,因为错误会导致灾难性的后果。 [2]失败的例子包括魁北克大桥的多次坍塌,其中一次是由于负荷误算,以及美国宇航局的气候轨道器,它在工程师未能正确转换单位后坠毁在火星表面。 [4][5]博戈斯特指出,因此,工程师有责任“第一次就做对”。工程道德规范也强烈强调公共福利和安全。 [6]传统领域的工程师现在必须满足各种要求才能执业,包括学历和专业资格考试。

软件工程

[编辑 | 编辑源代码]

博戈斯特认为,软件工程没有遵循与传统工程相同的原则,因此不应该在职位名称中使用“工程师”一词。当软件工程在 1960 年代初开始发展时,它确实表现出更多博戈斯特所描述的传统工程特征。软件开发所需的物理基础设施已到位,软件维修费用昂贵,有时甚至需要物理干预。这意味着软件工程师与其他工程师一样,必须仔细而有条理地编写代码,以最大程度地减少在实施后修复和调试的机会。然而,随着个人电脑开始越来越普遍,软件开发变得更加容易被公众接受。博戈斯特认为,这使得软件工程成为一种更非正式的实践,产生了两个后果。首先,它减少了在第一次尝试中制作正常工作的软件的压力。软件工程教育现在侧重于快速编写和测试迭代,然后在之后修复。博戈斯特将此与土木工程进行比较,称该学科永远不会有这样的原则。其次,它将该学科与其他领域隔离开来,包括其他工程领域。虽然许多计算系统仍然与社会中的其他领域相互连接,但博戈斯特指出,社交媒体等平台只依赖于软件。这种缺乏与其他领域的合作违背了博戈斯特对传统工程的定义。现在的软件工程师不再需要担心甚至了解软件工程背后的数字和物理基础设施,而只专注于代码。这可以使代码更可靠,但也造成了软件工程师与工程其他部分之间更大的差距。然而,博戈斯特还指出,现代软件工程问题正在变得越来越大规模,在日常生活中越来越突出,这表明其重要性、高风险以及因此需要遵守传统工程方法。 [2]

根据博戈斯特的说法,“工程师”一词的含义带有来自设计和维护复杂大型系统的技能的声望。他认为,在软件工程中使用该词“贬低了该词”,并且被用来吸引硅谷投资者,使其显得更具声望和可信赖。博戈斯特将这个概念称为“工程师清洗”。 [2]

在工程领域,工人们通常需要在其领域获得认证以证明其专业知识。美国国家专业工程师协会 (NSPE) 和美国质量学会 (ASQ) 等组织都提供证明此认证的证书。博戈斯特特别关注什么是注册工程师 (PE),这是 NSPE颁发的认证。 [6]他回顾了为什么工程领域的人员需要获得此认证。博戈斯特和 NSPE 都指出,为了获得此认证,您需要: [2][6]

  • 拥有经过认证的课程的四年制学位
  • 通过工程基础考试和工程原理与实践考试
  • 在已获得 PE 资格的人员的指导下完成四年的工作经验。

博戈斯特还补充说,并非所有工程师都需要学位,但是,要能够开设咨询业务或声称自己是正式工程师,您需要获得学位。该声明也直接来自 NSPE,NSPE 指出 PE 是唯一被允许创建公共计划、向学生教授工程的工程师,并且还发现 PE 的平均工资可能更高。 [7]正如他们所说,这种学位也具有伦理意义。当一个人担任 PE 的角色时,这意味着他们对自己的生命负责,如果出现问题,他们将对发生的事情负责。因此,此证书表明他们是有责任感的工程师,他们致力于维护人们和支持他们的工程师职业。

对于客户来说,这意味着您拥有获得他们信任的资格。对于雇主来说,它表明您有能力承担更高层次的责任。在您的同事中,它需要尊重。对于您自己来说,它是一个自豪的象征,也是您来之不易的成就的衡量标准。

-美国国家专业工程师协会

软件认证

[编辑 | 编辑源代码]

对于软件工程师来说,虽然存在认证,但很少是硬性要求。像 NCEES 和 IEEE 这样的组织合作创建了软件工程师的认证体系。2013 年,第一个类似于 PE 认证的软件工程师认证开始提供。当时软件工程师需要参加考试并通过才能获得该领域的认证。自 2019 年停止该考试以来,该考试一共进行了五次,共有 81 名考生参加。2018 年 1 月,考试政策与程序委员会向 NCEES 建议停止该考试。次月(2018 年 2 月),NCEES 接受了 EPP 委员会的决定,并决定 2019 年 4 月将是该考试的最后一次考试。2018 年 4 月,只有 19 人报名参加考试,这表明软件工程领域对这种认证的需求并不高。[7]

除了软件工程师的认证之外,还有其他形式的认证可以证明对编程语言或计算机编程服务的精通(例如思科或 C++ 认证)。特别是,像亚马逊这样的公司提供亚马逊云服务 (AWS) 认证,甚至有些公司会特别寻找这种特定技能。因此,虽然计算机工程领域没有类似于工程领域的硬性要求,但某些特定领域的人可以证明自己的精通,这可能值得申请。

软件领域的学位要求

[编辑 | 编辑源代码]

对于绝大多数软件相关职位来说,计算机科学学位通常是入门级编程职位的必备条件。当然,也有例外,比如 Google 和美国陆军等公司提供不需要 CS 学位的职位。[8] 然而,这并不意味着仅满足最低要求就能轻松获得工作。招聘者还会关注其他要求,通常会重点关注应聘者在没有接受正规教育的情况下所取得的成就。虽然这确实更难,但这整个理念与工程领域普遍存在的学历要求形成了巨大的差异。

数字基础设施

[编辑 | 编辑源代码]

2015 年,娜迪亚·埃格巴尔针对伊恩·博戈斯特的文章“大西洋错了,软件工程师确实存在”做出了回应,反驳了博戈斯特关于软件开发者不配称为“工程师”的观点。埃格巴尔认为,真正的软件工程师确实存在,但他们只是程序员中的少数。她声称,真正的软件工程师与仅仅是“开发者”或“程序员”的区别在于她所说的“数字基础设施”,她将其定义为“一层又一层的开发者工具、语言、库和框架,使得“程序员”在当今时代更容易编码”。[3]

许多现代软件开发者使用的数字基础设施的一个例子是集成开发环境 (IDE)。IDE 是高度增强的源代码编辑器,提供诸如语法高亮、错误检查、调试工具以及其他根据其实现方式而有所不同的功能。IDE 可以将复杂的过程(例如将大型程序编译成可在典型计算机上运行的可执行文件)隐藏在单个按钮的点击之后。一个为 Python 编程语言设计的流行 IDE 称为 PyCharm,由捷克公司 JetBrains 开发和维护,它配备了“预安装的智能 Python 辅助功能,提供各种功能,如智能代码补全、代码检查、动态错误突出显示和快速修复,以及自动代码重构和大量导航功能”。[9] 除了 PyCharm 之外,JetBrains 还维护着可以用于开发超过 12 种其他编程语言的 IDE,扩展了对不同技术群体开发者的帮助。[10] JetBrains 的软件员工正是埃格巴尔定义中称得上“工程师”的典型代表,因为他们创建的工具帮助全球数百万程序员进行软件开发流程。

虽然对数字基础设施做出贡献似乎将一个人提升到了普通程序员之上,但那些负责现代软件基础设施中最关键部分的人却未必能够获得太多回报,除了那些认可他们贡献的人的尊重之外。一个明显的例子是 OpenSSL 的开发团队。OpenSSL 是一个安全网络通信和加密库,如今被三分之二的 Web 服务器使用。OpenSSL 被银行、防火墙、武器系统、智能手机、政府机构以及其他处理敏感数据的组织使用。尽管 OpenSSL 具有关键的功能,但它由一个由 11 名志愿者组成的团队维护,每年收入不到 100 万美元。[3] 虽然 OpenSSL 团队可能赢得了同行们的尊重,并为他们的技术影响数十亿人感到自豪,但他们的情况表明,对于新开发者来说,几乎没有激励措施去走上成为工程师的道路。

尽管软件影响着世界上几乎所有人的生活,但软件工程仍然是一个非常年轻的职业,并且不断发展。与传统工程学科相比,该职业的尚不成熟引发了人们对程序员是否应该被称为工程师的争论。然而,用来称呼那些创建和维护软件的人的术语可能无关紧要,因为与“工程师”一词相关的法规和职业标准才是影响公共安全的重要因素。从政府和银行等长期机构到社交媒体等现代现象,推动着一切的软件的一致性直接影响着数十亿人的生活质量。无论通过政府监管、教育认证还是舆论转变,确保进入或已在软件相关职业中的人员的高标准,都位于软件工程未来的中心。

参考资料

[编辑 | 编辑源代码]
华夏公益教科书