软件公司的两种管理方式

软件公司的两种管理方式

这篇文章是我的一个外国的同事Gareth推荐给我的,我和他一起工作过一段时间。他之所以觉得非常不错,是因为这篇文章让他身有体会,他觉得我也一定会有体会,并让我考虑一下翻译到我的blog上来。我看完后觉得很有代表性,而且觉得说得太对了,所以翻译过来,希望大家都读一读,最好转给你的公司老板

这篇文章来源于 StakeExchange上的一个问题——“为什么BA和PM的薪水要比程序员要高?”,顶在一楼的回复分析了这个原因,并指出了两种管理文化。

———————————————————正文开始————————————————————

一个简单的回答应该是——“因为在我们的社会里,我们总是会认为薪水和会和职位的层次绑在一起”。但是,这个答案同时也折射出一个事实——我们的薪资是基于我们的所理解的价值,但这并没有解释

  1. 为什么PM(Project Manager)和BA(Business Analysts)在很多软件公司里在组织的上层?
  2. 为什么软件项目团队总是在最底层?

这两个问题真是非常地值得我们去问,去思考。

总体来说,这个世界上存在两种不同的软件公司的组织结构。我把他们叫做 Widget Factory(小商品工厂) 和 Film Crews(电影工作组).

Widget Factories 想要去解决 怎么去激发被X理论所影响的人 。X理论由 McGregor提出,这个理论是说,一般人的本性是懒惰的,工作越少越好,可能的话会逃避工作,大部分人对集体(公司,机构,单位或组织等)的目标不关心,因此管理者需要以强迫,威胁处罚,指导,金钱利益等诱因激发人们的工作源动力。于是,经理总是要去做他下属的工作。于是,基于这种前提下所思考出来的管理方式,很自然的就是——整个团队能够容易地被经理一个人所取代,这种团队中的每一个人都很容易被别人取代,在这种团队里,经理的工作能力不断地被加强。因些,这种公司一般使用树形层级的组织结构,而不是水平式的工作角色。

Widget Factory 管理体系运作于软件需求的某种假设,这种假设需要BA在一个定义地非常明确的并且需要主管项目经理监管的流程的环境下,准备软件的规格说明书。这种软件制造业需要对项目定置足够的可被替换的编程和测试资源。整个工作由事先安排好的预算来驱动,这个预算由PM和BA在初始化business case的时候完成。

一个 Widget Factory 的公司的管理可以通过观察这个公司员工的谈话方式识别出来。他们很喜欢谈论Resource资源(包括干活的人也叫做resource),Process流程,Operating efficiency运作效率,uniformity一致性, repeatability可重复性,严格在控制对资源的使用,鲜明的工作角色和 鲜明的流程定义(inputs 和 outputs)。他们对实实在在的软件开发漠不关心,他们想要把理想中的软件开发运作变成他们看得见的图画。

Film Crews 。这种公司认为人是有相当高的智力和创造力的,是自己可以激发自己的(陈皓注:即使没有外界的压力和处罚的威胁,他们一样会努力工作以期达到目的——人们具有自我调节和自我监督的能力),人们努力工作,并且可以享受工作(人们愿意为集体的目标而努力,在工作上会尽最大的努力,以发挥创造力,才智),就像孩子喜欢玩一样。 Film Crews 认为,每一个个体的自已专业能力,要远远优于那种被组织和协调出来的能力。因为经理不再代替每一个人,而树形的层次架构也不能很好的运作——人们不得不以比较复杂和形式合作才能把事搞定。工作职责变得非常地垂直——你需要具有从上到下的而比较宽泛的各种能力(陈皓注:每个人都需要有管理和技术能力),这种管理也就是基于 McGregor的 Y理论

对于一个Film Crew 的Director(注:有总监和导演的意思),他了解把一个伟大的软件组合起来的每一个碎片,他需要组织一个无与伦比的团队,并且要帮助这个团队能凝聚在一起,团结在一起工作。他的角色是鼓舞大家,守护着构想(Vision),提供方向和集中大家的精力。团队里的每一个人都很关键,因为“Director”相信软件的结果来自所有的参与者,以及他们的那种独一无二团队工作方式。大家都知道自己是这个事的一个明星,明星效应可以增加成每个人的成功的机会。而他们的构想(Vision)驱动着项目的预算和拨款。

