软件研发的道德情操

阿里云开发者 发表于 6月以前  | 总阅读数:337 次

同理心

现代社会流行 ”同理心“(或称”共情“) 这个词,这个词用英文来表达是 _empathy_,例如我们在街上看到一对久别重聚的恋人,他们快乐的笑容,能够让我们会心一笑;而当我们看到有人因为罹患重病而一筹莫展的时候,我们也会发自内心地感到伤感。

当然,我们共情他人的快乐、悲伤、愤怒,除了因为这个人表现出来的情绪之外,还因为理解他表现情绪的动机,并且其动机是合理的。例如,如果某人因为被不小心撞了下,就愤怒地拿出刀来要去刺那个撞他的人,那么我们就绝不会共情这种愤怒;但是如果某人的妻女被人强奸,而他愤怒地拿出刀来要去刺那个伤害他家人的罪犯,我们都是能理解并认可这种愤怒的。

虽然人都有共情的能力,但能体验到的他人的快乐和悲伤的程度,相比自己的切身体验,往往是很弱的。一个病危的人的无助和孤独,陌生人即便在当场观察良久,能体验得到无助,恐怕还不到十一;一个中彩票的人的狂喜,旁人所能有的快乐体验也是很弱的,有的甚至还可能会有妒忌的情绪。

作为情绪的感受者和表现者,当我们的快乐、悲伤、愤怒等情绪,被周围的人所认可,那么我们的快乐会加倍,我们的悲伤亦能得到缓解,我们的愤怒亦能被认可是正当的,进而得到发泄。

在斯密看来,社会的奖惩机制,就是基于社会中人与人的共情原理发展而来的。当一个人,出于良好的动机,做出一些行为,并让他人收获舒服和快乐,那么旁观者就能共情到受惠人的舒服和快乐情绪,也能理解施惠人的良好动机,那么就会同意奖励施惠人;当一个人,出于不良的动机,做出一些行为,并让他人收获痛苦和悲伤,那么旁观者就能共情到受害者的痛苦,也不会赞同施害人的不良动机,那么就会同意对施害人进行惩罚。

奖励的例子有,小河边路过的青年看到水里有落水的儿童,他出于救人的动机,实行了救助行为,最终儿童得救,儿童一家逃脱厄运,作为旁观者的我们,都会赞同对这个青年给予奖励;就惩罚而言,所有犯罪案例都是例子,例如路边有人看到商店里的手机,为了满足自己的私欲,实行窃取行为,对商店的主人造成了损害,那么作为旁观者的我们,会同意对盗窃者施行惩罚。

道德观与软件研发

基于同理心,人与人之间渐渐形成了奖励和惩罚的共识。斯密认为所谓道德,就是这么一些共识(或者说规则),当社会遵循这些共识的时候,整个社会就欣欣向荣。而那些无法形成良好共识,或者说共识得不到社会遵循的时候,那社会的发展就会出问题,渐渐走向衰落。斯密写作比达尔文早了一个世纪,但是这里我们能看到进化论的影子,即,对于自然(或曰上帝)来说,能进化出道德的社会才能让这个社会更好的适应自然,进而繁荣。

社会中,人与人相处,不能只考虑自己的情感而无视他人的悲欢。人在考虑自己感受的同时,也必须学会考虑他人的感受,并做出有益他人的行为,如此整个社会才能繁荣。

