对技术的伦理关注越来越受欢迎,这体现在对人工智能、隐私威胁、数字鸿沟、研究结果可靠性和软件脆弱性的担忧上。对软件的关注体现在网络安全努力和专业规范中[ACM代码].“黑帽子”指的是将软件作为恶意武器部署的黑客,而“白帽子”指的是针对缺陷产品设置防护措施的组织。但我们有一个灰色帽子问题——忽视。
我的印象是,我用来评估学生课程的标准——严谨的思想、设计和测试、干净的嵌套条件、有意义的变量名称、完整的案例覆盖、谨慎的模块化——已经被抛弃或削弱了。我惊讶地发现,在从事开源项目的著名机构中,开发人员根本不生成任何文档,这是理所当然的,而且,在维护周期中,他们不纠正旧的源代码注释,认为这样的编辑是冒险和自以为是的。所有这些人都是优秀的程序员和优秀的人。在这种情况下,在匆忙的压力下,他们的做法似乎奇怪地合理,即使这些做法降低了程序的可理解性。再加上现代程序的复杂性,我们得出的结论是,在某些情况下,程序员根本不知道他们的代码是干什么的。
软件质量缺陷的例子很容易浮现在脑海中——未经检查的越界值、识别错误情况的复杂条件、对错误常数的初始化。想象一个聪明而认真的编码员在一个重要的会议前完成一个日历模块。她知道闰年的测试是从数字yyyy
值,If (yyyy mod 4 = 0) and (yyyy mod 100 != 0)
,必须通过一些其他规则来改进,以纠正在较长时间内发生的情况,但这段代码是一个原型…她保留了简单的测试,意思是查找细节。但是她的老板提交了她的代码。没有伤害是可以预见的……除了它与另一个模块接口,其中闰年计算包含完整的条件集,这被发现会在某些计算中推动执行沿着错误的路径。程序被指定为修复,但它继续运行,那些知情的人以某种方式补偿它……
什么类型的违规行为是忽视?它不会攻击安全性,因为它发生在防火墙后面。它不会攻击质量理想,因为没有人正式质疑这些理想。这是学位的失败,是付出的失败足够的注意和采取足够的麻烦。哲学能帮助澄清什么是错的吗?一个新兴的理论叫做护理伦理取代了经典的以行为者为中心的责任和正义道德,取而代之的是以病人为中心的道德,在关系中实时表现出来[《大英百科全书护理伦理》,IEP护理伦理].这一理论提供了一种情境视角,而不是更传统观点的老生常谈。虽然谨慎可以被理解为一种美德(关于我3月份在这个空间的帖子[希尔2017年)或作为一个像正义一样的目标,护理伦理的推动者抵制普遍的强制要求。他们可能也会拒绝将其应用于软件的尝试;护理伦理问题的核心是为有需要的人提供护理。
然而,如果我们允许在人际关系之外对软件的忽视进行重新解释,那么对软件的忽视似乎正是护理伦理所解决的一种越界。诉诸于这一理论,使我们能够确定关心的反面,即忽视,是应该谴责的品质。这就产生了我们对软件质量作为一个道德问题的描述,特别是在从女权主义铸造到代码战士文化的工具应用中。但这并没有什么功劳!我们不是在解决问题,只是把它嵌入到一个哲学平台上。这种说法提出了工程伦理方面的问题,比如个人责任与公司责任(以及公司责任是否可以在没有法律的情况下变得连贯和可执行)。要获得简明的总结,请参见斯坦福哲学百科全书中关于技术哲学条目的第3.3.2节,关于责任[9月技术].
纠正过去忽视的品质是专业精神,我的意思是专家为客户做最好的事情,即使以个人时间、精力、金钱或声望为代价——在合理的范围内!当然,这些判断是主观的,当专业人员是自主的,当一个人对产品及其质量进行控制时,这些判断是可行的。当前科技商业世界的反作用力是:(1)雇佣,在这种情况下,大多数程序员不是顾问,而是由公司下达命令;(2)协作,在这种协作下,大多数软件实际上都是委员会的产品。专业主义还取决于对学科同行的强烈个人认同,以及对集团传统的自豪感。
面对执行或培养质量理想的棘手困难,一种可能的解决方案,尽管看起来很奇怪,只是简单地承认这种情况,向公众承认软件并不总是可靠的,或成熟的,甚至是被理解的。考虑到它对漏洞修复的熟悉程度,公众可能不会感到过分震惊。如果我们宁愿拒绝这种宿命式的做法,那么紧迫的问题是,是否存在一些开发者能够并且愿意遵循的公共标准?集体的反应将决定软件工程是否是一门专业。我敦促所有希望为自己的工作感到自豪的编码员阅读专业标准草案[ACM代码],在章节2.1中提到了代码质量。
我们看到,道德问题不仅出现在外部社会环境中,而且出现在软件的核心,编码实践本身,如果你愿意,这是一个灰色帽子问题。我们希望护理伦理可以在某种程度上帮助缓解这些问题。
计算机协会。Code 2018项目.2017年5月30日访问。
[大英百科全书护理伦理]Brian K. Burton和Craig P. Dunn。护理伦理.Encyclopædia大英百科全书。2017年5月30日访问
[Hill 2017] Robin K. Hill. 2017。硅谷的伦理理论.Blog@CACM。2017年3月16日。
[IEP护理伦理]Sander-Staudt, Maureen, 2017。护理伦理.互联网哲学百科全书。2017年5月30日访问。
[SEP Technology] Franssen, Maarten, Lokhorst, Gert-Jan和van de Poel, Ibo。技术哲学.斯坦福哲学百科全书(2015年秋季版),Edward N. Zalta(编)。2017年5月30日访问。
注意:正如所引用的,虽然网络百科全书提供了当前哲学观点的良好调查,但要想深入了解任何观点,都需要阅读原始研究。
罗宾·k·希尔他是怀俄明大学哲学系和怀俄明人文研究所的兼职教授。自1978年以来,她一直是ACM的成员。
这可能是文章中最重要的一段,概述了行业中存在的确切问题:
“纠正过去忽视的品质是专业精神,我的意思是专家为客户做最好的事情,即使在合理的范围内牺牲个人时间、精力、金钱或声望!”当然,这些判断是主观的,当专业人员是自主的,当一个人对产品及其质量进行控制时,这些判断是可行的。当前科技商业世界的反作用力是:(1)雇佣,在这种情况下,大多数程序员不是顾问,而是由公司下达命令;(2)协作,在这种协作下,大多数软件实际上都是委员会的产品。专业精神还取决于对学科同行的强烈个人认同,以及对集团传统的自豪感。”
听起来,除了为开明的组织工作,软件开发人员应该倾向于更多的自主权和自我所有权。
我最近读了《开发者霸权》(一个非常大胆的标题!)http://amzn.to/2pA18wB,它通过鼓励更多的专业性和自主性来解决这方面的问题。
现在已经有了一场支持软件工艺的强大运动,而自由软件和开源运动似乎都比大多数公司更关心质量(尽管他们有时确实忽略了文档)。例如,我们已经更喜欢由公认的聪明/专业开发人员编写的软件。
在这里,我们希望未来有更多的自主权,并允许我们的专业精神来对抗对软件的忽视。
当谈到组织和社区时,这通常也被称为文化。文化通常被视为可持续和根深蒂固的质量属性(如安全)的关键因素。
谢谢你的意见。虽然你们中的一个提倡自主,另一个提倡集体文化,但我从两人身上学到的是,职业自豪感很重要。确实如此!——即使你的努力不是一种职业,而是一门手艺,也是如此。从传统意义上来说,前者需要广泛的教育和同行认证,而后者则需要技能和学徒,并通过公会成员资格进行验证。我认为编程两者都可以。这两种方式都能培养员工的自豪感,让他们在面临偷工减料的压力时,也能以高标准完成工作。
显示3评论