The Mythical Deadline of Peopleware Man-month

This blog post is the book note of three famous books in project/people management in IT industry: The Mythical Man-month, The Deadline, Peopleware. They are enlightenment books to me on the management topics when I read these books decade ago. There are a lot of shinning points in these books, and I try to list them with my own thoughts. The book notes will be in Chinese, since I read the Chinese version that time.

管理重要要素

优质管理的四大要素:选择正确的人;为他们分配正确的工作;保持他们的积极性;帮助团队凝聚起来并保持团队的凝聚力。

让一个人发挥自己的能力和才干,他就会发光。这正是管理的全部精髓。

人月神话

用人月作为衡量一项工作的规模是一个危险和带有欺骗性的神话。它暗示着人员数量和时间是可以替换的。(除非它们之间不需要相互的交流)

向进度落后的项目中增加人手,只会使进度更加落后。

–Brooks法则

3个规则:

  • 成绩最好与成绩最差的人之间的成绩比是10:1.

  • 最好选手成绩大约是中等选手成绩的2.5倍。

  • 成绩中等以上的一半选手与另外一半选手的成绩比是2:1.

很多管理者总是在考虑成本/收益研究,他们懂得成本,但是他们对等式的另一端是什么却一无所知。他们没有从对“收益”的分析中实际获益。

管理者需要对生产力进行衡量。

当你需要对任何事情做出度量的时候,总会有这样或者那样的度量方法比选择干脆放弃度量要强。 一个不能对它自己规划的生产力进行评估的公司只是没有努力尝试而已。如果对生产力不进行衡量,那么出现任何一种情况你都不应该特别惊讶。因为你对企业的生产力根本没有最起码的认识。

Binwei: 在这本伟大的人月神话写完了几十年之后,还是有那么多企业掉在了人月神话的陷阱中,岂不是可笑又可悲?

生产力的提高

生产力必须定义为利润除以成本。 利润是可以观测到的美元存款和工作中的收入,成本是总成本,包括替换那些由于工作而疲惫不堪的人员的成本。

永远都没有办法在短期内提高生产力。

  • 当你把一切都安排好以后,你能得到的生产力将是在你之前的管理者所做的长期投资的直接反映。

  • 对于生产力,你惟一真正能够起到的影响就是:现在做长期投资,让你的后继者受益。

  • 任何承诺立刻见效的东西都很可能是江湖游医所卖的万灵油。

  • 这就像开始一个战役一样,在战役开始之前,管理者的绝大多数工作其实已经完成了。

总生产率依赖于四个因素:团队可用人员数、还没有融入团队的新成员数、交流损失和融合开销

团队有一种潜力—— 随着共同工作的时间越来越长,团队能够逐渐消除交流损失。 成员们在一起经历很多事情,团队就会变得越来越健壮,甚至能够克服交流的损失。作为一个整体,团队能够比单个个体的简单加和做得更好。

公司越没有生产力,人们就越会没有激情的火花,只会机械地工作,最优秀的人便会离开。

Binwei: 如果一个企业设置的目标都是以短期的数字,那么又有谁愿意去提高长期的生产力呢?

面试和招聘

寻找合适的人选。然后,不管你之后做错了什么,这个人都会拯救你。这就是管理最重要的艺术。

  • 不要试图单独去招聘

  • 循序渐进安排任务难度

  • 征求推荐:你最希望雇的那个人可能还知道其他很好的人选

  • 多听,少说

  • 事先把面试材料整理好

Binwei: 招对的人是重中之重,而且整个团队需要匹配-参考西天取经队伍

工作压力和加班

人们在受到时间重压的时候不是工作得更好,只是工作得更快。

短期的压力乃至于加班可能是有用的策略,因为它们能使员工集中精力,并且让他们感到工作的重要性。但是长期的压力肯定是错误的。 压力下的人不能更快地思考。增加加班时间只会降低生产力。加班工作带来的负面影响大于收益。 加班不是提升平均工作质量的手段,而是增加工作时间数量的手段。

总之,在众多软件项目中,缺乏合理的进度安排是造成项目滞后的最主要原因,它比其他所有因素加起来的影响还要大。 如果人们被锁定在不能赢的局面下,他们的工作效率不会很高。

不要让你的员工疲于奔命,透支健康,即使你赢得战役和但是输掉战争

Binwei: 加班与压力因人而异,对于有些有进取心的人来说,少量的加班并带有补偿是件极好的事情。 但是企业千万不要糊涂地让加班发生在哪些问题重重的项目上,对于那些项目,人,流程,架构才是关键问题。

