让我至今仍旧感到羞耻的代码

码林冰川
• 阅读 988
简评:最近基因编辑婴儿的事件闹得沸沸扬扬。
私以为,技术应该在道德的规范下使用,不然一把利器也会变成凶器。这件事也让我想起了两年前一篇文章,原作者年轻时为药厂写的网站,误导消费者买药,最后导致一名女孩吃了后因抑郁而自杀。

下文中「我」指代原作者 Bill Sourour

如果你是一名程序员,那么你可能会在事业中遇到有人要求你编写一些欺诈性或者非常不道德的代码。

2000 年,我就遇到了这样的事情。

我 6 岁的时候编写了第一行代码,虽然我并不是神童,但我爸爸给了我很多指导,我也由此爱上了编程。

我 15 岁的时候,在爸爸的咨询公司做兼职,建网站,或者为商业应用编写组件。

我拿的薪水很少,但是就如我爸爸很喜欢说的那样,我可以免费用工作场所,还能获得了非常有价值的工作经验。

之后,我还接了一些自由编程的工作,为一些本地小型电商写网站,薪水足够我付一半的学费!

21 岁的时候,我在加拿大多伦多的交互市场公司找到了一份全职程序员工作。

这家公司由一个医学博士创建,它的许多客户来自医药公司。

加拿大对于医药公司的处方药宣传上有着非常严格的规定。

因此,这些公司想要建立一个网站,它能提供各种药物的信息。如果访问这个网站的用户能够提供处方证明,就有权访问能够得到更具体药物信息的网站门户。

让我至今仍旧感到羞耻的代码

The home page of edfactscanada.com circa 2001, via The Internet Archive

我参与的一个项目,其目标客户是女性群体,更确切地说,是青少年女性。

网站的一个功能是 —— 向女孩们询问问题,然后根据她们的回答推荐药物。

请注意,这个网站提供的是宽泛的信息,而非为特定药物做的广告。

我看到这个网站的需求里面有询问的题目,以及各种选项。

但是需求里面没有说明的是 —— 我应该如何根据问题的回答来处理最后的结果,也就是我应该根据什么规则,在用户回答完之后向她们推荐药物?

我跟商务提到这件事,她和客户联系后反馈了我需求,于是我就继续编写问题环节。

在向客户提交前,我的项目经理快速测试了一下,她回答了网站问题,然后找到我说:

「问答功能有问题。」
「哪里不对?」我问道。
「好像无论我怎么选答案,网站最后都会向我推荐客户的药物是最好的,除非我说我药物过敏,或者我已经吃过这个药了。」
「是的,需求就是这么说的,所有的问题都会指向客户的药物产品。」
「哦,好吧。」 

之后她就离开了。

其实,当我第一次看到这样的需求的时候,我有些不爽。

我应该告诉你,当我编写一些根本上就是用来欺骗女孩子的代码时,我觉得做错了。

但事实上,我当时没有想太多,我有工作要做,而且我这么做了。

我们并没有做什么不合法的事情。作为组里面最年轻的开发者,我在这个年纪就赚了不少钱。后来我才意识到,网站的真正目的就是为了推广某种药物,其实我就是个「营销策略」。

最后,客户对网站很满意,还邀请我们整个组去参加一个牛排晚宴。

当天离开办公室前,一位同事发了封邮件给我,里面有个新闻链接,报道一个年轻女孩服用了我创建的网站所推广的药物。

她自杀了。

这个药物的主要副作用中,包含了重度抑郁和自杀倾向。

给我发邮件的同事没有出现在那天的晚餐上。

我依旧去了,感觉很艰难和尴尬。我从没提及那篇新闻报道,只是安静地吃牛排,试着强迫自己微笑。

之后,我和我 19 岁的妹妹打电话,发现在我做那个网站项目的时候,她已经服用了那个网站所推广的药物。

当我们第一次提到这个(女孩自杀)事情的时候,以为整个事件仅仅是一个巧合。

而现在,我们对话的态度完全变了。我劝她尽快停止服用这个药。谢天谢地,她听了我的话。

如果我要为自己在之后的(病人)自杀和重度抑郁事件中辩解,有很多种方法。即便是今天,仍有来自之前服用过这个药物的病人的诉讼。

证明自己对这些事件毫无责任并不难,然而,我从来没有因为自己写出那些代码而感到好受过。

在那个晚餐的不久后,我辞职了。

作为开发者,我们常常是抵抗那些不道德之事的最后一道防线。

我们处于一个软件能够打车带我们看球赛的时代,也有了很多人工智能程序帮助医生诊断疾病。不难想象,软件不久后就能推荐处方药了。

