道德与软件开发

发表于:2007-05-24来源:作者:点击数: 标签:软件开发道德
来自 The Rational Edge: 与管理和开发信息技术相关的道德观点非常多,在个人和基础设施力量的推动下变得日益复杂。阅读下面一个大学教授是如何与他即将从事IT行业工作的学生们进行讨论的。 现在正值国家中成千上万的 大学生 刚刚毕业正寻找自己理想工作的时
来自 The Rational Edge: 与管理和开发信息技术相关的道德观点非常多,在个人和基础设施力量的推动下变得日益复杂。阅读下面一个大学教授是如何与他即将从事IT行业工作的学生们进行讨论的。

illustration 现在正值国家中成千上万的大学生刚刚毕业正寻找自己理想工作的时期。计算机科学的毕业生在很多公司面试,希望找到一份网络管理、质量工程、程序编程、领域工程或者其它关键性职位的工作。很多人去人才市场就他们可选择的范围寻找他们的第一份工作,然而其他人已经作为暑假实习生工作了好几年,获得了实际的经验.

作为一个大学教授,我可以很自信地说,我们能培养出应付IT行业中各种技术挑战的毕业生,但是我却怀疑我们为一个好工作而做的准备是否是他们以后真正所面对的。

你们有多少人受过道德方面的教育?尤其是联系到技术以及其应用方面的职业守则。我自己从没受过这方面的训练。在伍斯特工学院我们开设了一门“信息处理的社会含义”的课程。绝大多数计算机科学的大学生修了这门课程。 1 尽管如此,但是只有少数的研究生选择学习这门课程的更高级版本。大学生必修这门课程,而毕业生却是选修。我很快在其他大学搜索了类似课程的情况,让我感到高兴而吃惊的是只有几个学校开设了这类课程。

当我做完给毕业生上这门课的备课工作后,我确信学习道德必定会令每一个从事软件开发的学生有所受益,并很愿意听到一些涉及社会意义课程的相关话题。这门课我准备用一本精彩的书作为框架,Sara Basse的“A gift of fire,第二版” 2

道德的背景

首先我们给道德一个定义。排在第一位的是韦氏(Merriam-Webster)网上词典3中的解释,“一门关于判断什么是好什么是坏,以及道德义务和道德责任的学科”。排在第二定义是,“指导人或集体行为的准则”。我知道对道德的看法有各种不同的看法,在讨论时我们有可能朝着一个急剧下滑的方向进行,因此要依靠我们对道德责任和道德义务的理解来继续阅读。我想我们大多数都将有相似的观点。

事实上,那些IT行业的工作人员负责的技术组件的计划或实施将对塑造整个组织机构的道德观点有所影响。

隐私问题

三个主导讨论隐私的问题:

  1. 免受侵扰的自由
  2. 个人信息的保密
  3. 免受监视的自由

当我思考这些问题时我想起了奥韦斯1984年的名著。看看周围你会发现很多一些与上面有关的不道德的日常例子。

免受侵扰的自由意思是有自己独处的权利。美国公民把这种特权看作一个公民应当拥有的权利。 4 然而我们每天要处理一些电话销售、小广告等其它形式对我们生活干扰的事情,而且这些例子总是层出不穷。我花钱去看一场电影,可之前我要在这坐整整十分钟来看那些与影片毫不相关的商业广告,我想这是你一定和我一样会被激怒吧。这也是一种干扰的形式,我花钱买来的经历。我想会不会有一种花钱为看电影的观众免除这些广告的电影院呢。

你很好地控制了你的个人信息吗?如果你做到了,你一定是少数没有电脑,没有信用卡中的一员;从不分期付款,从不用手机……现在是无法知道你所有个人信息的注册地,更不用说控制它了。个人信息的总计打破了五十年来我们信息技术革命的记录。

免受监视的自由是最后一个私人话题。你多久会清理你电脑中有关个人的信息?够了,差不多已经够了!当今有各种类型的监视器,我们不可能逃避。当然,有人可能会问那些上面有我家房子的卫星照片是不是侵犯个人隐私呢?

在当今信息时代讨论独处自由的道德问题,我们应该问问,独处真的可能吗?如果可能,那么我该怎样保护或者去除我行为中有关隐私的部分呢?

加密技术

远古时代的人就懂得如何将信息译成密文。由于盗窃个人身份和其它以信息为基础的犯罪行为的泛滥,我们通常把为电子信息交流加密。加密是一种保护隐私的方法。如果我保护了我的个人信息,就应该确保我是唯一能得到那个信息的人,如果有人故意闯入,我就应该阻止他。