高效工作

经理的职能不是强迫人们工作,而是让人们有可能工作。

顺流(flow)是一种陷入沉思的状态。在这种状态下,有一种精神欢快的轻松意识,一种大部分情况下都感觉不到时间在流逝的意识。 这种flow状态需要不被打断。

只要员工们还拥挤在充满噪音、缺乏办公设施、破坏性的工作场所,除了改进工作场所之外没有别的东西更值得改进了。

选择合适的交流工具: 电话和电子邮件的最大区别在于,电话干扰工作而电子邮件不干扰工作,收件人可以在他(或她)合适的时间处理邮件。

管理上的最大罪行是浪费人的时间。 听起来应该是容易避免的罪行,但是不是。作为一个经理你有一些自己的需求,并且这些需求与你想保留和宽松地使用你手下的时间的意愿正好相反。

Binwei: 避免无谓的会议以及任务,选择有效沟通方式,提供良好工作环境。

胶冻团队

我们停止谈论建立团队,并且将话题改为培养团队。农业现象来看是对的:它们不是全部可以控制的。

胶冻团队是一群紧密结合在一起的人,其整体大于部分的总和。 如果团队紧密地胶冻在一起的工作小组是令人感觉愉快的,人们使用“团队”一词,如果它代表着威胁则用“私党”一词。 害怕私党是一种管理上不安全的迹象。越不安全,则私党的概念越可怕。理由是:经理们不是他们团队的真正成员。 在最好的公司里,自然权威在所有的方向生效。经理被认为更擅长于某些事情,并且在做这些事情时令人放心,可能是制定总体方向、谈判或雇佣。每个员工都被认为有一些领域的专业知识,并且被公认为那个领域的自然权威。在这个思想开放式管理的氛围中,团队有胶冻的最佳机会。 除非必要,否则就不要自己去凝聚一个团队:出去找一个已经成型的团队来用。

一个组织良好的团队,这应该被视为项目最主要的收获之一。 当你最后评价一个项目时,不应该仅仅根据生产出的软件,还要看它是否造就了至少一个牢固而优秀的团队,一个有愿望、有激情去投入另一个项目的团队。

对应胶冻团队的是自杀团队

团队自杀的简短技术列表:防范性管理;官僚作风;物理隔离;员工的时间分割;产品质量要求降低;虚张声势的最后期限;私党控制。 大多数团队自杀的危害形式表现为强烈地贬低某项工作或者贬低做此项工作的人。

以下是一些倾向于产生团队自杀性负作用的管理行为:年薪或绩效考评;目标管理(Management by Objectives);褒奖出色完成任务的某些员工;奖励、奖金、红利与绩效挂钩;用各种可能的形式测量绩效。

Binwei: 这个稍微有点理想化,如果不去考核绩效,那又该如何管理?仅供参考罢了

领导方式

最好的经理的标志是具备这样的能力:能够挑出少数能把前瞻性和成熟恰当混合在一起的关键人才,并使之不受约束。

好的经理会为团队提供频繁而又容易一起实现成功的机会。这些机会可以是很小的、起前导作用的子项目或示范、暗示等,可以是使团队快速养成一起去获得成功的习惯的任何东西。 最好的成功是没有明显管理的成功,在这样的成功中,团队工作起来如同一个亲切的同事集体。最好的老板是能一遍又一遍地管理这个集体,而又不让团队成员知道他们已经“被管理了”。

对团队的尊重总是好经理的特征。 在有最好亲和力的公司中,经理将他们的精力花在建设和维持健康的亲和力上。 亲和力建设策略的要素:质量崇拜;提供许多令人满意的完形;建立精英意识;允许和鼓励异端;保持和保护成功的团队;提供战略但不是战术指导。 在头脑风暴上,不鼓励诸如“那是不明智的主意”之类的消极评论,因为愚蠢的主意经常会引领其他人思考聪明的主意。

平庸的经理老是提心吊胆,害怕放手就会失控,而伟大的经理知道本质上人是不可管理的;成功管理的本质是使每一个人朝着同一个方向努力,然后使他们热情高涨,高涨到任何事物即使是他们的经理也不能阻止他们前进步伐的程度。 他们已经进步到了这样的程度:在公司的最好利益方面,他们自己的指示比任何自上而下的指示都更正确。这时,就不要挡他们的道了。