软件越多地参与到我们生活的方方面面中,对于我们开发者来说,保证我们的道德底线永远驻留在代码中,就变得愈发重要。

从那天起,我写代码前,我总会试着去三思代码所带来的影响。

希望你也是这样。


原文链接:

The code I’m still ashamed of

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
tomcat调试servlet
有时候web程序会引用到workspace下面的其它工程,在tomcat调试的时候,经常会出现找不到所引用的jar的问题。 而抛出的异常也很诡异,有时候会是:<strongclassNotFound</strong,或者<strongNoClassDefineFound</strong, 有时候甚至会是<bXXXcan'tbe
不是海碗 不是海碗
2年前
体验了一下 ChatGPT,连连竖大拇指
近段时间,ChatGPT真的是太火了,我也忍不住的去体验一把。体验了之后,怪不得ChatGPT最近火爆全网了,看得我连连竖起了我的大拇指,惊艳到我了~
海军 海军
4年前
前端必须熟悉的几种布局方式
前言最近在准备整理基础,准备跳槽,找个好一点的东家。😎记录学习整理的过程,希望能帮到年后跳槽的你,让我们一起来巩固基础吧。<br/目前在一家国企单位,朝九晚五的生活让我感到舒适,有大量的时间,做自己喜欢的事。时间久了,我感到了焦虑,由于公司是非互联网,开发也是根据自己已知技术去开发,技术成长很慢,技术氛围没那么强,想突破一下自己,是该逃离舒
Stella981 Stella981
3年前
React Hooks实现异步请求实例—useReducer、useContext和useEffect代替Redux方案
<blockquote本文是学习了2018年新鲜出炉的ReactHooks提案之后,针对<strong异步请求数据</strong写的一个案例。注意,本文假设了:<br1.你已经初步了解<codehooks</code的含义了,如果不了解还请移步<ahref"https://reactjs.org/docs/hooksintro.html
Wesley13 Wesley13
3年前
Java面试
<divclass"htmledit\_views"id"content\_views"<pid"maintoc"<strong目录</strong</p<pid"Java%E5%9F%BA%E7%A1%80%EF%BC%9Atoc"style"marginleft:40px;"<ahref"Java%E5%
Wesley13 Wesley13
3年前
Java 9版本之后Base64Encoder和Base64Decoder无法继续使用解决办法
<divclass"htmledit\_views"id"content\_views"<p在项目开发过程中,因为重装系统,安装了Java10版本,发现sun.misc.Base64Encoder和sun.misc.Base64Decoder无法使用。</p<p<br</p<p<strong原因:</strong</p<p查看
Wesley13 Wesley13
3年前
Java后端学习路线
自学/学习路线这样的一期我想写很久了,因为一直想写的全一点硬核一点所以拖到了现在,我相信这一期对不管是还在学校还是已经工作的同学都有所帮助,不管是前端还是后端我都墙裂建议大家看完,因为这样会让你对你所工作的互联网领域相关技术栈有个初步的了解。你们也知道敖丙我是个创作鬼才,常规的切入点也不是我的风格,我毕业后主要接触的都是电商领域,所以这一期我把目前所了解
Easter79 Easter79
3年前
Tomcat安装、配置、优化及负载均衡详解
<divid"cnblogs\_post\_body"class"blogpostbody"<p<strong原文地址:https://www.cnblogs.com/rocomp/p/4802396.html</strong</p<p<strong一、常见JavaWeb服务器</strong</p<div<strong&
Wesley13 Wesley13
3年前
Java集合及concurrent并发包总结(转)
<divid"cnblogs\_post\_body"class"blogpostbody"<p<strong1.集合包</strong</p<p&nbsp;&nbsp;集合包最常用的有Collection和Map两个接口的实现类,Colleciton用于存放多个单对象,Map用于存放KeyValue形式的键值对。</p<p
Stella981 Stella981
3年前
Flink实时构建倒排索引与全文检索
!(https://oscimg.oschina.net/oscnet/077ed19b13d84bbcbe4b0244c8d0f50f.jpg)对于搜索引擎,大家不会感到陌生,我们每天都在用。我们在百度、谷歌上搜索我们想要的信息。比如,在输入框里输入关键字查询后,会返回很多和关键字相关的内容。或者在电商网站输入想
设计团队管理经验总结
写这篇文章不是说我有多大能耐,只是想总结一下这几年的管理经验。我也拜读了一些企业高管的理念结合自己的实际来写这篇文章。<br前方高能预警,这是一篇很长的文章~希望对还没有形成自己管理体系的设计师有所帮助。不想成为设计总监的设计不是好设计,