给技术人上的管理课:控制和计划
摘要:与技术工作根本不同的是,管理不是要亲自照顾一切细节,而是要委托这些细节给被管理者,由他们自己来发挥才能。控制他人,将自己的意志传达到位,然后彻底地放手,从指挥和命令的地位调整为服务和支持的地位……
在开始讲任何的细节之前,我想先谈谈为什么要写这样的系列文章。众所周知,从事专业工作的人士,无论挂着什么样的头衔,就其日常工作的根本性质而言,基本上可以分为两大类,不妨就称为技术人和管理人吧。不用说,他们分别从事着的当然就是技术工作和管理工作。有关这两者的区别,说法很多。但说到底,它们之间的根本区别在于技术工作的对象是物,而管理工作的对象是人。技术工作的成功标志,是利用物性达成目标;而管理工作的成功标志,则是发挥出人的潜力。一方面,由于技术人不懂管理以及管理人不懂技术,是大量实际问题的根本来源,甚至也是企业和项目失败的主要原因,因此为彼此开设专门讲座来普及一下,是件挺有意义的事。另一方面,无论是技术人还是管理人,看看站在不同视角阐发的观点,也是件挺有意思的事。万一哪天自己的角色有了变化,也好先有点 儿准备。那么,就先从给技术人上的管理课开始讲起。
管理的最大秘密
很多名字里面带有“管理”的工作实际上是技术工作,例如服务器管理、资产管理等。还有很多人生生地把真正的管理工作,例如项目管理、运营管理等做成了技术工 作。虽然说技术工作没有什么不好,但把管理工作做成技术工作,意味着把作为管理对象的人看作是只有一系列属性差异,却并无人性和生气的物了。大概没有什么人情愿被这样对待,因此以这样的方式从事管理工作的人大抵会以失败而告终。而技术人在日常工作中,也免不了时不时地要做些管理工作,要尤其避免这种把人看作是物的倾向。管理,永远意味着管理活生生的人。离开了这一点,就谈不上什么管理,无论是否将其冠以管理之名。
千军可以夺帅也,匹夫不可夺志也。管理无常的人心,比起给个输入就能大致知道有怎样输出的软硬件系统,可控性差了何止千万倍。这也是很多刚上任的,甚至已经从事了很多年管理工作的朋友们始终感觉搞不清答案的一个问题:到底怎么样才能在人心这样不可知的条件下,有效地实施管理?换个更通俗的说法,为什么有些人可以做到在一大群人中令行禁止,人们着了魔一般听其指挥而动,缔造出软件帝国和传世之作,而偏偏自己想组织几个人干点从技术角度看很简单的活,都搞不定呢?
前面说过,管理的成功,体现在发挥出人的潜力。这就使得我们思考:在怎么样的条件下,人能够发挥出自己的潜力?如果说没有管理他人的经验,那就反过来想想自己好了。在下面几种情景下,你一般都能够较好地发挥自己的潜力:异地的老板突然说明天要大驾光临,要求你安排好接待和工作汇报;上面下达通知,一个月内网站访 问量若突破日均10万PV,你可以拿到五倍的季度奖;一场对你来说很重要的演讲即将开始,你突然发现装着PPT的U盘丢在出租车上,只能裸讲。
以上这些情景有两个共同特点:第一,迫于压力、耽于奖金或碍于面子,你有了强烈的意愿想达到某种目的;第二,你有机会发挥出自己的自由意志,或者说主观能动性,来组织接待、优化网站,或是即兴发挥。
反推回去,想一些非常简单的成功说服他人按自己的意志行动,并且取得了甚至比预期更好效果的例子,是不是无一例外地也具有这两个特点:对方出于某种原因,有了达成你想要目的的强烈意愿,但他们在行动时却是通过发挥自己的主观能动性完成的。
再推而广之,观察运行比较成功的组织,即能够发挥出组织中的个体潜力的,也无非就是每个个体都或多或少地带有组织目的,并能够较好地发挥主观能动性的结果。
但这么说来,似乎有哪里不太对劲。在一般人的印象中,管理似乎带有相当的强制性。既然是要管理某人,要达到的是管理者的目的,要体现的是管理者的意志,为何前面说的,好像达到了的是被管理者的目的,体现了的是被管理者的意志呢?
这并不难理解,因为每个人都是一个有着自我意志的平等个体。为着自己的目的而采取行动,而在行动过程中发挥的也必然是自己的主观能动性。如果想要脱离这个前提来实施管理,百分之百地达不到目的,即使被管理者被迫采取了一些行动,也只是做做样子罢了。这个看似简单的道理,其实却包含了管理的最大秘密:管理的终极目标就是不要管理。
涉及到较强专业性的技术管理是不是例外?完全不是。在最优秀的技术驱动型的组织里,管理者几乎都是把100%的时间用于服务、支持甚至取悦被管理者,让他们为着自己的想法,尽情地发挥自己的天才。无价的技术产品几乎都是在这样的氛围中诞生的,这包括C语言、UNIX、Gmail等等,这就是很好的证明。
控制之禅
虽然我们已经了解了管理的最大秘密,其实根本上是要靠被管理者的自觉,而不是管理者的主观意志。可是,这样的效果不是天然存在的,甚至也不是一朝一夕能达成的。因为人的想法不可能完全一致,所以想指望他人能够自然而然地读懂自己想要什么,不太可能。那怎么办呢?这就需要把自己想要的,传达给对方。
此即所谓的控制,虽然可以换个较为委婉的说法,但我还是更愿意用这个术语。换句话说,管理中的控制就是要把目的沟通清楚、传达到位,而并不是要控制人的思想和行动,因为后者是无论如何办不到的。
在技术一线长年工作的人,往往在上手管理时,感觉莫大的困难。这里面的问题就在于把握不好控制这个环节,具体来说,就是经常会把沟通和传达的内容,从目的变成了手段。
例如,很多人喜欢通过直接阅读全部源代码的方式,对于写代码的程序员实施控制。这样做究竟好不好,值得商榷。但有一些客观规律,却是很难违反。首先,一个人写的代码,另一个人理解起来存在不小障碍;其次,一个人每天能够生产和理解的代码的总量是有个上限的;再次,同样一个功能,实现它的代码可能存在多种思路,而优劣的判断标准不仅失之主观,更是极其复杂的。更重要的是,实现要求的功能,这是目的,而写怎么样的代码来实现该功能,这是手段。很多技术人做管理 的方式,就是简直是替人把工作做掉了。而这么一来,非但被管理者不能因此而领会到底工作之目的何在,而且下一回还是无所适从。你可以把饭喂到别人嘴里,但 是想让人不要饿死的话,最好还是让他感觉饥饿了自己学会怎么吃饭。
这就是为什么有时候,非技术出身又来管理技术人的,反而比科班出身的,效 果还要更好些。因为他们不懂到底为了达到目的,可以采取什么手段,这反倒迫使他们把精力集中在把到底要达成什么目的讲得更清楚、更到位些。被管理者反而对 于采取的手段有了自由空间,把主观能动性发挥了出来。
非技术出身的人来做管理也有问题,但问题不一样了。它变成了由于对于技术不够理解,而不能够很好地定义目的,甚至定义出很可笑的目的来。程序员这个群体里,用于调侃经理不懂技术而闹出的笑话,那是够多的了。所以管理技术人和技术工作的,如 果原先技术不过关的,还是有必要补一补技术课,不过这些是后话。
因此,控制这件事,看起来好像很容易,其实却很难操作。不过,有一条原则却是无论如何都成立的,那就是管理者自己要明确到底目的何在。如果是连自己都不清楚的工作,想把别人置于控制之下,那就几乎完全不可能了。
只自己明确了目的还远远不够,传达到位才是实施控制的关键。如果站得太高或业务不熟,很容易造成传达的偏差和背离,但如果管得事无巨细,结果亦适得其反。那究竟最到位的控制应该是怎样的呢?一个可行的建议,也是几乎百试百灵的建议是:在目的和手段的交界处,落下控制的闸门。比如,如果目的是实现某个功能,而手段是写代码,那么控制的最好尺度就是把所要的功能描述得全面、准确,而把写代码的充分自由交给接受这个任务的程序员;如果目的是大规模改进系统的性能, 而手段是修改配置和服务器参数以及添加资源,那么控制的最好尺度就是把性能改进的指标以及是否达标的评判标准,以及采购预算描述得全面、准确,而把具体的技术和采购任务交给对应的运维和采购部门工作人员去考虑和斟酌。当然,在必要的场合下,也不是绝对不能深入细节,特别是在需要示范和教育的阶段,但如果对于管理有着长期打算,就一定要在某个时间点完全地放手让别人来做事。这就又得出了一个所谓的控制之禅:你什么都想控制吗?那就想方设法把你的目的传达到位,然后彻底地放手吧。
计划悖论
把目的传达到位,其实对于一个有长期打算的组织来说,也就差不多够了。因为这样的管理必然会在某个时间达成效果,原因就是人一旦有了目的,那么发挥出主观能动性的力量是非常可怕的,可以说这是宇宙间最大、最持久,也是唯一可靠的力量。然而,绝大多数的实际情况中,管理者面临的挑战不仅有要做什么的问题,还有 什么时候要做完的问题。后一个问题,就不能仅靠控制,还要靠计划。
计划是一种对于管理结果的预期,无论它以时间、成本、效益还是怎样的形式出现,都是一样的。因为要达到预期的各种资源,都可以在一定条件下相互转换。
几乎每次作为咨询师参加技术公司的计划会议的时候,我都忍不住想笑。因为计划会议还没有结束,我就知道计划的所有内容都百分之百地不可能按照会议上讨论的那样发生了。
为什么呢?因为我听到了这样的有关计划的对话。
- 功能A需要多久做完?开发需要两周,测试需要一周,那就三周以后上线吧。
- 这个统计怎么那么慢?是用Ruby做的,换C++吧,效率可以快一倍。
- 一共有六个模块,现在用了三周做了两个,那就是说还要六周?是的,老板!
在第一段对话中,有两个做开发的程序员的日历显示,他们分别要请三天和四天的事假,而开发团队一共只有五个程序员,但在会议上这件事被完全忽略了。在第二段对话中,统计算法显然存在极大的问题,本来应该线性增长的时间复杂度,成了近乎二次方的,换成汇编语言也不会对效率的改进有明显影响。在第三段对话中,六 个模块中,已经完成的两个是最小的,余下的四个加起来,工作量几乎是已完成的十倍。
这些例子给我们以教训:制定管理计划是非常困难的事,因为它需要关于未来的充分信息,以及关于目的的充足知识。但计划还会带来一个非常要命的管理问题,那就是:一旦计划未能兑现,并且没有一个对此的合理解释,从此以后就不会再有人把计划当回事。
但短期的计划往往非常跟不上变化。信息瞬息万变,今天一个好好的人,明天就可能会卧病在床。对于开展工作所需要的知识,更是只可能随着时间的推移才掌握得越来越多,等到全部掌握的时候,无论成败,结果已经很明显,也用不着再计划什么了。
因此,真正有意义的计划,只有相对长期的计划。计划必须能够容忍对于未来的未知,以及必要知识的缺失。而要克服未知和无知,投入时间和资源是必要的,计划的周期越长,就越有可能在结果最终铆定之前,积累起预见所必须的信息和知识。
可是人们有强烈的倾向想要制定短期的计划,比如30天减肥,21天学会编程,等等。这其实是人类的惰性所致,想要付出微小的代价换取巨大的成果。但这样的计 划一来是很难实现,二来意义也很小——30天减了肥的人往往又胖了回去,21天学会了一点编程皮毛的人往往没过多久就又忘记得一干二净。企业里面计划会议多如牛毛,但真正坚持下来做成伟大事业的产品或项目却寥寥无几。经过多年的观察,我发现了一个特别有意思的现象,不妨称之为计划悖论:先有了计划再上马的事业,大抵无疾而终;先有了很多积累最终计划才开始成形的事业,反而很有希望做大。
这个悖论有一个古老的版本:在鸡蛋孵出小鸡之前,不要去数你能赚多少钱。未来会有怎样的变数,你要从事的水有多深,都不是一开始能知道的,计划做得再漂亮也是枉然,只会让人觉得你不靠谱。
小结
大家可能注意到了一点,这堂课里充满了很多矛盾,这正是技术和管理工作的根本区别所衍生的。技术人对于确定性的工作内容会感觉习惯,甚至驾轻就熟、得心应手。计算机只会按照指令行事,就算是运行异常,也可以一步步地排查出原因。但人性就太不一样了,它充满了矛盾,并且很难有什么确定性的规律,可以让他人像机器一样服从管理。事实上,管理的魅力也正在于,不是让他人唯命是从,而是发挥人的主观能动性,激发出自身的潜力,解决管理者甚至都没有想到过的各种问 题,并创造性地带来巨大的附加价值。
因此,和技术工作根本不同的是,管理不是要亲自照顾一切细节,而是要委托这些细节给被管理者,由他们自己来发挥才能。控制他人,将自己的意志传达到位,然后彻底地放手,从指挥和命令的地位调整为服务和支持的地位,这就是最高明的管理者们唯一应该做的。
计划是一把双刃剑,不要先有计划再做事,因为这个时候还不知道未来会发生什么。先积累一些经验,吃一些亏,朝向着目的推进一些,然后再一点点地形成一些长期的计划,这是做大事的节奏。如果计划未能实现,就要在结果出现之前想办法弥补,至少要做必要的解释来调整计划,否则团队的信心会受到挫折,对于管理者的信任也会下降,而这对于管理工作来说是非常不利的。
作者高博,EMC中国卓越研发集团首席工程师,有丰富的技术团队管理经验,交付项目有大型桌面软件、移动设备和应用平台和以云存储和云计算为基础的在线企业备份系统。新浪微博:但以理_高博