软件公司的两种管理方式 - 转自 CoolShell

本文转自酷壳:https://coolshell.cn/articles/4951.html


软件公司的两种管理方式

 2011年07月06日  陈皓 评论 110 条评论  74,539 人阅读

这篇文章是我的一个外国的同事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微信公众账号和微信小程序

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

——=== 访问 酷壳404页面 寻找遗失儿童。 ===——

### CoolShell IT技术博客简介 CoolShell 是由陈皓(网名:coolshell)创建的一个技术博客,专注于分享计算机科学、编程、算法、系统设计等领域的知识[^1]。该博客内容涵盖了从基础到高级的众多主题,包括但不限于数据结构、算法、并发编程、性能优化、Linux内核以及软件工程实践。陈皓以其深入浅出的写作风格和对复杂问题的清晰解析而闻名,使得 CoolShell 成为中文互联网中极具影响力的 IT 技术博客之一。 项目地址为:[https://gitcode.com/gh_mirrors/fo/forever-coolshell](https://gitcode.com/gh_mirrors/fo/forever-coolshell),此地址用于保存和纪念陈皓先生的技术分享内容,确保这些宝贵资源能够长期存档并供后人学习。 ### CoolShell 的主要内容分类 CoolShell 的文章内容可以大致分为以下几个方面: 1. **算法与数据结构** 博客中包含大量关于经典算法和数据结构的讲解,例如排序算法、查找算法、图论等,并结合实际应用场景进行分析[^1]。 2. **并发编程与多线程** 详细探讨了多线程编程中的常见问题及解决方案,如锁机制、死锁、线程安全等。 3. **系统设计与架构** 分享了分布式系统的设计原则、微服务架构的最佳实践,以及高并发环境下的性能优化技巧。 4. **Linux 系统与内核** 深入剖析 Linux 系统的工作原理,包括进程管理、内存管理、文件系统等方面的知识。 5. **职业发展与软技能** 除了技术内容外,CoolShell 还涉及程序员的职业发展建议、团队协作技巧以及如何提高工作效率等软技能相关话题[^1]。 ### 示例代码片段 以下是一个简单的多线程示例代码,展示了如何在 C++ 中使用 `std::thread` 创建和管理线程: ```cpp #include <iostream> #include <thread> void threadFunction() { std::cout << "This is a thread function." << std::endl; } int main() { std::thread t(threadFunction); if (t.joinable()) { t.join(); } return 0; } ``` 此代码片段体现了 CoolShell 中关于多线程编程的某些概念[^1]。 ### 相关推荐的技术博客 除了 CoolShell 外,还有许多其他优秀的 IT 技术博客值得参考: - **阮一峰的网络日志**:涵盖前端开发、JavaScript、Python 等领域[^4]。 - **Phodal**:专注于云计算、容器化技术及 Linux 内核研究[^4]。 - **Paul Irish**:前端开发领域的权威博客,主要讨论 HTML5、CSS3 和 Web 性能优化[^2]。 - **Stoyan Stefanov**:JavaScript 和性能优化方面的专家博客[^2]。 - **月光博客**:综合性的技术博客,覆盖范围广泛,包括国内外技术动态和新闻[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值