当我们用报酬来表示的话, Widget Factories 认为,有价值的东西总是从PM和BA派生出来的,所以他们常驻在管理层的上面,也有相应的报酬,而对于软件团队,只要他们正确地把需求变成可工作的代码后,软件团队就变得无所谓了。PM 和 BA 努力工作来维护他们的权位,他们通常不会让你能得到项目的原始信息。因为团队拿不到项目的原始信息,所以团队就要拼命地制造各种理由来让他们的方案变得有价值,程序员成为了只会从PM和BA那边听从命令的工人。而这种情况反而让Widget Factory 公司放大了他们的那种想法——程序员都是差不多的,就像车间里的工人一样,他们只不过在机械地干一些很复杂的但是很标准的事情。

与 Widget Factories 公司鲜明的对比,Film Crew 更主张的是平等的工作职能,每个成员都可以不受限制地获得主要的和原始的信息,其鼓励所有人形成自己的价值判断,并且可以自由地选择不同的方式来达到团队的构想。Leadership领导力结构基于人的能力而不是工作角色。报酬折射出这个人是怎么在这个项目中工作的,需要明白这个人为我们的软件创造了多大的价值和产生了怎么样的结果。 在这种环境里,PM的工作显得并不突出,他也许也不太可能是一个有创造力的领导者,工作角色被弱化成了一种行政管理上的支持者,以及团队外部的联系者。BA的部分工作直接被团队取代(在项目早期被Director取代)。

今天,我们一点也不奇怪,大多数的公司内的软件开发团队以及一些咨询工作运作于 Widget Factories ,其需要依赖于流程来不断地制造那些无聊的软件。在这种情况,惯例上来说,PM和BA要比程序员挣得更多,这是基本一种他们可以创造更多价值的假设。在这种组强架构和管理里,程序员们很难证明管理是错误的。

成功的软件公司都会趋于采用 Film Crew 的方式,任何其它的东西都会妨碍他们吸引牛人的能力,因为只有吸引了牛人,你才能创造出伟大的软件。 在这种公司里,一个好的程序员的收入会高过BA和PM很多。

———————————————————正文结束————————————————————

读完这个贴子,我发现这完全就是在说我上一家公司和现在公司。我上一家公司的经理们最喜欢谈论的就是resource、 process,而他们的Project Manager或Team Manager或Dev Manager几乎不会为软件团队分担真正的软件开发的压力,还不如Widget Factory。哎!第一次看到这么被人系统地表达出来,心中的一些困惑都得到了解答。

你的公司属于哪一种呢?

————更新 – 2011-7-6 晚————

有人在我的新浪微博(@左耳朵耗子)里说,Widget Factory就是Waterfall,Film Crews就是Agile,在下面的留言里也说Film Crews很像SCRUM。我在这里驳斥一下这种说法:

  1. 我上一家公司也用Agile ,但本质上还是Widget Factory,甚至还不像。
  2. 著名的Thoughtworks中国公司,Agile的倡导者,其实是外包公司,他们的开发团队中也有PM和BA。

(转载本站文章请注明作者和出处 酷 壳 – CoolShell ,请勿用于任何商业用途)

好烂啊有点差凑合看看还不错很精彩 (59 人打了分,平均分: 4.64 )
Loading...

