软件随想录:程序员部落酋长Joel谈软件(阮一峰译)-6

2024-04-08 10:38

本文主要是介绍软件随想录:程序员部落酋长Joel谈软件(阮一峰译)-6,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

6. 经济利益驱动法

 

200689日,星期三

    先讲一个笑话。19世纪的时候,在俄国的一个小村庄里,住着一个贫穷的犹太人。有一天,他遇到了一个骑着马的哥萨克人[①]

    “你用什么喂鸡?”哥萨克人问。

    “就用一点面包屑。”犹太人回答。

    “你好大的胆子,竟敢用这么低等的饲料喂俄国鸡!”哥萨克人说,拿起棍子打犹太人。

    第二天,哥萨克人又来了。“现在,你用什么喂鸡?”他问犹太人。

    “报告大人,我给它上三道大菜,分别是新割下的鲜草,上等的鲟鱼鱼子酱,还有一小碗鲜奶油,上面还洒着进口的法国松露巧克力作为甜食。”

    “白痴!”哥萨克人说,拿起棍子打犹太人,“你好大的胆子,竟敢在低等的家禽身上浪费这么好的食物!”

    第三天,哥萨克人又来问:“你用什么喂鸡?”

    “不喂了!”犹太人禀告,“我给它一个铜板,它想吃什么就自个儿去买。”

    (哄堂大笑时间)

    (没人笑?)

    (哇啦啦)

    (还是没人笑)

    (哦,随你们的便)

    我在这一讲的标题中用了一个词“经济学101[②]Econ 101),这个词只是正好在嘴边。对于我的非美国读者,我来简单解释一下。大多数美国高校中,任何领域的基础导论课程都用数字101表示。“经济学101管理法”指的是有些管理者所理解的经济学理论之片面,简直到了一种危险的程度。

    “经济利益驱动法”假设每个人的行为动机都是金钱,让人们听命于你的最好方法就是给他们物质奖励或者物质惩罚,以此创造行为动机。

    比如,如果美国在线(AOL)公司的客服人员能够成功劝说想要退订服务的顾客取消退订,那么也许每说成一个,AOL就会奖励他们一笔钱。

    再比如,一个软件公司给编程错误最少的程序员发奖金。

    如果这种方法能起作用,那么你的鸡就能拿着钱自己去买食物了。

    这种方法的一个重大问题是,它将内部激励(intrinsic motivation)变为了外部激励(extrinsic motivation)。

    内部激励是指你内心想将事情做好的天然愿望。人们开始干事的时候通常都怀着许许多多的内部激励。他们想做出优异的工作,他们想帮助人们理解一个月付给AOL公司24美元的费用是符合用户的最佳利益的,他们想要写出错误更少的代码。

    外部激励是指来自外界的激励,有人付钱让你干某事就是外部激励。

    内部激励比外部激励强得多。人们会为那些他们真正想做的事格外努力地工作。这一点并没有太大争议。

    但是当你出钱让人们去做那些无论如何他们都想做的事情时,他们就会受到一种叫做“过度合理化效应”(Overjustification Effect)的支配。“我要写出没有bug的代码,因为我喜欢钱,我想要奖金。”他们会这样想。外部激励就取代了内部激励。因为外部激励是一种弱得多的激励,所以最终结果就是,你实际上降低了他们做出优异工作的愿望。当你停止支付奖金或者他们变得不太在乎钱时,他们就不再关心自己写出的代码是否没有bug

    经济利益驱动法的另一个大问题是,人们有追求局部利益最大化(local maxima)的倾向。他们会想出办法将你支付给他们的报酬尽量最大化,但是实际上却没有达到你真正想要的结果。

    举一个例子,你的“客户挽留专家”每成功挽留一个客户,就可以得到一笔奖金,他渴望获得更多的奖金,因此发疯一样地不放过客户,最终甚至连《纽约时报》都在头版发表长篇报道,抨击你的“客户服务”是多么卑鄙。虽然他的行为将你付给他的奖金最大化了,但是他这样的做法并没有真正最大化你想要的东西——利润。然后,你打算换一种方法,将他的行为与公司利润挂钩,比如给他13股的公司股票,但是你终究会认识到公司利润并非他可以控制的,所以那样做是浪费时间。

    如果你使用经济利益驱动法,你就是在鼓励程序员与制度博弈。

    假定你决定给代码错误最少的程序员发放奖金。这样一来,每当测试人员发现一个程序错误,都会演变成一场巨大的争论。通常情况下,程序员会让测试员相信那并不是一个真正的错误。或者测试员同意在向“错误追踪系统”正式提交记录前先与程序员“私下”解决。表面上,错误的数量下降了,但是实际上代码的质量并没有得到提高。

    在这方面,程序员是非常聪明的。不管你用什么标准来评估他们的表现,他们都会找到办法将评估值最大化,所以你永远也得不到你真正想要的结果

    Robert D. Austin写过一本书《组织绩效评估与管理》(Measuring and Managing Performance in Organizations)。书中提到,当你引入新的绩效测量方法时,会有两个阶段的发展。第一阶段,你实际上得到了你想要的东西,因为还没人想出作弊的方法。但是,到了第二阶段,你实际上让事情变得比原来更糟,因为每一个人都想出了如何将你测量的指标值最大化的对策,即使代价是毁掉公司,他们也在所不惜。

    更糟糕的是,信奉“经济利益驱动法”的经理们认定,他们只要不断地调整指标就可以避免上述情况。Austin博士的结论是,这样的想法是行不通的,它最终不会起作用。无论你多么努力地试着调整指标,力求让它们正确地反映你想得到的结果,最终一定事与愿违。

    “经济利益驱动法”的最大问题是,它其实根本不是一种管理,更像是管理的退位,或者说是一种设计精巧的推卸责任的方法,不愿承担责任找到办法将事情做得更好。它是一个信号,表明管理层根本不知道如何引导人们做出更好的工作,所以他们强迫每个雇员在制度框架下自己想办法将事情做好。

    你的目的是让程序员写出可靠的代码,但是你不是去训练他们,而是付钱让他们自己想办法完成,你逃避了自己的责任。这样一来,所有程序员不得不靠自己来找到办法。

    对于那些更普通的工作,比如星巴克的柜台服务员或者AOL的电话客服人员,一般的职员几乎不可能靠自己想出改进工作的方法。你随便走进一家乡间咖啡馆,点了一小杯的加热焦糖豆奶拿铁咖啡。你将会发现,你不得不一遍又一遍地重复这个要求,你必须跟冲咖啡的人说一遍,当他们忘记的时候你还要再说一遍,最后你还要跟收银员说一遍,这样他们才能算出结账的金额。如果没人告诉职员如何改进工作,结果就是这样。在星巴克出现之前,没有一家咖啡馆想过如何解决这个问题。在星巴克,他们有一整套标准的训练程序,内容包括如何给每一种咖啡命名,如何在咖啡杯上做标记,如何大声报出订单,这样就确保了顾客只说一遍他想喝什么就可以了。这一整套方法是由星巴克总部发明的,效果惊人,但是连锁店里的员工永远都不会有办法靠自己将它创造出来。

    你的客服人员要花大部分时间与客户交谈。他们没有足够的时间、兴趣或者没有受过相应的培训来想出如何更好地完成工作。在“客户挽留团队”中,没有人能够做出统计、分析数据、确定哪些挽留措施是最有效的以及怎样做才能不触怒客户,免得他们在网志中攻击公司。客服人员并不是特别关心这个,他们也没有足够的知识和足够的信息来关心这个,并且他们眼前的工作就已经把时间都占用光了。

    作为一个经理,设计一个有效的系统是你的职责。这就是你拿到高薪的原因

    如果你在童年时读过大量安·兰德[③]的小说,或者如果你只上了一个学期的经济学,还没有等到老师讲解效用[④]无法用美元衡量就不学了,那么你可能认为,建立一个简单的奖惩制度或者绩效工资(Pay For Performance)就能够方便地、完善地解决管理问题。但是,这种制度是不会起作用的。开始履行你自己的职责吧,别再把铜板给你的鸡,别再让它们自己去买吃的!

    “Joel!”你大喊道,“在上一讲中你告诉我们,程序员应该自己做所有的决定。但是,今天你却告诉我们管理层应该做所有的决定。这是怎么回事?”

    嗯,不完全是这样。在上一讲中我说过,程序员在基层,最了解情况。如果你们试图在微观层面进行管理,或者实行大声喊口令的军事化管理,很可能会导致不太理想的结果。而在这里,我正在告诉你们的东西是,当你创造一种制度的时候,你不能放弃自己的职责,不能通过给你的员工发钱的方式来训练他们。原则上,管理需要制度,这样人们才能完成工作。你们应该避免用外部激励取代内部激励。使用恐惧进行管理或者使用大声喊口令进行管理都不会很有效。

    到目前为止,我已经放弃了军事化管理法和经济利益驱动法,还剩下一个管理方法,它可以让人们向正确的方向前进。我把它叫做“认同法”,将在下一讲中详细讨论。

 