让我们回到在软件研发这件事情中。类似的,开发者不能只考虑自己,也不能只考虑机器,他必须要学会考虑其他开发者的感受,做出有益于其他开发者的行为,如此整个研发组织才能繁荣。许多开发者会错误地认为,软件只要能运行起来就没事了,和机器有关,和其他人无关;但每个人只要想想自己在过去一年中阅读了多少其他人写的代码,维护了多少其他人交接的系统,就会明白这种想法是多么的错误了。没有开发者是从零开始编写软件的,在大型组织中,开发者每天都依赖其他开发者的中间产物进行工作,而自己也在不断生产中间产物,这些中间产物包括:

  • 文档:描述系统是如何设计,描述 API 是如何使用的。当研发工作依赖一个现有系统的时候,就必须要理解现有系统的设计,尤其是当需要对这个系统做改造的时候,就必须明白设计的核心模型。
  • 代码:无论是使用他人提供的 service(及 client),还是使用中间件框架,还是接受遗留系统。进行新的研发工作都需要去深入理解这些代码,这些代码是否容易理解,是否引入不必要的依赖,是否有足够的测试覆盖(因此容易修改),都会很大程度上影响研发的效率。
  • 服务:上层的业务会依赖大量的下层服务,尤其是在测试阶段,下层服务的质量和稳定性会对测试工作的效率造成极大的影响。比较底层的一些服务,如缓存,消息等,现在通常都是云提供的,而这些服务的质量往往都比较高。

当我们在日常研发工作中,使用到的软件中间产物,在其质量非常高的时候,我们会由衷地对于这些中间产物的作者生出感激、敬佩的情感;而在其质量非常差的时候,我们则会从内心泛起对中间产物作者的厌恶、鄙视之情。

而当组织中的每个人,作为中间产物的作者,能在生产和交付文档、代码和服务的时候,时刻考虑到这些文档、代码和服务的质量,会对其他的开发者产生重大的影响,进而约束自己的行为,用更高的质量标准要求自己,以期待从中间产物的使用者那里收获赞许和感激,而非厌恶和鄙视,那么这个组织就形成了良好的软件研发道德观。

Postel's Law

计算机领域中有一条可能不那么知名的设计原则:Postel’s Law(也被称为 Robustness principle):

Be conservative in what you do, be liberal in what you accept from others.

这条原则最早是 Jon Postel 在 TCP 协议中描述的,当计算机之间通过协议通讯的时候, 对于其他计算机发送给自己的内容,要考虑各种异常、不规范的情况,即要主动消化各种复杂度;而当自己给其他计算机发送内容的时候,则要有严谨的 Spec,并且严苛地遵守 Spec。

虽然 Postel's Law 讨论的范畴是系统设计,但我认为要形成高效的研发团队,人与人之间的协作也应该遵循同样的原则,作为软件中间产物的作者,每个研发都应该对自己的产物提供清晰的 Spec 并严格遵循这些 Spec。只有 “be conservative in what you do”,那么一层层往上的研发工作,其效率才能够得以保持(甚至提高),否则的话,最上层的研发工作就犹如在一个摇摇晃晃的梯子上装灯泡,其效率之低可想而知。

软件研发道德的失效

前文我尝试说明:软件中间产物的质量(包括文档、代码和服务)对于研发组织的整体效率是至关重要的;良好的软件研发道德,或者有时候也会认为这是良好的工程师文化,就是大家形成一种以交付高质量软件中间产物为荣,以交付低质量软件中间产物为耻的共识文化。

然而在实际的情况下,我们往往看到很多组织未能形成这种共识文化。相反的,系统无清晰的设计文档,为了快速上线代码不做 code review,系统不做充分测试,代码没有单元测试覆盖,为他人提供的 client 加入了大量无关的依赖,种种现象司空见惯,简直可以用罄竹难书来形容。

当研发遇到这种软件研发道德失效的情况,往往会觉得沮丧、无力甚至愤怒。一些人因此觉得研发环境恶劣、团队缺乏吸引力、领导无能;另一些人觉得工作就是如此,尽管不理想但也默默接受并习惯。试图改变不理想的现状,但是失败以至于离开;或者对现状感到麻木并习以为常,似乎是再常见不过的结果。

如果我们再思考一下斯密关于道德形成的理论,就能够理解为何组织中软件研发道德会失效,这种失效的直接原因是:

  1. 生产高质量软件中间产物的行为没有得到应有的奖励。2. 生产低质量软件中间产物的行为没有得到应有的惩罚。