这看起来像一个简单而合理的事情,然而其它观点的参杂使其变得更加复杂。1991年,美国国会起草了一个议案,要求通讯商给政府提供他们通道上传输的没有加密的信息。这个议案没有被通过,然而其它却有的通过了,现在政府可以中途截取、阅读或者听到绝大多数信息。如果美国政府可以这样做,其它并不谨慎的政党是否可能同样这样做呢?如果我们认为他们不可能这样做那我们就太幼稚了。这正是有关工业软件开发者道德行为问题的结症所在。在我们的体制下为确保信息的完整真实性我们有什么样的责任呢?

不幸的是,我并不能保证我客户信息的安全性和通过我们自己系统通信的安全性。我唯一能保证的是尽我自己最大努力朝着保护他们信息的方向发展。一次又一次地我们看到安全方法被阻碍并被破坏掉。如果有一种理想的加密技术,将会有很多法律障碍来限制它的使用。加密技术把我们带到更多的政治和社会领域。政府——尤其是他们的军事部门——依靠安全的信息传输来达到他们的目的,保证并保护他们的组分。

如果我们认为政府和其它部门有合理的理由来保护信息的安全传输,那我们也必须认可密码和其它加密技术也是合理而道德的。然后我们也不得不考虑发展破坏加密技术体系是否是道德的。

信任

当我的医生对我说我的胆固醇过高,给我开处方说要么调整我的饮食要么药物治疗。我认真地看着他,为什么?因为我信任他,我相信他是一个有道德修养的人,他一向关心我的健康。当我的计算机提示我需要安装一个新的或者更新程序或者通过浏览器接受一小段信息时,我会停下来考虑一下,但通常是愿意接受这个建议虽然我并不完全懂其中的含义。如果我接受了一段恶意代码,其破坏了我的计算机,那又是谁的错呢?我确信是那个恶意软件(一个我们众所周知的术语)的制造者无知的罪行,一个不道德的行为。

可悲的是,即使我们确信这不是一个含有恶意目的的软件我们也会对信任问题产生怀疑。我信任的医生通过计算机系统做了一个帐单,我相信这个系统给我开的帐单是公平的。然而,这个帐单是有可能产生错误的。如果这个帐单只是一点点错误,我也许不会质问这个问题。如果不只是一点点我肯定会质问。谁敢担保这是一个准确无误的帐单?这是一个道德问题吗?

这是一个涉及到损害的问题。任何职业的道德准则都宣称要避免伤害他人,可是当软件不能以值得信任的方式正常工作时,伤害往往就产生了。就那帐单错误的例子来说,关系到财务的利益,虽然小却是通常性的错误。但如果是医疗设备或者航天器呢,那导致故障就可能是丢失性命的大事了。

伤害的造成有些是故意的,有些是无意的。大多数情况下,故意造成伤害是不对的。文明的国度有拒绝痛苦的习惯,因为他们认为那是不道德的。但是我们认为医生为拯救病人的性命而截肢的做法是道德的,而那些为了增加病人的付款而对病人进行不必要的外科手术是不道德的。

无意伤害总是出乎预料的结果。医生是人,会在给病人的诊断或者治疗中产生错误而导致伤害。软件开发者允许一些产生伤害的错误。我们应该接受许多这样无疑伤害的错误,经常注意并限制这些伤害,比如对我们的数据进行日常备份。

我认为道德几乎等同于潜在的损害,也包括对你适当地工作和行为的负责。心脏监视软件的成本比你孩子足球游戏的软件的成本要高得多的原因是前者系统破坏产生的影响要大得多。一个可靠的道德的软件开发者会花费更多的时间来确定心脏监视软件的质量,事实也确实如此。如果我们信任一个软件就应该信任他的制造者。

言论自由

不管你居住在什么样的国家也不管你是什么学历,言论自由是一个被保护的权利。当你在网上时你可能感到比在工作地点或者公共场所言论更自由。但是这样感理解是很危险的。我们看到员工被解雇是因为他们在博客中写过什么东西。更糟糕的是我们看到一些人因为在网上批评他们政府而被囚禁或者驱逐。作为自由常规的副产物,许多作家感觉在网上可以自由的发表言论。也有一些临时研究院没有核查为网站撰稿人究竟是谁就引用网站内容作为权威认识的言论。

