新闻资讯

软件工厂和软件摄影组

03月 21

作者: 张晨 | 悦读次数: 8430 | 发表日期: 2013-03-21 23:31:07

以前从http://programmers.stackexchange.com看到过一个有趣的问答,近期被36KR翻译,现摘录原问答及译文如下:

Q:
We have to admit that programming is much more difficult than creating documentation or even creating Gantt chart and asking progress to programmers. So for us that are naives, knowing that programming is generally more difficult, why do business analysts and project managers get higher salary than programmers? What is it that makes their job a high paying job when even at most times programmers are the ones that go home late?

A:
Whether project managers get higher salaries than programmers and business analysts at all exist as a class depends squarely on the software world you live in.

A simple answer to this question would be "because in our societies, we still think the salary is bound to the position in the hierarchy." But this answer whilst reflecting the fact that people are paid based on their perceived value doesn't explain why PM and BA are on top of the hierarchy in many software organisations and why the management goes for hierarchy in the first place as a structure of choice for software project team. These are the two questions that seems to be really worthy asking.

Broadly speaking there are two categories of software making organisations. I will call them Widget Factories and Film Crews.

Widget Factories are born out of management school of thought revolving around motivation Theory X proposed by McGregor: rank employees are lazy and require constant control and supervision, jobs are held in the name of a pay check, managers are always able to do their subordinates' jobs to the higher or, at least, same standard. This thinking lands to a natural idea that the entire team can easily be replaced with and represented by the manager alone - after all everyone else on the team is either easilly replacable or there just to enhance manager's ability to complete tasks. Hence the hierarchy as a structure and rather horizontal job roles.

Widget Factory management operates on the assumption that software can be manufactured out of a specification prepared by a business analyst through a clearly defined process run under the close supervision of a project manager. The manufacturing is taken care of by staffing the project with enough qualified yet interchangeable programming and testing resources. Work is driven by a prearranged budget based on the initial business case prepared by PM and BA.

Management that runs a Widget Factory is easy to spot just by paying attention to the way these people talk. They are likely to be on about resources (including when referring to team members), processes, operating efficiency, uniformity, repeatability, strict control over use of resources, clear-cut job roles and defined process inputs and outputs. They'd casually mention the actual factory metaphor when trying to convey the image of the ideal software development operation as they see it.

Then there are Film Crews. They are based on the notion that people are intelligent, self-motivated, work really hard and enjoy their jobs as much as kids enjoy playing. Film Crews recognise that due to specialisation individual contributor abilities may by far surpass the abilities of people organising, co-ordinating and directing the work. Since manager can no longer substitute for everyone the hierarchical structure just doesn't work that well - people have to co-operate within a much flatter and complex formation to get things done. Jobs roles themselves tend to be much more vertical - start to finish - and involve a broader variety of skills. This management thinking is underpinned by McGregor's Theory Y.

A director of a Film Crew knows that her vision for a piece of software can only come true should she be able to assemble a great crew, fascinate the imaginations and help the team to gel and work together. Her role is to inspire, guard the vision, provide direction and focus the efforts. Every single person matters because "director" believes that software results from combination of worldviews and abilities of all participants and a unique way the group carries out the work together. Everyone recognises from the onset the importance of getting the stars to join the crew – star performers increase every chance for success. Vision drives budget and attracts funding.

When it comes to compensation Widget Factories deem that the most value is derived from the work done by project manager and business analyst who reside on the top of the hierarchy and have to be compensated accordingly, the rest of the team doesn’t matter that much as long as they’ve got the right qualifications to convert requirements into working code. PM and BA work hard to maintain their position on top of the pack by restricting free access to the sources of project information to the rest of the team. Without formal access to the primary info sources the team struggles to make any value judgements or come up with good solutions, programmers are relegated to taking orders from above and working on the problem as defined by PM and BA. This situation further reinforces the Widget Factory notion that programmers are akin to factory shop floor workers only capable of mechanically carrying out though technically complicated, but nonetheless standard tasks.

In a stark contrast Film Crew acts as a more egalitarian formation; members are given unrestricted access to primary information, encouraged to form value judgements and are free to select a course of actions to fulfil and contribute to the vision. Leadership structure is based on ability rather than a specific role within the team. Compensation reflects how desirable getting a specific person to take part in the project, it often tied to the perception of how much more valuable the end result will become if that person can be convinced to devote their energy to creating that piece of software. In this environment the role of a project manager becomes less prominent as he is unlikely to be the creative leader; the role comes down mostly to administrative support and external relations. Business analyst’s duties are partly replaced by the role of visionary (I called her earlier “a director”) and partly absorbed by other team members.

Now, it won’t come as a surprise that most in-house software development teams and some consultancies are run as Widget Factories relying on a process to produce consistently boring software; it is these environments where project managers and business analysts are routinely paid more than programmers based on the assumption that they bring the most value with the environment structured accordingly making it difficult for programmers to prove the management wrong.