软件公司的两种管理方式》的相关评论

  1. TO楼主:
    PM、BA、Dev…… 有个角色的帽子怎么了?和是否Agile有什么关系啊,想什么呢? 总要有人在团队中整理下资源、和客户的谈谈现状和未来;总要有人把客户的想要的feature想明白了做成story,又排出优先级,写好验收条件甚至界面Mockup,让团队中其他人能够放心去开发;所有人都会和客户邮件往来下沟通问题,但总有人得承担起持续地关注邮件,对客户意见敏感地做出回应⋯⋯ 这些脏活儿被带着PM以及BA帽子的伙伴揽下来,才有了作为所谓的Dev的我能专注于写代码的好日子!你被自己公司的带头衔的人打疼了,不要对着别的公司的人胡说话。以后还是多多发技术文章吧,干嘛老惹个是非呢?自己的人品是养出来的。

    1. @bobo,呵呵,我看是你的理解有问题。是有的人说这个和Agile有关系,我出来说这个和Agile没有关系。Agile还不是可能是小作坊。呵呵,又没有说你个人,你着急什么呢?

  2. 工资和业绩挂钩,业绩和People Mgr对你的印象挂钩
    那么程序员和PM/BA相比,哪个和People Mgr沟通联系更多呢?
    People Mgr一般对技术并不是很关心,而且过于关心具体细节的mgr一定程度上不是一个好mgr,
    除去少量从技术出生的ppl mgr, 真正和程序员能够无障碍沟通又有多少?
    有人的地方就有江湖,江湖就是人和人啊

  3. 深有同感,简单说就是一种方式信任人,一种方式不信任人,两种完全不同的文化氛围;不是说信任就好,不信任就不好,还跟个人的性格有关系,所以在招聘的时候就要特别谨慎,需要招有责任心的人;也不是说信任了,就放任自流了,还是需要一定的管理,只不过这个时候更加人性化,管理退化为一种辅助,生产力是主角;
    一个公司如果能做到Film Crews这种模式,那么它的领导必然深暗软件开发之道!

  4. “划清界限”是没有太多指导意义的,很多公司内容是多种管理方式并存的(深度官僚除外),管理者对不同人的管理方式也因人而异。后一种方式显得太过于理想,怎么能保证组织里面都是这样的人呢?不然总有坐享其成的。

  5. 我不是很明白一个经济问题怎么就被讨论成了一个组织架构问题,供求关系决定商品价格,程序员很多很多,平均价格不高是正常(虽然比其他工种已经高很多);再加上人天生的局限—一个人最亲近的也就是7人左右小团队,作为一个boss,一般都不懂或者不耐烦再直接跟coding的人打交道(计算机没有智能,程序员用计算机语言太多,一般都会削弱与人的交往能力,老板理解很累),所以工资就自然偏向于智囊团、管理者之类的角色。

    如果是一个10人左右独立核算的团队,成员平均素质还不错,他们往往也能团结在一起发挥出各自很优秀的能力,无论其中是否有程序员。如果是上百人的团队,所谓的Film Crew,我认为是不可能在团队中平等实现的,现有的社会组织形态无法支撑这种对人的潜力的高效释放,再等100年吧。

    我读书那时候计算机刚刚全面热起来,用炒股的思路看来,入场其实已经晚了;在我之后还无怨无悔选择这个专业的人,要不是不知道真相,就是期望那份还不错的薪水,再加上任何coding已经入门的人所能体验到的那种—通过coding迅速创造一个自己定义规则的小世界,还能和现实交互—神一般的感觉,不是吗?但是想将那个各自效能最大化的理想从那个世界投影到现实,就有些强人所难了,有或者时候未到吧

  6. 一般公司都是在劣币驱逐良币,优秀人才是无法容忍不上进,不改进工作的人的,

  7. 据我所知,目前在个人认为伟大的产品中采用Film Crew只有Steam采用了。Film Crew的成员必须都是天才。这个世界上很难把天才都聚集到一个小型或中型公司。

    可能也有其他伟大产品公司采用了这种。但Film Crew仅仅只是在伟大上使其更优秀。并不能从一个默默无闻的产品变成一个伟大的产品。FB, Apple,Google,Twitter,Amazon等伟大的产品,固然包含Film Crew一群人,但更多的是普通成员对这个产品的不断支持。

    一个伟大的产品:idea第一,市场和研发并重。

  8. X也好,Y也罢,说的是一种文化,这种文化不是一个公司能够给予的,公司只是一个载体,更多的要靠每个个体的认识与成长,特别是带头人的表帅。

  9. 希望有一天可以达到有能力挑选公司的高度,起码在这之前依旧过着手停口就停的日子。即使身处还不如Widget Factory的公司,要么做,要么不做,就是这么简单。

  10. Pingback: - 馒头映像
  11. 发现现在就是 WF 的那种模式,一般来说这样的模式在国内很常见吧,只能是洁身自好.很多篇文章觉得都有一些共同点,就是环境恶劣,不想变成那样一个任人摆布的角色,项目达标是基本要求,也是他们的要求,但是至于达到要求后,自己如果喜欢这个项目,会花很多心思去钻研,也算是自我推动吧,只是觉得很多时候都很累,没有一个好的环境,推动的太慢了,也不知道有什么好的方法么?
    在一个恶劣的环境里面你会发现周围的人真的就像是工人,随时都是可以换掉了,很多东西都没想法,只是按照要求在做着什么.至少我在这样的环境里面是很小城的,这个圈子太怪了.
    觉得国内之所以这样,也是在所难免的把,当上面的智商不够时,就需要大量的人要加班,这样就对这个市场有大量的需求,哪怕是造一些小东西,哪怕是已经有相当成熟的项目已经完成了他们正在开发的东西.但是还是要求要再开发一遍,至于为什么,或许他们从来不知道原来 XXX 正好和自己的需求已有,或许他们觉得自己写的代码更可控,虽然某个开源项目已经开发几年了,或许只是觉得开源的东西就不可靠,或许就是觉得开源的东西都不知道有没有人商用(当然只看国内的商用),或许只是直接用开源的东西无法向上面申请经费.然后这样奇怪的事情就开始了.
    这个行业的需求量太高,大学还没毕业的,去培训半年就上岗了,打着两年的工作经验,很轻松的就入职了.难道就不会被发现么?发现进去了,里面的人水平也都相差无几,这个太搞笑了.坑爹的项目需求造就了坑爹的人员需求,这个是一个基本的恶性循环,一般来说刚培训完的人水平是很有限的,能够做好一个 worker 就不错了,有觉悟的程序员并不多(或许正在增加吧).这个也和中国坑爹的环境有关吧.我认为程序员需要有几个基本的要素,1. 会翻墙 2.会基本的英语 3. 学习能力强.这些看上去似乎和技术无关,但是我认为如果这三点达不到的,只有很小的几率是个好程序员.
    程序员的工作因此并不怎么被看好吧,而且经常都会有猝死的新闻,觉得也是很恐怖.刚开始上班的时候,看到周围的人白发的好多,吓尿了,我发誓我一定不要太累,但是现实还是很残酷的.
    作为一个刚开始的工作的程序员,自己的觉悟太低了,发现跟着上面的管理者走,慢慢的就走走偏了,那时候还根本感觉不到管理者说的是否对错,因为对一个新的需求没有基本的概念,认知很少,只能说他说什么就是什么.对于一个刚从业的程序员,或许也只能是这样.当经过几次知识的迭代,发现自己渐渐的产生了反对管理者的念头,当然,话头上依然还是顺从的.
    开发项目的过程中,因为是新的领域,选择的起点非常低,基于一个国产开源项目开始改造,这是第一轮,过了一段时间,渐渐的明白,有了自己的想法,尝试着,在一周内做出了一个类似的系统,这是第二轮,发现自己的起点太低了,讨厌重复造轮子,知识面太狭隘,开始扩开自己的眼界,发现其实有很多别人已经做的很好的东西,也不知道这样的想法是否很浮夸,现在想基于一款开源产品进行扩展以达到现有系统的功能.当然这些都是个人自己在做的事情,和团队无关.小组里依然还是第一轮里的状态.他们觉得能用就行了.
    很多时候走到这里也会觉得有点困惑,感觉自己是一个有代码洁癖的人,而且很多东西追求完美,自己的焦油坑很深,发现这样的想法在 Widget Factory 这样的环境中是行不通的,一个人的想法很难和别人沟通,渐渐的就放置一旁了,只是偶尔有空了才会去推进一下.
    甚至在开会的时候,领导者很明确的说,他并不关心技术,他认为,只有有想法就能做出来.也是不知道该怎么吐槽.
    自己生平起点太低,很难有个好的环境,自学起家的程序员似乎有种与身边的人格格不入的感觉,困惑,但依然在前行

    ——— 看了几篇文章,突然想说点什么

  12. Y和X只是典型而已,有很大一部分的公司都不属于Y或者是X。是X的公司,底下很多员工会有各种抱怨。但是要做到Y,我现在的公司要技术部要裁掉2/3的员工。人多少会有些惰性,自制力不行,包括我自己,还是需要适当的压力。个人觉得在向y行进的同时,需要在规范和制度上下更多的功夫。

回复 GK 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注