世界上许多国家的社会团体都重视言论的自由。表面看来,仅仅的道德问题也许会遏抑自由。但是想想那些小广告:那些散布小广告的人有权利让别人都遭受这种视觉上的折磨吗?我们每天在网上被各种新形式的垃圾邮件所“轰击”,有些是商业的,有些是关于政治的,有些完全是十分令人讨厌的,所有形式广告的共同点是它们都是多余的。难道散布小广告是道德的吗?阻止这些小广告的散布是道德的吗?

这些问题让我们开始考虑言论自由的问题。如果你有兴趣看看法院的案例是如何结束的,我建议你看看英特尔和Hamidi的案例。在这个案例中,英特尔曾经的一个员工Ken Hamidi,向英特尔3万多人发一封很大的邮件。Ken Hamidi于1995年被英特尔公司解雇。1998年他发了一封很大的论述公司劳动惯例的邮件。英特尔公司想阻止Ken Hamid的邮件。他们辩论说Ken Hamid没有这个利用设备传播他的信息的权利,干扰英特尔公司所有物。英特尔把这种行为比作侵入,他们说Ken Hamid发邮件给他们的员工是非法侵入行为。然而Ken Hamid却说他有通过自己计算机发邮件的权利,他的发行属于言论自由而不是非法侵入。

法院最终裁定的结果是英特尔公司获胜。法官说这个诉讼是一个非法侵入的案例,服务器提供商——英特尔,拥有永久阻止Ken Hamid向他们发送邮件的权利。 5 这个裁决随后被加利福尼亚最高法院推翻,他们说英特尔公司没有证据证明这些邮件损害了他们的计算机,因此并不存在非法侵入。“阅读一封不令人高兴的邮件只是使人感到窘迫,受损害的是接受邮件的邮箱;干扰电话是对个人独处的侵扰,受损害的是接受者的电话设备。” 6

类似于上面情况的小广告你会站在哪一方呢?如果这个小广告形成一个程序呢?这有区别吗?想想如果零售信息的散布者编写了一个向接受者定时发送不必要邮件的程序,这跟邮件销售公司定时向他们购买的地址上的用户发送邮件有什么区别吗?你的道德和道德价值将影响你对这个问题的回答,这是问题的关键。如果道德和道德价值取向一致,你得锻炼你严格推理有关道德和道德价值问题的技巧。作为一个人,你可能已经意识到这样做的必要性;作为一个IT工作人员,作为整个组织机构的一部分,你也应该这样做。事实上许多销售、政治和媒介组织机构都是依靠这种应答来销售他们的产品或者使我们信任而为他投票的。

知识产权

知识产权提出一个当今最重要的道德问题:它的所有权、价值以及物主对它的尊敬。许多商业企业的技术部门在知识产权方面比其它涉及到的道德问题花了更多的时间。知识产权的问题很快划分了软件开发团体界线,因为软件事实上是知识产权。

软件是无形资产,他是思想的具体化。我们可以把软件看作我们的著作、乐曲或者油画。在版权法律下这些媒介都受到合法的保护。软件同样可以受到保护吗?这种保护具体能提供什么?

版权法跟其它法律一样是复杂的。其复杂性之一体现在它合理使用的概念上。合理使用意思是当它在新的创作物中有贡献,且不涉及作者或者出版商利益的前提下你可以使用。下面是对部分使用被保护资料例子的回顾。

知识产权和版权问题是免费软件运动的中心问题:

  • 运行软件的自由
  • 通过查看源代码来学习软件的自由
  • 重新分配拷贝软件的自由
  • 改变程序,交换你自己想法的自由。

如果你听过Richard Stallman的关于软件的演讲以及他自己对软件的看法,你可能被他的激情所吸引。你也许并不赞同他的观点(我也不赞同他所有的观点),但是你会明白他对道德的理解。在论述软件所有权时他使用“道德的”和“邪恶的”这些词语来表达他的观点。如果你理解“GUN工程的哲学”你就会理解免费软件运动背后的基本原则。这个章节所持的观点是:免费软件是一个自由的问题。人们可以在各种社会需要时自由使用软件。软件不同于物质性的物体(比如椅子、三明治和汽油)的是它们可以很容易地被拷贝或改变。这种可能性使软件充分发挥它的使用价值,我们认为软件使用者是可以使用它们的。" 7

软件事实上是对社会有用的。更进一步说它在经济上是有用的,像椅子、三明治和汽油一样。许多个人观点认为我们应该判定他们是否想拥有他们的劳动成果(不管是体力劳动,像劈柴,还是脑力劳动)。哪些决定维持他们所有权的人最终将由商业市场决定他们的赔偿程度。那些免费提供他们劳动的人们认为分享他们的思想观点更为重要,通过专用化或者合作也许还会得到酬金。这两种所有权我都会尊重。