让正确的人去做正确的事。这就是优秀的管理者和平庸的管理者之间的区别。

Binwei: 在大企业中,公司的条条框框会特别多。让最顶尖的人才不受这些约束,是需要智慧和勇气的。也需要最高领导层的支持,否则会把自己搞成攻击对象。

用心管理

管理并不完全是一门动脑子的科学

管理者要学会相信自己的内脏,用心来领导下属,并且构筑起团队和组织的灵魂。 人们会回应你的心。他们不会因为你聪明或者因为你一贯正确而追随你,他们只会因为爱你而追随你。 我知道这听起来有点太理想化了,但这是事实。我回想那些我尊敬的管理者,他们都有着广阔的胸襟。 在某种意义上,心是管理的根本要素。会动脑的‘领袖’可以带领别人,但是别人不会追随他。 你在团队中培育的灵魂就好像贝壳里的一粒沙。它是一颗种子,围绕着它,团体才能开始形成。

你喜欢、尊重为你工作的人.你关心他们.他们的问题就是你的问题,他们的担忧就是你的担忧。你的胸怀像天空一样宽广。在一个人真正证明自己的可信以前,你就信任他。你让我们都觉得你把我们当成一家人,这就是我们跟着你的原因

如果你不喜欢一个人,就没法说服他. 如果你不关心别人,不照顾别人,就别想让他们为你做一些不同寻常的事情。如果要让他们改变,就必须去了解(并赞赏)他们的过去。

Binwei: 经济基础决定上层建筑,如果无法解决经济基础问题,比如工资待遇,职业发展机会等等,上层建筑问题就无从谈起。

鼓励变化

在所有成功的工程中(以及在绝大多数其他有价值的工作中),变化都是基本的要素之一。

不变只是愿望,变化才是永恒

–斯威夫特

企业应该鼓励产生变化的活动,并且创建相应的环境。 除非感到安全,否则人们就不能去迎接变化;安全感的缺乏会让人们反对变化。 培养一种不允许出错的气氛只会让人们产生防备心理。

普遍的做法是,选择一种方法,试试看;如果失败了,没关系,再试试别的。不管怎么样,重要的是先去尝试。

–富兰克林。罗斯福

随着公司的“成熟”,它们越来越不愿意冒险。 最值得做的项目是在开发时能让你们公司的“过程成熟度”下降整整一个等级的项目。

Binwei: 重要的一点是不能走极端。需要让变化的结果可以被衡量,并且去衡量之。 不能因为变化没有产生期望效果而去惩罚员工,同时也不要走向另外一个极端,盲目地接受执行所有的变化。 否则,一个企业中有太多的“聪明人”,整天劳命伤财地整各种创新,并不用为之担任何责任,这样的企业也会马上失去竞争力的。

社会学问题

本质上,我们工作中的主要问题,与其说是技术问题(technological),不如说是社会学问题(sociological)。 世界上根本没有什么工作是与政治无关的。

我们倾向于集中精力做技术方面,而不是人际关系方面工作的主要原因,不是因为它更重要,而是因为它更容易做。

人员流动率

人员流动率成本占所有人力资源开支的50%。但是那只是看得见的成本。有一笔可怕的、看不见的、更加糟糕的成本。 在流动率很高的公司,人们倾向于持毁灭性的短期观点,因为他们知道自己不打算长期呆在那里。

在短期时间内解雇需要再培训的人,而雇佣已经有经验的人总是更便宜。再培训有助于建立因低流动率和强有力的社区意识产生的恒心。

Binwei: 再培训得看人,如果不是对的人,替换的成本会小得多

病态的政治

“病态的政治”可能在任何地方出现,哪怕是在最健康的组织里面。 “病态的政治”的特征:对个人权势的渴望超过了组织本身的目标。

每一天,你都必须准备拿自己的工作打赌

不要浪费时间,也不要因为尝试治疗上司的病态而使自己受到威胁。 有时候,你唯一的选择就是等待,等问题自己解决,或者等一个让你继续前进的机会。奇迹时有可能发生的(但是千万别去指望它)。

冲突

只要在开式过程中有多个参与者,就一定会有冲突存在。 绝大多数系统开发团队都缺乏解决冲突的能力。 冲突应当引起重视。冲突并不是缺乏职业道德的行为。 应当提前声明:所有人的‘赢’都是受重视的。确保每个级别的人都能赢。 记住:我们都站在同一边;跟我们对立的,是我们要解决的问题。