Successful software companies tend to adopt Film Crew viewpoint, any other philosophy would hinder their ability to attract great people that they rely on so much to produce great software. It’s unlikely you’d ever see a business analyst role in that setting and project managers are less prominent and routinely get paid less than great programmers.


中文翻译(来自http://www.36kr.com/):

有人提问:“我们都知道编程比做甘特图(项目进度管理图表)要更难,而且程序员加班也更多,那为什么 IT 公司里 PM 和 BA (Business Analyst,业务分析师)的工资比程序员要高?” 英国的 Vlad Gudim 给出了一个很有意思的答复。

这个问题的答案取决于你工作在一个什么样的软件公司和环境。

简单回答,原因是我们生活在一个按照职位在公司的层次和等级发工资的社会。但是这个答案并不完整,因为我们没有回答为什么 PM 和 BA 职位的等级在很多软件公司里比程序员要高,也没有回答为什么很多软件公司要选择这种等级制度的管理方式;这两个问题其实才是最值得探讨的。

概括地来讲,这个世界上有两种做软件的公司:一种类似于工厂,而另一种类似电影摄制组。

工厂型的软件公司起源于 MIT Sloan 管理学家 Douglas McGregor 提出的激励理论Theory X:普通员工是懒惰的,而且需要不断的监督和管理;员工来工作只是为了拿工资;经理的能力永远要比手下的员工强。在这种管理理念的影响下,我们会认为团队的领头可以代表,甚至于替代他的整个团队,而团队成员只是完全可以互换的人力资源,他们的唯一价值就是帮助领队完成任务。因此,这类公司都采用等级制度的管理方式,工作的分配也很单一。

软件工厂的管理层认为软件是可以通过一个很明确的流程生产出来的,而这个流程需要 PM 的监督和 BA 写出来的软件 specs。生产过程本身只要有足够合格的但是可以随时替换的程序员和 QA 就搞定了。当然项目的预算和最后发布的产品也都是 PM 和 BA 说了算。

软件工厂的经理人是很容易识别出来的,因为他们在形容软件制作时会经常提到“资源”(指的是他们团队的成员)、“流程”、“运营效率”、“质量监控”等工厂生产业的术语。

而另一种软件公司类似于电影摄制组,他们的管理理念来源于 McGregor 提出的Theory Y:他们认为员工是自觉而聪明的,也很喜欢自己的工作,对待工作像小孩子对待玩耍一样。这类公司认识到个体工作者(individual contributor)的能力有可能远远大于管理人员。当经理不可以代表和替代所有手下人的时候,等级制度的管理方式就不太好使了。人们需要在一种更扁平化的团队结构下互相合作,工作的分配也更加多样化,每个人都需要具备多种能力。

摄制组类软件公司的“导演”会意识到如果想做出一个很好的产品,他需要很牛的人加入他的团队,而他需要给这些人一个可以尽情发挥与合作的环境。导演这个角色给予他人灵感,而且掌控大方向,而不是单纯的管理者。团队里的每一个人都很重要,因为最后的产品是团队上所有人性格和思维的体现,而不是某某 BA 写出来的软件 specs。

在工资方面,软件工厂会认为在等级化组织顶端的 PM 和 BA 是最有价值的,所以自然会给他们最多钱。团队的其它成员只要差不多,会把 specs 变成代码就可以了。PM 和 BA 会勾心斗角全力维护他们在顶端的位置,不与团队成员分享很多有关项目的信息。没有这些信息,团队成员无法自己做很多设计上的决定,所以只能听从命令,按照 specs 来写代码。这种情况会构成一种恶性循环,软件工厂的程序员会真的变成像工厂里的流水线工人一样,只会做技术上复杂,但是实际上重复性很强的工作。

相比之下,摄制组类软件公司会更加平等;所有的团队成员都可以参考有关项目的所有信息,并且做出自己的判断和设计决定。谁有能力谁就可以来领头项目的某一部分,而工资的分配是依据这个人给团队和产品带来了多少价值。在这种公司里面,PM 往往不负责产品设计和创意,而仅负责一些行政和与外界打交道的事情。BA 的职位可能根本就没有,而是所有团队成员都承担一些软件 spec 的编写。

当然,你应该知道很多大公司的内部 IT 部门和外包类软件公司都是像我所形容的软件工厂。在这些公司里,PM 和 BA 的工资比程序员要高,而且程序员很难改变管理层做出的设计决策。

成功的软件公司往往倾向于电影摄制组型,因为只有这样,他们才可以吸引最优秀的人才来做出最优秀的软件

评论
  • Zabrina
    thanks to you i had the huge urge to go there today and i did! great dinner evnotheugh they were closing!!! =D the beef tongue was amazing and i can't wait to go back again! heehee
  • Jack
    很有道理,但在中国实现起来比较困难,希望你们能成功
发表评论
请输入验证码 看不清
选择头像:          
"用科技为您精打细算,用真诚让您满意一百"
- 百算信息技术