我遇到的一种非常常见的问题,尤其在学生中十分普遍,是他们被这种免费知识产权的思想所吸引,却不清楚当他们拷贝有些东西并不是免费的。最近一个学生跟我讨论一个我们都很喜爱的电视节目。当我说我错过了最后一部分时他说:“我可以发给你。”当我问这种拷贝是否合法时他说他的一个朋友已经记录下来,并数字化发给了他。

我指出这种分发拷贝的行为是不道德的。他抗辩说如果他当时在家,他也会记录下来,因此没什么不同。在他看来,结果就是证明这种方法时正当的。我拒绝了他的好意,后来我们花了更多的时间讨论这个问题。他承认他已经明白了我的意思,但是我确信他并没有回家毁掉他的拷贝。我有一种感觉,他的观点是“没有伤害,就没有犯规”。他的行为没有伤害任何人。

这种看法也存在于著名的Napster案例中。Napster使用者被指控非法共享音乐文件。这个讼案对Napster进行了审查,使用者,合理利用以及责任。法院最后裁决是Napster的行为是版权侵犯导致最初的Napster网站关闭。

现实道德

大多工程学科认为道德问题是从业者引导的。许多工程师被要求获得专业证书是为了在他们的领域实践,那么软件工程师又是为了什么呢?事实上已经有好几种为程序师颁发的证书。20世纪70年代我成为一名注册数据处理师。 8 这证明那个时候我已然懂得程序设计中艺术级的基本概念。我参加证书考试,仅仅是因为我喜欢考试。这个证书在我职业中既没什么帮助也没什么坏处。

两个主要的计算机社会团体,ACM和IEEE都有他们的成员愿意遵守的职业守则。 9 我不敢肯定他们大多数成员都懂得原则的内容,但如果发现他们大多数成员甚至没阅读过这个原则,我也不会感到奇怪。IEEE CS拥有一个CSDP证书。 10 这个CSDP证书有它自己职业守则和职业惯例。 11

我不敢说这个证书在其它专业工程学中有多么大成就,但它在软件开发中还是有一定的作用的。比如,目前拥有CSDP地位的人不过600人。 12 设想这个证书在我们的职业中一点作用都不起,同样也可设想相当多属于ACM和IEEE CS的人并没意识到道德原则问题,更有甚者,大多软件开发者可能并不是ACM和IEEE CS的成员,这样的话我们的失败就会有无数原因。

不同的行为守则也有共同之处。CAM守则有24强制性的个人责任,IEEE守则中10条。

“无害”这个短语在希波克拉底誓言中并没出现,尽管许多人认为它出现过。虽然它道德原则审查中没有出现,但它的精神本质却自始至终被贯彻着。CAM守则说“避免伤害他人”,它详细阐述了伤害“伤害是指损害或者产生负面不良的结果,比如令人不快的丢失信息,财产损失,财产破坏或者不需要的环境影响。”IEEE守则有一个更广义的阐述:“伤害是在做出与安全、健康以及公共福利时承担责任,迅速揭露可能损害公众或者环境的因素。"

不伤害他人的确是一个相当广泛的概念,它在很多专业行为规则中都存在。然而邪恶在次贫地区中有详细阐述。我们已经在关于信任的讨论中略微谈到伤害的问题。正如医疗工作者不得不把他们的道德定位跟社会需求结合起来一样,软件开发者必须决定,对于他们来说什么是精神上的正确选择。

伤害也有不同的类型,一种可能是软件开发者的疏忽造成的,另一种可能是外界因素——恶意的电脑黑客(malicious hacker)引起的。 13

软件开发者该在哪些方面加强他们思考关于道德问题的能力呢?有人希望从做课程论文开始,然而我们需要在工业中继续讨论和辩论这个问题。我们必须清楚什么是我们对同事的期望以及什么是我们所无法容忍的。工业需要跟学术合作来确保道德的辩论永远存在下去。

结束之前我会问到“在道德行为方面你对你的软件开发人员的期望是什么?”你曾想过这个问题吗?你的团体有职业准则吗?如果答案是否定,为什么没有呢?他们跟你有相同的道德价值观吗?只需要花一点点时间,在一个团体会议上或者其它论坛上提出来让大家思考,也许就会对你有所帮助,让你的团体集中到你想要跟他们分享的核心价值的问题上来。

原文转自:http://www.ltesting.net