如果两个人的利益是完全或者部分相斥的,预先做好安排,准备好请双方通过调解来解决冲突。

谈判困难;调解容易。调解人所处的位置应该是没有权力的

催化剂的角色: 有这样一种催化剂式的人物,这样的人能帮助团队成型并凝聚,保持团队的健康和生产力,从而对项目做出贡献。就算“催化剂”别的什么事情都不干(其实,通常他们还会干很多别的事),这种催化剂的角色也是重要而有价值的。 调解是“催化剂”的一项特殊工作。调解是可以学的,而且只需要很小的投资就能学会。 调解应该从一个小小的仪式开始。“我能帮你们调解一下吗?”在解决冲突的时候,这是必要的第一个步骤。

威胁和愤怒

威胁不是提高业绩最好的方法。 如果分配的时间一开始就不够,不管威胁有多么吓人,工作也无法按时完成。 更糟糕的是,如果目标没有实现,你就必须兑现你的威胁

人们可能会因为来自客观世界的直接的恐吓而觉得没有安全感,但是如果察觉到管理者可能滥用权力来惩罚自己,他们也会觉得没有安全感。

  • 管理中的愤怒和耻辱是会传染的。如果高级管理者喜欢骂人,低级管理者也会有样学样(就像经常被骂得小孩很容易变成爱骂人的父母)。

  • 管理中的辱骂常被认为是一种刺激,可以让员工提高效率。在“胡萝卜加大棒”的管理策略中,辱骂是最常见的“大棒”。但是,哪有人被辱骂之后还能做得更好的?

  • 如果经理使用辱骂得方法来刺激员工,这就表现出经理的无能,而不是员工的无能。

  • 不要在冲突的时候才去调解,这就是关键。我们需要在冲突完全形成之前就去调解,这正是‘全赢’的根本。

愤怒就是害怕。在工作中.恐惧是不可容忍的情绪,你绝对不会允许自己害怕。但是,你总会表现出些什么。你总得另外选择一种情绪,不然你会爆炸的。由于某些原因.愤怒是可以接受的情绪,所以人们总是选择发怒,于是愤怒就成了恐惧的代名词。当然,如果是对家人、对朋友发怒,那又是另一回事,但是在工作中,愤怒都是因为恐惧。

直达天庭的坏消息

在绝大多数组织中缺少的正是一条干净的、隐蔽的、可以向老板传递真正的信息的途径。所以,每个人都想说、每个好老板都想听的那些坏消息却总是要到迟得不能再迟的时候才能到达老板那里。 建立简单的(可能是匿名的)通道,让坏消息能传递到高层。

Binwei: 这个需要掌握好尺度,做到好的可以参见雍正,做的不好的可以参见武则天

项目管理实践

项目团队

任务可以成功地转移,但是对于项目的转移,即使有良好的文档、先进的设计以及保留部分原有人员,新队伍实际上依然是重新开始。我认为正式由于破坏了原有团队的整体性,导致了产品雏形的夭折,项目重新开始。 创造力来自于个人,而不是组织架构或者开发过程,项目经理面临的中心问题就是如何设计架构和流程,来提高而不是压制主动性和创造力。

精简沟通

树状组织架构是作为权利和责任的结构出现。其基本原理–管理角色的非重复性–导致了管理结构是树状的。但是交流的结构并非限制得如此严格,树状结构几乎不能用来描述交流沟通,因为交流是通过网状结构进行的。

在堆积如山的文件资料中,少数文档是关键枢纽,每一件项目管理的工作都围绕着它们运转。这些文档是项目经理最重要的个人工具。 现实中,流程图被鼓吹的程度远大于它们的实际作用。

不论别人是否明白我们的意思,描述都应该简短精炼。

– 塞缪尔。巴特勒

让不必与会的人可以放心离开,从而保证会议的精简。有一份公开的议程,并严格执行,这是最简单的办法。

Binwei: 精简的沟通非常难,需要每个参与的人真正理解问题,做好准备

风险

浪费和风险总是紧紧绑在一起的。 如果我只能做一件事,那就是控制住风险。我会通过控制项目面临的风险来管理每个项目。软件开发是有风险的业务,管理这项业务,说到底就是要控制风险。 在风险真正变成一个问题之前,总会有一些早期的迹象,所以你需要先断定这些早期迹象是什么,然后像鹰那样去寻找它们。