[①]   哥萨克人(Cossack),特指俄国历史上聚居在南部地区的一群游牧农民。哥萨克人以骁勇善战闻名,在沙俄时期,沙皇收买哥萨克人作为俄国军队的重要兵力来源,因此哥萨克人在当时的俄国社会中有相对较高的社会地位。

[②]   这一章的英文原题是“The Econ 101 Management Method”,直译就是“经济学101管理法”,现在的中文题目“经济利益驱动法”是意译。

[③]   安·兰德(19051982Ayn Rand),俄裔美国女哲学家、小说家,著有《源泉》、《阿特拉斯耸耸肩》等畅销小说。她在作品中倡导一种个人主义、理性的利己主义以及完全自由放任的资本主义。

[④]   效用(utility)是一个经济学概念,指的是消费者感到的满意程度无法用客观指标衡量。

这篇关于软件随想录:程序员部落酋长Joel谈软件(阮一峰译)-6的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/885357

相关文章

随想录 Day 69 并查集 107. 寻找存在的路径

随想录 Day 69 并查集 107. 寻找存在的路径 理论基础 int n = 1005; // n根据题目中节点数量而定,一般比节点数量大一点就好vector<int> father = vector<int> (n, 0); // C++里的一种数组结构// 并查集初始化void init() {for (int i = 0; i < n; ++i) {father[i] = i;}