当我们和任何一个研发的 TL 讨论软件质量的时候,没有一个 TL 会和你说软件质量不重要。但是我们都明白,一件事情的关键不在于那个人怎么说,而在于那个人怎么做。而怎么做具体就体现在:当质量和其他因素的优先级发生冲突的时候,这个 TL 会如何做出选择;当 TL 给团队做绩效评定和晋升的时候,是否研发质量作为一项核心的考核指标。

而在软件研发道德的失效的组织和团队,我们无一例外地看到:当质量和时间发生冲突的时候,优先级被放在了时间上,质量被牺牲了;当质量和功能范围发生冲突的时候,优先级被放在了功能范围扩大上,质量被牺牲;在做绩效评定的时候,并没有认真考核研发在质量上做的贡献,换言之,对一个研发同学的短期业务结果,规划思考能力,质量贡献等角度综合评定的时候,质量贡献往往被忽略了。

我以前一直认为软件质量的问题,研发效率的问题,是技术的问题,是因为先进的技术没有得到理解和应用;但是行文至此,相信大家能理解,我的观点已经发生了改变,软件质量和研发效率的核心不是技术问题,而是一种类似社会学的问题,是人的问题。

应该怎么做?

既然是人的问题,就必须从改变人的行为入手,这里首先要让质量的信息透明化,其实是要让质量相关的行为得到应有的评价。透明化是合理评价的前提。

无论是敏捷软件开发的方法论,还是精益的方法论,都强调 Build Quality In,这句话的意思是,质量是在每一个过程细节中建设起来的,只看最终的软件产品的质量,或者结果质量,是不行的。一旦过程质量被忽略,大量的返工,大量的问题修复,会严重影响产品交付的速度。

今天大部分组织都非常关注结果质量,最典型的就是服务的可用性,客诉等等。这本身没有问题,但令人失望的是,似乎很少组织保持了对 Build Quality In,对过程质量的足够关注,这些信息没有得到清晰透明地展现。因此要将过程质量透明化,在软件研发过程中,具体包括:

  1. 代码全面开放:让每个研发提交的代码都能被其他人看到(git blame 是个很好用的命令),代码质量的好坏自然一目了然;
  2. 开发文档全面开放(也需要有版本化记录):让每个研发的设计和思考都能被其他人看到;
  3. Code Review 机制的推行,让代码进入主干之前都能被同事认真审视;
  4. CI Dashboard:是否有足够的自动化单元测试覆盖等等,也得到透明的展示。

质量信息透明只是第一步,第二步是信息的透明和激励机制挂钩。这就好比,假设我们白天在马路上都能看到有车闯红灯,但实际上闯红灯不会被扣分罚款,那总还是有很多人会继续闯红灯的的;再好比我们看到有人在马路上扶起倒地老人,我们都知道他做了正确的事情,可是当老人不感谢他反而讹诈他,而且没人出面帮助他证明的时候,此人再高尚也不会继续施行善举。

因此组织在绩效评定的时候一定要把研发人员的软件质量贡献纳入核心的考核标准。但这个时候问题又来了,主管是否有能力评价团队每个研发的研发质量?或者说,主管是否关心每个研发的研发质量?

我想表达的第一个观点是:主管的核心职责之一应该是关心研发质量,因为这决定了组织的研发效率,不关心这一点的主管,是不称职的。

我想表达的第二个观点是:主管不一定有能力全面评价团队每个研发的研发质量,因为有些团队规模较大之后,主管对于细节的把握就有心无力了,但是这个时候他可以做两件事情:

  1. 透明、透明、透明:让团队,以及跨团队的质量信息让所有人都能看到。
  2. 引入环评机制:让团队中或者跨团队中,那些技术资深,质量过硬的研发同学一起参与评价。