风险控制:

  • 通过控制风险来管理项目。

  • 为每个项目创建并维护风险统计表。

  • 跟踪根源性的风险,而不只是最后那讨厌的结果。

  • 评估每种风险具体化的概率和可能造成的开销。

  • 对于每种风险,预测标志其具体化的早期征兆。

  • 任命一个风险控制官,这个人不应该维护组织内部“我能行”的态度。

逃避风险是致命的,因为这会让你也得不到与风险同在的利益

项目管理

两个人的团队,其中一个是领导者,常常是最佳的人员使用方法(留意一下上帝对婚姻的设计) 项目经理的基本职责是使每个人都想着相同的方向前进。 项目经理的主要日常工作是沟通,而不是做出决定;文档使各项计划和决策在整个团队范围内得到交流。

项目需要仪式。用小小的仪式来使人们注意项目的目标和理想状态:小规模会议、零缺陷工作等等。

企业目标总是在被员工们认真考虑和审查的,而审查的结果是,大多数目标被认为是非常武断的。 一个渴求达到目标的经理会说:不是团队达到目标,事情都是“人”而不是“团队”干的。 一个团队的目的不是达到目标而是向目标看齐。

Binwei: 难道领导不懂行是普通现象?

关于质量

任何人若想看到一件完美无瑕的作品,他所想的那种作品过去不存在,现在尚未出现,将来也不会出现

–亚历山大。波普

质量是免费的,但只是对那些愿意为此付出巨大代价的人而言。

检查是避免错误最简便的方法。 如果你不通过检查避免错误,那就只能通过测试来找到它们,这样会浪费更多的时间。

Binwei: 检查测试来验证质量,如果没法通过某些方法来验证,那么就不要去假设质量已经达到

人员超编

在早期,人员超编会迫使项目跨过关键的设计阶段(这是为了让所有的人有事可做)。 如果在设计完成之前,工作先被分给了很多人,那么人与人之间、工作组之间的接口就会很乱套。 这会使团队内部耦合度提高,会议时间、重复劳动和无效工作都会增加。 理想的人员安排是这样:在项目的的大部分时间里由小型核心团队来做设计工作,在开发的最后阶段(时间安排的最后1/6)加入大量的人手。

概念的完整性要求设计必需由一个人,或者非常少数互有默契的人员来实现。 其实,对于在整个设计中,保证这些看似琐碎的问题处理原则上的一致性,决不是一件无关紧要的事情。 在毫无限制的实现小组中,在进行结构上的决策时,会出现大量的想法和争议,对具体实现的关注反而会比较少。

对于人员超编的项目,标准过程看上去会很严谨,因为它们制造出了足够的工作(有用的和无用的),让所有人都忙碌不停。

Binwei: 说的太对了,可笑的是这样子的事情一而再再二三地在企业中发生。

设计与架构

如果不大幅度减少调试的时间,就没办法让项目大幅度提前完成 高速完成的项目用在调试上的时间也成比例地少得多 高速完成的项目用在设计上的时间也成比例地多得多

要想成功,结构师必须: * 牢记是开发人员承担创造性和发明性的实现责任,所以结构师只能建议,而不是支配; * 时刻准备着为所指定的说明建议一种实现的方法,同样准备接受其他任何能达到目标的方法; * 对上述的建议保持低调和不公开; * 准备放弃坚持所作的改进建议。

概念完整性是系统设计中最重要的考虑因素。 功能与理解上的复杂程度的比值才是系统设计的最终测试标准,而不仅仅是丰富的功能。

必须拥有完整的测试用例,在添加了每一个新构件之后,都要用它们来测试子系统。因为那些原来可以在子系统上成功运行的用例必须在现有系统上重新运行,对系统进行回归测试。

Binwei: 架构师需要对总体有把控,但是需要充分调动整个团队的积极性。

常识

项目既需要目标,也需要计划。而且这两者应该不同。

人们通常期望项目在接近结束时,软件项目能收敛得快一些,然而,情况却是越接近完成,收敛得越慢。

小型的团队可以在很短的时间内创造奇迹,而大型团队极少能做到同样的事情。

合并文件:即把文档整合到源程序。这对正确维护是直接有力的推动,保证编程用户能方便、及时地得到文档资料。

在很多领域中,那些有根本性突破的研究人员是在做高科技业务,我们所有其他局外人只是他们工作成果的应用者。

Binwei: 这种高科技幻觉需要警惕,这个和企业以及个人的竞争力息息相关。对自己有错误的定位会是危险的。

Written by Binwei@Oslo

Comments

comments powered by Disqus