代码随想录算法训练营:12/60

非科班学习算法day12 | LeetCode150:逆波兰表达式 ,Leetcode239: 滑动窗口最大值  目录 介绍 一、基础概念补充: 1.c++字符串转为数字 1. std::stoi, std::stol, std::stoll, std::stoul, std::stoull(最常用) 2. std::stringstream 3. std::atoi, std

【新闻】AI程序员要来了吗?阿里云官宣

内容提要 6 月 21 日,在阿里云上海 AI 峰会上,阿里云宣布推出首个AI 程序员。 据介绍,这个AI程序员具备架构师、开发工程师、测试工程师等多种岗位的技能,能一站式自主完成任务分解、代码编写、测试、问题修复、代码提交整个过程,最快分钟级即可完成应用开发,大幅提升研发效率。 近段时间以来,有关AI的实践应用突破不断,全球开发者加速研发步伐。有业内人士坦言,随着大模型性能逐渐提升,AI应

电子盖章怎么做_电子盖章软件

使用e-章宝(易友EU3000智能盖章软件)进行电子盖章的步骤如下: 一、准备阶段 软件获取: 访问e-章宝(易友EU3000智能盖章软件)的官方网站或相关渠道,下载并安装软件。账户注册与登录: 首次使用需注册账户,并根据指引完成注册流程。注册完成后,使用用户名和密码登录软件。 二、电子盖章操作 文档导入: 在e-章宝软件中,点击“添加”按钮,导入待盖章的PDF文件。支持批量导入多个文件,

小红书商家电话采集软件使用指南

使用小红书商家电话采集软件可以提高商家电话的采集效率,以下是使用指南及附带代码。 步骤一:安装Python和相关库 首先,确保你的电脑已经安装了Python运行环境(建议安装Python3版本)。安装完成后,同样需要安装一些相关的库,如requests、beautifulsoup4等。在命令行窗口中输入以下命令进行安装: pip install requestspip install bea

代码随想录——摆动序列(Leetcode376)

题目链接 贪心 class Solution {public int wiggleMaxLength(int[] nums) {if(nums.length <= 1){return nums.length;}// 当前一对差值int cur = 0;// 前一对差值int pre = 0;// 峰值个数int res = 1;for(int i = 0; i < nums.length -

代码随想录训练营Day43

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、完全背包二、零钱兑换2三、爬楼梯进阶版 前言 提示:这里可以添加本文要记录的大概内容: 今天是跟着代码随想录刷题的第43天,主要学了完全背包,零钱兑换2,爬楼梯进阶版 提示:以下是本篇文章正文内容,下面案例可供参考 一、完全背包 思路:和0-1背包不太一样的地方就是,他是从

Groovy:程序员的 DSL

什么是DSL? 领域特定语言,针对一个特定的领域,具有受限表达性的一种计算机程序语言。可以看做是一种抽象处理的方式。 具有四个元素,第一个是计算机程序设计语言,使用DSL来指挥计算机做事情,语言性(一种特定的语言),受限的表达性,并不像同通用的设计语言那样具有广泛的能力,针对一个明确的领域。 分类有哪些? 外部DSL:不同于应用系统主要使用语言的语言,通常采用自定义语法,宿主应用的代码采用

代码随想录算法训练营第三十九天|62.不同路径 63. 不同路径 II 343.整数拆分 96.不同的二叉搜索树

LeetCode 62.不同路径 题目链接:62.不同路径 踩坑:二维的vector数组需要初始化,否则会报错访问空指针 思路: 确定动态数组的含义:dp[i][j]:到达(i,j)有多少条路经递推公式:dp[i][j] = dp[i-1][j] + dp[i][j-1]初始化动态数组:dp[0][0] = 1遍历顺序:从左到右,从上到下 代码: class Solution {pu

服务器监控:运维行业的核心保障与第三方监控软件的选择

随着信息技术的飞速发展,企业IT架构日益复杂,服务器作为整个IT系统的核心,其稳定性和性能对业务的连续性至关重要。在运维行业中,服务器监控作为保障服务器稳定运行的关键环节,已经受到了越来越多企业的重视。本文将探讨服务器监控的重要性、挑战以及选择第三方监控软件的原因,并推荐一款优秀的服务器监控软件——监控易。 一、服务器监控的重要性     服务器监控是指对服务器硬件、操作系统、应用程序