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

2024-04-08 10:38

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

5. 军事化管理法

 

200688日,星期二

    士兵应该害怕他们的长官,甚于害怕任何他们将要面对的危险……亲密永远不会让普通士兵面对危险时挺身而出,只有恐惧才会让他这样做。

——腓特烈大帝[①]

    命令和控制式的管理源于军事管理。大致上这种管理方法的思想是,人们只做你告诉他们去做的事情。如果他们没有做,你就对着他们吼,直到他们做了为止。如果他们还是不做,你就关他们的禁闭。要是他们依然没有吸取教训,你就让他们去潜艇里负责削洋葱,住在空间不到一平米的双人房内,并且室友是一个从来不知道刷牙的楞小伙。

    这方面有100万条可以使用的伟大的技巧。看看电影《天才大兵》[②]Biloxi Blues)和《军官与绅士》[③]An Officer and a Gentleman),你会有所收获的。

    一些经理用这种管理方法,因为他们就是在军队里学到了这一套的。另一些经理在专制家庭或者专制国家中长大,认为让手下人听话,这是很自然的方法。还有一些经理对这种方法根本没有深入的了解:嗨,既然它能用来管军队,就能用来管理互联网创业公司!

    但是,事实表明,用这种方法管理高科技团队,有3个缺点。

    首先,人们并不喜欢被这样管,尤其是那些对智商很自负的程序员。这些人实际上确实非常聪明,习惯于认定自己比别人知道得更多。要是这种自我认定恰恰是正确的(很大程度上肯定如此),那么当他们被“出于各种理由”命令去做某事时,他们会非常非常反感。但是,也没有足够好的理由废除这种方法……这里,让我们试着保持理性。高科技团队有许多目标,但让每个人都高兴这个目标很少排在第一位。

    军事化管理法的另一个缺点是操作层面的,就是说,没有足够的时间用在微观管理上,原因很简单,因为经理的人数不够。在军队中,同时向一大群人发布一道命令是可行的,因为军队的通常情况就是每个人都在做同一件事。你可以向一个排的28个人大吼一声“擦枪”,然后打个盹,再去军官俱乐部,拿着一杯冰茶在阳台上慢慢品尝。在软件开发团队中,每个人干的活都不一样,所以如果想进行微观管理,就会变成“打了就跑”(hit-and-run)的抽风式管理。那就是,有一阵子你每件事都管着程序员,然后突然从他的生活中消失了几个星期,你跑开去管理其他程序员了。抽风式微观管理的问题在于,你无法坚持足够久来看到为什么你的决定行不通,或者你无法将整个过程的每一步理顺。从效果上看,你起到的所有作用只不过是每隔一会儿就将你手下的可怜程序员敲打一番,让他们像火车一样脱轨,然后下一个星期,他们不得不花上所有的时间找回每一节列车车厢,将它们放回到轨道上,将所有一切重新安排好,这种经历会让他们有一点点受伤。

    第三个缺点是,在高科技公司中,负责干活的个人总是比“领导者”有更多的信息,所以他们其实是做决策的最佳人选。两个程序员在争论压缩图像的最好方法是什么。他们已经争论了两个小时,这时正好老板走进了办公室,听见了争论。那么在这三个人中,信息最少的那个人就是老板。所以你绝不要去做任何技术上的决策。我记得当我还在微软公司的时候,应用程序部门的负责人是Mike Maples,他是我的大老板,但是他坚决拒绝在技术问题上发表意见。渐渐地,程序员们明白了,他们不应该找他裁决技术问题。这迫使程序员在内部展开争论每个方案的优缺点,最后,问题总是按争论中占上风的人的意见解决,嗯,我的意思是,问题总是用现实中的最好方案解决。

    如果军事化管理如此不利于团队运作,那么军队为什么用它呢?

    这可以用我在军校里的经历解释。1986年,我在以色列伞兵部队服役。现在回想起来,我可能是以色列军队中有史以来最糟糕的伞兵。

    士兵有几条要遵守的规矩。规矩一:如果发现周围有地雷,就要立刻静止不动。听上去很合理,对吧?在基础训练时,你被反复地灌输这一条。每隔一会,教官就大叫“地雷”,每个人只好静止不动。久而久之,你就养成了习惯。

    规矩二:遇到敌人袭击时,就要一边开枪,一边冲向敌人。开枪使得敌人必须寻找掩护,所以他们就不能向你开火。冲向敌人可以使得你更接近他们,因此更容易瞄准,也就更容易灭掉他们。这条规矩听上去也非常合理。

    好了,下面是一个面试中会遇到的问题:你们发现周围有地雷,这时有人开始朝你们射击,你们应该怎么做?

    这并不是一个假设中才存在的情况。遇到这样的埋伏真的是很棘手。

    标准的正确答案是,不要去想地雷,一边开枪,一边朝敌人冲过去。

    这是因为,如果静止不动,那么敌人会一个接一个地把你们打死,直到所有人都死光。但是,如果你们发起冲锋,那么只有一部分人会触雷而死。两害相权取其轻,所以正确的做法是后者。

    问题在于,如果一个士兵有头脑,他就不会在这种情况下发起冲锋。每个士兵都有巨大的动机作弊,自己保持静止不动,让其他更加英勇无畏的士兵去冲锋。这有点像囚徒的困境[④]Prisoners’ Dilemma)。

    在生死关头,军队必须保证,一旦命令下达,士兵都会服从,即使是自杀式的命令。这意味着,必须让士兵养成服从命令的天性。但是,并不是天下所有事情都需要士兵完成。对于软件公司来说,服从命令就不一定有那么重要。

    换句话说,军队使用军事化管理,因为这是唯一的办法,可以使得18岁的年轻人在地雷阵中发起冲锋,而不是因为军方认为这是适用于所有情况的最佳管理方法。

    尤其要指出的是,软件开发团队中的优秀程序员可以去任何他们想去的地方工作。在这种前提下,如果被人当成士兵一样对待,他们会感到相当扫兴,因此你要是这样做,最后就只能成为“光杆司令”了。

    下面介绍本系列中的经济利益驱动法。

 