持续激励组织需要的行为,反对甚至惩罚对组织有害的行为,是管理者的核心职责之一。作为软件研发团队的管理者,必须要能够深刻理解对于软件研发有益和有害的行为,然后在团队建立长效的机制。最终建立一个研发充满幸福感,能够充分释放自己创造力的环境。这样的组织,在商业上也必然是充满竞争力的。

以上,是亚当斯密对我的启发,我称之为“软件研发的道德情操”。

延伸阅读

  • [01] 亚当·斯密的《道德情操论》https://en.wikipedia.org/wiki/Relational_algebra
  • [02] Postel's law https://devopedia.org/postel-s-law
  • [03] Build Quality In https://www.scaledagileframework.com/built-in-quality/

本文由微信公众号阿里云开发者原创,哈喽比特收录。
文章来源:https://mp.weixin.qq.com/s/_qfcoB0lKkdk8RA1cMlroA

 相关推荐

刘强东夫妇:“移民美国”传言被驳斥

京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。

发布于:8月以前  |  808次阅读  |  详细内容 »

博主曝三大运营商,将集体采购百万台华为Mate60系列

日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。

发布于:8月以前  |  770次阅读  |  详细内容 »

ASML CEO警告:出口管制不是可行做法,不要“逼迫中国大陆创新”

据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。

发布于:8月以前  |  756次阅读  |  详细内容 »

抖音中长视频App青桃更名抖音精选,字节再发力对抗B站

今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。

发布于:8月以前  |  648次阅读  |  详细内容 »

威马CDO:中国每百户家庭仅17户有车

日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。

发布于:8月以前  |  589次阅读  |  详细内容 »

研究发现维生素 C 等抗氧化剂会刺激癌症生长和转移

近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。

发布于:8月以前  |  449次阅读  |  详细内容 »

苹果据称正引入3D打印技术,用以生产智能手表的钢质底盘

据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。

发布于:8月以前  |  446次阅读  |  详细内容 »

千万级抖音网红秀才账号被封禁

9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...

发布于:8月以前  |  445次阅读  |  详细内容 »

亚马逊股东起诉公司和贝索斯,称其在购买卫星发射服务时忽视了 SpaceX

9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。

发布于:8月以前  |  444次阅读  |  详细内容 »

苹果上线AppsbyApple网站,以推广自家应用程序

据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。

发布于:8月以前  |  442次阅读  |  详细内容 »

特斯拉美国降价引发投资者不满:“这是短期麻醉剂”

特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。

发布于:8月以前  |  441次阅读  |  详细内容 »

光刻机巨头阿斯麦:拿到许可,继续对华出口

据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。

发布于:8月以前  |  437次阅读  |  详细内容 »

马斯克与库克首次隔空合作:为苹果提供卫星服务

近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。

发布于:8月以前  |  430次阅读  |  详细内容 »

𝕏(推特)调整隐私政策,可拿用户发布的信息训练 AI 模型

据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。

发布于:8月以前  |  428次阅读  |  详细内容 »

荣耀CEO谈华为手机回归:替老同事们高兴,对行业也是好事

9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。

发布于:8月以前  |  423次阅读  |  详细内容 »

AI操控无人机能力超越人类冠军

《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。

发布于:8月以前  |  423次阅读  |  详细内容 »

AI生成的蘑菇科普书存在可致命错误

近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。

发布于:8月以前  |  420次阅读  |  详细内容 »

社交媒体平台𝕏计划收集用户生物识别数据与工作教育经历

社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”

发布于:8月以前  |  411次阅读  |  详细内容 »

国产扫地机器人热销欧洲,国产割草机器人抢占欧洲草坪

2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。

发布于:8月以前  |  406次阅读  |  详细内容 »

罗永浩吐槽iPhone15和14不会有区别,除了序列号变了

罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。

发布于:8月以前  |  398次阅读  |  详细内容 »
 相关文章
Android插件化方案 5年以前  |  236904次阅读
vscode超好用的代码书签插件Bookmarks 1年以前  |  7093次阅读
 目录