骑猪兜风

霍炬:程序员爱写脚本是种病

骑猪兜风 2016-09-16 22:04:38    201067 次浏览

  如果你就是程序员,或者你熟悉程序员这个群体,有时候你会发现他们在干一些奇怪的事情。比如说,他们跟你说在写一个脚本,你问他写脚本干嘛?他告诉你,这事情重复做太无聊,写个脚本以后就不用老让我重复操作了。听起来很有道理吧?但如果对比一下时间,你会惊讶的发现,他们重复做 200 次这件事大概总共只需要花一个小时的时间。但写这个脚本反而得写 5 个小时。以这个职业之外的人看来,这绝对是有病,完全不可理解,让你重复几次能死人吗?

  重复几次应该不会死人。但是程序员这个职业存在的目的就是最大化的利用机器,通过自动化来完成工作。外行人往往觉得程序比较神秘,但实际上,程序的本质就是驱使机器去替人干活。如果不考虑规模和管理成本以及速度,没有什么程序能干人不能干的事情,只是机器需要 5 秒钟,换成人力劳动需要 2 年和 500 个人参与,后者通常是社会无法负担的成本,所以我们需要程序来替代这种工作。所以程序员难以忍耐低效重复的工作,并以改变这种低效重复为目标。一个程序员可能会花比亲自重复劳动更多的时间去写一个脚本代替自己,通常是因为: 

  1. 现在需要重复 2 次,也许过几个月我还要重复 2 次,再过几个月还要重复 2 次

  2. 我可能一辈子就重复做 2 次这件事,但其他人是不是也要重复做 2 次

  于是写完这个脚本之后,程序员们就会通过开源把它贡献出来,这些是对整个行业的积累。

  到现在,程序员们可以轻松在网上找到各种开源代码,挑选合适的拼装起来再加上修改,快速完成自己的工作,这种工作方式的变化是技术行业近年来最大的变化之一。今天在这个领域最耀眼的成就是什么呢?是容器和 DevOps。从自己部署服务器到在云中使用 Docker,这一条技术路线是无数不愿意重复完成简单工作的程序员构建起来的。他们把自己完成的脚本贡献出来,经过各种汇总,抽象提升,制作出新的工具,给更多人用,接受更多人的贡献,最终让整个行业的技术水平大大提升了一步。

  一个好的程序员应该是“懒惰的”,他懒到不愿意亲自重复做同样的事情 3 次,这才能在这个基础上创造出更好的工具。

  是的,我想说的就是阿里的脚本抢月饼事件。这件事让人们分成了两派,一派是了解程序员并且清楚事情细节的,这类人得阿里过分了,程序员没做错什么。另外一部分人要么对技术不了解,要么对事情不清楚,他们觉得程序员这样投机取巧是不可原谅的,开除的好。这里面事情的细节是:他们并不是通过什么特殊的手段抢到的月饼,只是在浏览器里面写个脚本,让浏览器自动去点击提交,以替代亲自盯着屏幕按鼠标的工作。如果从这个角度看,我觉得很容易得到一个结论:这种做法没什么不合理的。对于普通人,在判断这件事之前,首先要明白这几个程序员的做法对普通人有没有什么危害。他们的行为没什么过分的,不是黑客,不是攻击,没有窥探普通人隐私,没有利用漏洞获得利益,不会动你银行帐号上的钱也不会盗你邮箱密码…不要对程序员心怀恐惧或充满神秘,大多数程序员只是在帮助构建你们享受的这个高度自动化的社会而已。

  如前所述,技术行业发展到今天,一个程序员可以通过一个脚本,驱动上万台服务器运转,也可以通过一个脚本调集资源,完成单靠人力需要几万年才能完成的工作,自动化程度已经高到如此地步了,一个脚本可以翻天覆地、排山倒海。但是你让一个程序员去盯着屏幕,点几百下鼠标,就为了抢一盒月饼。这不仅不合理,甚至可以看作对技术行业的侮辱。

  如果非要谈公平,我们必须认识到一个事实,就是秒杀这样的模式绝对不可能公平,如果要公平,最简单的办法,是收集所有想要月饼的人,通过抽奖来决定谁可以买。(当然程序员可能会要求 review 抽奖程序代码^_^)但是活动主办方并没有采用这样的模式,而是采用秒杀模式。在上班时间,让数万员工盯着屏幕看着时间,点几百下鼠标,请问这总共要浪费多少人,多少工作时间,开展这样的活动竟然是符合公司价值观的,这让我非常困惑这家公司的价值观到底靠谱不靠谱。何况,在秒杀的那个时间,有人工作不太忙,有人非常忙,让这两种人一起秒杀,对于忙碌的人公平吗?有人正在开会,有人正在见客户,他们显然没法去参与秒杀,这对他们公平吗?更奇怪的是,工作时间非常忙的人是为了公司在努力,不忙的人是工作量不饱和,结果这个符合公司价值观的活动客观上竟然惩罚了这些为公司工作更努力的人,利于那些浑水摸鱼有空在工作日下午点几百下鼠标的人。这也太诡异了吧?说到这里,如果你实在接受不了程序员没事爱写脚本是个好的职业习惯这个想法的话,也可以稍微退一步,认为这是一种职业病,原谅他们吧。

  再换个角度看。假如说一个团队的小领导,手下有 5 个人,他自己很想抢月饼但是需要开会,没法抢,于是告诉手下 5 个人,你们抢的时候帮我也抢一下。神不知鬼不觉的,他动用了 5 个人帮他抢月饼。这样相对于那些普通员工,只能自己亲自抢的人公平吗?再考虑有人反映快有人反映慢,有人喜欢玩及时战略游戏,多年游戏之后,点鼠标手速快过普通人一倍,这让他和大家一起人肉点鼠标秒杀,对其他人公平吗?所以创造不公平的并不仅仅是利用技术手段的程序员。有人利用管理结构,有人利用职业特征,有人利用自己的特殊技能,在这个本来就不可能公平的游戏里面比别人稍微走的快一点。这怎么就成了违背公司价值观,值得被开除的大事?

  上个月发生了一件有意思的事情,可以和这件事相比。是魁北克技术移民开放名额,一共 5000 个名额,在固定时间让全球希望移民的人开始抢名额,也是秒杀。最终有几十万人参与,可想而知秒杀场面之惨烈。我知道很多人付钱给中介,中介会帮助安排尽量多的人帮忙抢,增加命中率。而我一位朋友的朋友,写了一个脚本,动用了几十台服务器,顺利抢到了一个名额。在抢名额的活动中,有人利用权利,有人利用钱,有人利用人情和社会关系,有人利用技术 。这算不算公平的游戏?显然不公平。但它是不是魁北克政府希望的?我和几个朋友讨论,都认为这恰恰是他们的目的。无论你通过什么手段,利用什么资源,在这种局面上抢到了名额,恰恰证明了你有基础的法语能力,和比较好的社会生存能力,无论这种生存能力是通过技术还是通过资源、社会关系、钱表现出来,这都是他们希望接受的移民。相比之下,美国移民有一种叫做“乐透绿卡”的玩意,那就是纯靠抽奖,这种做法的目的是增加人种多样性。所以,抢月饼活动的目的是什么呢,是希望公平还是希望不公平?从事后人力资源部门公布的公开信上看,他们在乎的是公平。那么我只能说,策划这个活动的人根本没想清楚,他们设立了一个不公平的规则,反而希望获得公平,这显然是不可能的。如果非要有人因此承担责任,我觉得这个活动策划者应该承担主要责任,而不是这 5 个程序员。

  这几个程序员的具体做法有没有违背职业道德?我看也没违反职业道德。阿里发的公开信强调他们是安全部门的员工,似乎暗示他们通过系统漏洞得到了好处。但事实上他们只是在浏览器里面写一个脚本。这种级别的脚本是任何人都可以完成的,它不需要学几年写程序,不需要数学,不需要了解系统,甚至不需要学习使用开发工具,因为这本来就是浏览器提供的功能。任何一个员工,无论是否写过程序,只要想学,花上半个下午就能掌握这个技能,以后就可以随手写个脚本让浏览器替他完成这种枯燥的重复刷新工作。从这个角度看,使用脚本抢月饼这件事,对于所有人都是公平的,对于程序员确实稍微容易一点点,但也并不是得天独厚非他不可的技能。

  什么是公平?对那些无法通过努力改变或提升的属性的保护才是公平。比如我们无法改变肤色,无法改变种族,无法改变年龄,无法让残疾人恢复正常,对这些群体应该公平对待,这是社会公认的原则。但是对一个并不需要多困难就可以掌握的技能,至于提到公平这个高度吗?再看一个例子。前几天 G20 期间,马云是中国企业家里面最风光的人,他和加拿大总理杜鲁多的对话幽默风趣,吸引了很多关注,并且也取得了巨大的谈判成果。为什么马云可以成为媒体焦点?除了 G20 开在杭州,近水楼台,还有一个重要原因是马云和杜鲁多可以直接聊天,谈笑风生,其他企业家英语没有这么好,给他们这个机会,也需要通过翻译间接低效交流,没法和马云这样轻松风趣的和外国首相聊天。那么其他企业家是不是也应该去抗议这种行为,认为马云讲英语是对其他人不公平?是不是也应该禁止马云说英语,无论英语有多好,必须和其他人一样通过翻译完成沟通,这样才算对大家公平?

  这显然是不对的。如果你听过马云的英语演讲,我相信你和我一样震惊。马云应该是我知道的中国企业家里英语最好的人。他不仅语言流畅,用词精准,更强大的是完全没有口音。做到这件事太难了,别说英语,看看周围有多少人能说标准的不带口音的普通话就明白了。很多移民了几十年的人,英语表达可以和母语一样好,但他们仍然无法摆脱口音,更别说马云根本没长时间在国外生活过,能做到这样简直是不可思议。我想马云一定是付出了常人难以付出努力才做到这样的。其他人没有在这方面付出和他一样的努力,自然英语不会说的和他一样好。在这种见外国元首的场合,马云比别人吸引更多的关注,获得更大的成果,这是他努力的结果,无关于公平。对于这些程序员也是这样的,他们能如此仅仅是因为比别人在这方面付出更多的努力。如果认为程序员会写程序就叫不公平,那么英语好也不公平,做市场销售职业的人待人接物更得体,容易给人留下好印象,这也不公平…这社会上不公平的事情未免太多了。

  当然,阿里巴巴做为电商和金融领域的公司,对公平和安全特别介意,尤其特别希望用户相信这家公司在意公平和安全,这可以理解。但是这种公平和安全应该通过制度来体现,而不是价值观。价值观是不可靠的,只有通过制度才能约束人的行为,这是人类社会历史已经证明的事情。那些把价值观放在嘴边的公司,倒是很令人不放心,这通常说明了他们在制度上并不完善,这才需要通过强调价值观,靠“人治“来弥补制度的不完善。不信的话,可以去看看全球清廉指数国家排名,然后再去查查哪些国家经常喜欢讲反腐败,看看这些国家是不是在排行榜上倒数几位。越是腐败的国家越喜欢反腐,越是制度不完善的国家越喜欢谈价值观。我不信 Google 或者苹果没有腐败,但他们有完善的制度保证,最大限度保证了人员难以有腐败的机会,如果万一有,也有司法流程处理。这是公司自己的事情,没必要跟用户成天宣称我们价值观坚定,我们反腐。那本来就是企业制度中正常的一部分,制度有了漏洞修补漏洞就是了,不用靠宣传价值观和用户证明自己有多努力。

  阿里巴巴有让技术人员挡枪的传统。还记得前不久阿里 HR 给离职员工写假评价时间吗?事件曝光之后,公司对 HR 只是警告,但反而重罚 IT 系统开发的程序员。和这件事如出一辙,HR 永远是符合价值观,永远没有错,错的永远是别人。另外,这家公司几年前提供抢火车票的浏览器插件,春节的时候提供微信抢红包插件…这些事情他们都没觉得影响社会公平,等自家程序员抢了几个购买月饼的名额,还自己立刻告知了相关部门并未造成实际损失(注意是购买名额而不是抢到就给免费月饼),公司突然板起脸来讲起了公平的价值观。这脸变的是不是有点过快了?

  当然了,开除程序员这个行为本身,我倒是没什么不赞同的。社会上程序员这么紧缺,阿里人才济济,大概是不怎么缺人,最好多多开除一些,最好能开除上几百个,给其他公司一些机会。这也算是对整个产业的一点贡献,值得鼓励。

  参考备注

  • 标题图:Image used under Standard license from Shutterstock.com (这张图是我们付费购买的,符合我要求的转载可直接使用它)

  • http://tech.163.com/16/0914/17/C0UM2I3L00097U7R.html 阿里程序员被开除企业价值观能作为解聘理由吗

  • https://www.zhihu.com/question/30336208 为什么《如何评价阿里 HR 对离职员工谈话造假》的问题下面好多答案都变成「:)」了?


  本文来自霍炬的微信公共帐号“歪理邪说”,用微信添加 wxieshuo 公众号,或扫描二维码即可订阅。转载必须保留作者、公共帐号信息,内容必须与本文保持严格一致,不得修改/替换/增减本文包含的任何文字,不得擅自增加小标题、引语、摘要等。本公众号一切内容禁止摘编、衍生及演绎。

内容加载中