[①]   腓特烈大帝(17121786Frederick the Great),即腓特烈二世,普鲁士国王(17401786年在位)。统治普鲁士时期,他大规模发展军事,扩张领土,赞助文化艺术活动,使普鲁士在德意志民族中取得霸权。腓特烈二世是欧洲历史上最伟大的军事将领之一。

[②]   《天才大兵》,1988年的美国电影,讲述一个高中毕业生如何在新兵营中成长为男子汉的故事。

[③]   《军官与绅士》,1982年的美国电影,由理查·基尔主演,内容是一个新兵如何通过严酷的海军航空兵训练。

[④]   “囚徒的困境”是经济学分支“博弈论”(Game Theory)中的一个经典问题,1950年首次提出。它的经典形式是,警察抓住两个罪犯,但是证据不足。如果两人都不认罪,就都将被拘留6个月;如果一人认罪,另一人不认罪,那么前者将被释放,后者将获得10年刑期;如果两人都认罪,将各获得5年刑期。

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



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

相关文章

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

Ubuntu 怎么启用 Universe 和 Multiverse 软件源?

《Ubuntu怎么启用Universe和Multiverse软件源?》在Ubuntu中,软件源是用于获取和安装软件的服务器,通过设置和管理软件源,您可以确保系统能够从可靠的来源获取最新的软件... Ubuntu 是一款广受认可且声誉良好的开源操作系统,允许用户通过其庞大的软件包来定制和增强计算体验。这些软件

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

免费也能高质量!2024年免费录屏软件深度对比评测

我公司因为客户覆盖面广的原因经常会开远程会议,有时候说的内容比较广需要引用多份的数据,我记录起来有一定难度,所以一般都用录屏工具来记录会议内容。这次我们来一起探索有什么免费录屏工具可以提高我们的工作效率吧。 1.福晰录屏大师 链接直达:https://www.foxitsoftware.cn/REC/  录屏软件录屏功能就是本职,这款录屏工具在录屏模式上提供了多种选项,可以选择屏幕录制、窗口

HomeBank:开源免费的个人财务管理软件

在个人财务管理领域,找到一个既免费又开源的解决方案并非易事。HomeBank 正是这样一个项目,它不仅提供了强大的功能,还拥有一个活跃的社区,不断推动其发展和完善。 开源免费:HomeBank 是一个完全开源的项目,用户可以自由地使用、修改和分发。用户友好的界面:提供直观的图形用户界面,使得非技术用户也能轻松上手。数据导入支持:支持从 Quicken、Microsoft Money

PDF 软件如何帮助您编辑、转换和保护文件。

如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案,还是尝试组织和编辑主文档,PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时,请考虑这些因素。 1. 确定您的 PDF 文档软件需求。 不同的 PDF 文档软件程序可以具有不同的功能,因此在决定哪个是最适合您的 PDF 软件之前,请花点时间评估您的