你是码农涅,还是创造者涅(内容是转载的,标题是我写的)

本文探讨了软件公司的两种管理模式:WidgetFactory(小商品工厂)和FilmCrews(电影工作组),并分析了这两种模式如何影响软件开发团队的角色和价值。

软件公司的两种管理方式

2011年7月6日 陈皓 发表评论 阅读评论 19,794 人阅读    

这篇文章是我的一个外国的同事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.cn ,请勿用于任何商业用途)

转载于:https://www.cnblogs.com/IDoIUnderstand/archive/2012/12/09/3280728.html

<think>好的,我现在需要解决用户关于“码农耕地”这个术语的疑问。首先,我要确定用户的问题是什么。用户想知道“码农耕地”的具体含义、定义,以及它在编程术语中的背景。接下来,我需要分析这个词的结构和可能的来源。 “码农”是程序员的自嘲称呼,指代那些大量编代码、工作强度高的开发者。“耕地”通常指农业中的耕作,这里可能被隐喻为持续、重复性的工作。结合起来,“码农耕地”可能描述程序员在开发过程中重复性高、创造性低的任务,比如维护旧代码、修复bug等。 接下来,我需要验证这个推测。查阅相关资料,看看是否有这个术语的正式定义。不过,根据我的知识库,“码农耕地”并不是一个广泛认可的专业术语,可能属于行业内的俚语或自嘲用语。需要指出这一点,避免用户误解为正式术语。 然后,考虑用户可能的深层需求。他们可能遇到工作中的重复性任务,想了解这种现象是否有特定称呼,或者寻找解决方法。因此,在回答时不仅要解释术语,还要提供相关建议,比如如何优化工作流程、提升效率,或者引入自动化工具。 最后,生成相关问题,帮助用户进一步探索。例如,如何提高编码效率,避免重复劳动的方法,或者如何优化工作流程。这些问题能够引导用户深入思考,解决实际问题。 总结回答结构:定义术语,分析组成,解释使用场景,提供建议,并生成相关问题。确保语言通俗易懂,结构清晰,符合用户需求。</think>### 码农耕地的含义与定义 **"码农耕地"**是程序员群体中常见的自嘲式术语,由以下两部分组成: 1. **码农**:戏称程序员为“代码农民”,暗喻高强度、重复性编码工作,类似农民耕作[^1] 2. **耕地**:比喻开发过程中需要持续维护的基础性代码工作,如: - 旧系统维护 - Bug修复 - 重复业务逻辑实现 - 技术债务处理 该术语反映了软件开发中存在的两类典型场景: - **低创造性工作**:如反复修改老旧的$if-else$逻辑 - **高重复性任务**:例如需要频繁调整的$JSON$数据格式对接 $$ \text{编程效率} = \frac{\text{有效代码量}}{\text{总工作时间}} \quad \text{(衡量耕地强度的常用指标)} $$ ### 应对建议 1. **工具化**:将重复操作封装为$CLI$工具 2. **自动化**:使用$Python$脚本处理机械性任务 ```python # 示例:自动生成重复性代码模板 def generate_entity_class(class_name, fields): code = f"class {class_name}:\n" code += " def __init__(self):\n" for field in fields: code += f" self._{field} = None\n" return code ``` 3. **架构优化**:通过设计模式解耦系统,减少耦合带来的维护成本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值