程序员和常人有着什么样的区别?是否所有的程序员都是天然呆?为何女性程序员的人数要远远少于男性?在本文中,我们将带着种种疑问深入探讨计算机程序员中的文化。
现如今,我们日常生活的方方面面都渗透着计算机的代码。然而,普通人并不了解计算机编程的工作,也不清楚程序员正在悄悄地影响着整个社会。科技报道的记者Clive Thompson希望通过他的新书《Coders:The Making of a New Tribe and the Remaking of the World》来改变这一点。
在担任科技记者之前,高中时期的Thompson曾是一名黑客,他自学了如何在早期的个人计算机上写代码,比如在Commodore 64上等。之前他还出过一本书《超乎想象的聪明:论科技如何改进我们的思维》(Smarter Than You Think: How Technology Is Changing Our Minds for the Better),书中推翻了末日预言者所信奉的看法:新的技术工具正在腐蚀我们的大脑,Thompson则认为这些东西实际上提高了我们的认知能力。他在《Coders》中说到:“我想让一般人了解程序员,以及为什么他们会比较注重某方面的东西,他们的激情在哪里,他们的盲点又是什么。希望普通人可以更好地了解程序员为我们创造的这个数字世界。”
提问:最终你成为了一名作家而不是专业的程序员。从很多方面来看,编程只是另一种语言,但许多作家都对这种工作敬而远之。你觉得这两种工作之间有相似之处吗?
Thompson:程序员通过代码进行沟通,而他们的沟通对象是机器。写代码的工作和写作的工作都是脑力劳动,这是二者很大的相似之处。作家需要搞清楚如何创作一本小说、一篇文章、一本书。而程序员则需要设法考虑他们构建的代码的结构,以及函数之间如何相互调用。这两种类型的工作人员都喜欢连续工作12个小时,中途不会被人打断,所以他们都可以在思绪的尽情飞扬中完成他们的工作。
两者之间的区别可能在于人类可以理解具有歧义的内容,而计算机则不能。在你写Python代码的时候,任何一个小小的错误都会导致系统停止运转。这就是程序员的工作与其他方面工程师的不同之处。在修理汽车的时候,如果你没有拧紧一个车轮上的螺栓,那么不至于整辆车都停止工作。但是在写代码的时候,哪怕是少写一个括号,都会导致整个应用或整个网站宕机。我认为这是所有作家都感到很恐怖的一件事,因为他们都习惯了模棱两可。
提问:在这本书中,你谈到了一些典型的程序员的性格,但你自己也会感叹程序员身上常见的刻板印象,比如他们很孤立、体型较胖、不擅长社交。是否有某种特定的人倾向于从事这个领域?
Thompson:现在有很多人都加入了程序员的大军,但是你了解一些各行各业就会发现有一些特征也似乎很正常。例如,编码员善于逻辑思考,将大问题分解为小步骤。这种习惯也会体现在他们的日常生活中,因为他们需要花大量时间进行线性、精确的思考。此外,每个擅长编程的人都能够应对一些令人费解的挫折。
这是程序员与普通人之间的分界线。好莱坞影片塑造的程序员都有一种刻板的印象,程序员整体坐在电脑前写代码。实际上,他们坐在那里只是在盯着无法正常工作的代码,并设法弄清楚如何修复这些代码。这是程序员一辈子都做不完的主要工作。这种工作不会越来越好,因为你技术越好,所面临的挑战就越难。但是,一旦你改好代码,程序开始正常运行时,那种成就感简直无与伦比。程序员就是在日复一日地追逐这种快感。相比之下,那些残酷的挫折时刻都不值一提,所以这群人非常擅长应对一次又一次地碰壁。
提问:你还介绍了一些程序员的历史。女程序员可能是最早的一批程序员。后来,如你在书中所述,这个领域变成了男性的天下——男性占据了绝对的主导地位。这中间发生了什么?
Thompson:女性在编程界遭到排挤的原因有点复杂。历史上没有发生过重大的事件,这种情况是三种或四种因素互相影响的后果。这也意味着我们无法通过一个解决方案彻底地解决这个问题。就像有个笑话说:对于这个问题,我们没有一发即中的银弹,只有很多的铅弹头。
早期从事编程工作的人都是精英,因为没有人知道如何编程。各个公司聘请了逻辑思维一丝不苟的人,并且只培养了这群人。因此,才出现了Mary Allen Wilkes这样的人,她说:“既然我不能成为一名律师,因为在1959年这个职业有浓烈的性别歧视,所以毕业后我只能去麻省理工学院,问他们还要不要程序员。结果他们说,要!”后来,她成为了第一个操作系统(可以说是第一台个人电脑上的操作系统)的先驱。在当时,软件不值钱。男子汉都去做硬件了。而软件被当成了类似于秘书的工作。
随着各家公司开发出了大量的代码后,软件操作就变得至关重要了,于是男人们开始逐渐产生了兴趣。他们建立了所谓的硅谷文化——“我们雇佣某人不仅仅是因为他擅长编程,也不仅仅是因为他拥有这些技术,而是因为我们觉得他就是我们的一份子。”一直到20世纪80年代出现了一批像我一样,从高中时代就开始在个人电脑上编程的人。几年后,我们开始上大学,并学习计算机科学的课程,全身心地投入到这个领域。教授们说:“这些人才是我们应该教导的学生。我们应该改变我们的课程,要求每一位程序员从十几岁就做黑客。”而就在当时,所有从事计算机科学领域的女性几乎都崩溃了。
提问:最近有大量关于许多算法中固有的偏见的讨论,特别是在社交媒体中。这让很多非计算机科学领域的感到不解。他们会认为:“算法怎么会有偏见?它可是数学啊。”
Thompson:首先,从字面意思来看,偏见通常会源自你需要解决问题的算法。例如,社交媒体中采用的推荐算法是由架构师设计,由程序员实现的某种“预测手段”。这种算法会不断关注人们最常点击的内容,设法找出人们最喜欢和着迷的内容。这一切都在为基于广告的市场模式服务。人们往往会被有可能引发极度情绪(深深的愤怒、怨恨、恐惧)的内容所吸引。这种算法会把人们按下心理按钮的行为视作用户的互动,而这正是这种算法需要找到和推荐的内容。
其次,如果用带有偏差的数据训练算法,那么算法也会产生偏差。我的书中有这样一个例子:Henry Gan是Gfycat(一家做动画GIF托管服务的公司)的程序员。Henry和他的团队需要利用视觉学习神经网络AI来识别图片并自动进行标记。他们是一家小公司,所以他们并没有从头开始做。他们利用了一些由Google和Facebook等公司开发和训练好的开源神经网络软件。
结果,他们发现在识别亚洲人的面孔时,这些软件的实际效果很糟糕。对于Gfycat来说这是一个非常大的难题,因为他们的用户群众有很大一部分是流行音乐的粉丝。他们喜欢寻找亚洲主流明星的GIF动画。Henry跟我解释说,他们使用的AI的训练数据集主要是白人,因为收集这些数据集的机构位于白人的国家。所以,你没法利用这种算法识别亚洲人的面孔,这个AI非常不擅长区分亚洲人的面孔。反之亦然。在中国接受训练的人工智能主要针对的是中国人的面孔,因此在识别白人面孔就会遇到很大的困难。
提问:算法对媒体也产生了巨大的影响,当然有好也有坏。
Thompson:媒体受到排名算法的影响,甚至从“网站上最常转发的10条新闻”的时代就开始了。这其实都算不上AI,实际上只是一种排序算法。给我一份今天转发的所有内容列表,按人气排序,排在前10位就是我们的排名列表。这几乎是软件工程师的条件反射。
有一个网站专门寻找播放次数为零的YouTube视频。我经常想,我们能做的远不止此。你可以利用软件进行非常有趣的搜索。人们忽视的重点是什么?你可以通过代码和算法做一些非常酷和有趣的事情,之所以没人这么做是因为每个人都在追寻最容易获取的利润。寻找流行的东西,这是一种很划算的模型。但是,使用软件的巨大灵活性感觉在这种模型中完全没有发挥出来。
提问:你在写这本书时,感觉最惊讶的是什么?
Thompson:真正让我感到意外的一件事情是,你可以发现软件开发人员很享受提高效率和优化的乐趣。他们很喜欢优化一些笨重或具有重复性的工作。几乎所有的工程师都很关注运行效率的提高。节省劳动力,巩固步骤,简化工作,加强人类的能力。但是,似乎他们没有办法停止这样的思考。例如,Scott Hanselman整天都在谈论编程,甚至在晚餐时间,家里的其他人正在做饭,而他却批评他们的做事效率太低,他说:“我开始了对晚餐代码的审查。”
这种下意识的条件反射正是商业模式的来源。Facebook推送的一则新闻中说:“让我们来加速和优化一切工作。”Facebook加速了我们关注其他人的能力。Facebook对我们了解周围的朋友的方式进行了巨大的优化。这本身是一件好事,但同时也出现了很多问题。在诸多信息的干扰下,我们很难集中注意力做一件事情,因为有多事情即将出现在你面前。
这个问题贯穿了整本书:软件工程师对优化的追求永无止境。但有时这会变成《猴爪》一书中所说的诅咒。我可以想象这种诅咒从个人扩散到整个社会。就像优步一样,他们优化了汽车的受欢迎程度,但也给汽车行业带来了破坏。还有Airbnb优化了房屋的租赁,最终会影响到房地产市场。历史在一遍遍地重复,当你看到某家科技公司锁定了人们的某个兴趣时,通常他们都会优化自认为这是对大家有益的事情,但结果却会给其他人带来间接的伤害。
十五年编程经验,今年1月整理了一批2019年最新WEB前端教学视频,不论是零基础想要学习前端还是学完在工作想要提升自己,这些资料都会给你带来帮助,从HTML到各种框架,帮助所有想要学好前端的同学,学习规划、学习路线、学习资料、问题解答。只要加入WEB前端学习交流Q群:296212562,即可免费获取。
网友评论