【转】谈分工

2023-10-23 21:20
文章标签 分工

本文主要是介绍【转】谈分工,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

https://coolshell.cn/articles/17295.html

让我们来谈谈分工

Division of Labour昨天,我看到一个新闻——雅虎取消了QA团队,工程师必须自己负责代码质量,并使用持续集成代替QA。 同时,也听到网友说,“听微软做数据库运维的工程师介绍,他们也是把运维工程师和测试工程师取消了,由开发全部完成。每个人都是全栈工程师”。于是,我顺势引用了几年前写过一篇文章《我们需要专职的QA吗?》,并且又鼓吹了一下全栈。当然,一如既往的得到了一些的争议和嘲弄;-)。

有人认为取消QA基本上是公司没钱的象征,这个观点根本不值一驳,属于井底之蛙。有人认为,社会分工是大前提,并批评我说怎么不说把所有的事全干的,把我推向了另外一个极端。另外,你千万不要以为有了分工,QA的工作就保得住了。

就像《乔布斯传》中乔布斯质疑财务制度的时候说的,有时候,很多人都不问为什么,觉得存在的东西都是理所应当的东西。让我们失去了独立思考的机会。分工也是一样。

所以,为了说完整分工这个逻辑。请大家耐住性子,让我就先来谈谈“分工的优缺点”吧。

 

分工的优点和缺点

首先,分工(Division of Labour)应该是由 Adam Smith 在1776年的《国富论》中提出来的,Adam在那时候就观察到分工对于手工业生产效率的提高。他将效率提高的原因归结于三点:

  • 熟练程度的增加。当一个工人单纯地重复同一道工序时,其对这道工序的熟练程度会大幅增加。表现为产量和质量的提高
  • 如果没有分工,由一道工序转为另一道工序时会损失时间,而分工避免了这中间的损失。
  • 由于对于工序的了解和熟练度的增加,更有效率的机械和工具被发明出来,从而提高了产量

分工的确是提高生产力。我想到了福特公司一开始做出来的汽车几乎卖不出去,原因有两个,一个是成本太高,另外是生产太复杂,产能太低。于是福特公司开始把制造一辆汽车的工序分解开来,进行分工,分工给福特公司带来的好处是:

  1. 很多工作可以并行了,而且因为事情变得简单后,执行力也变强了
  2. 一个非常复杂和高深的汽车制造因为分工后,很多工作不需要很NB的人来干了,只需要一般劳动者经过简单的培训就可以干了。而且,越干越熟练,越干越专业,最终可能让合适的人合适的事。
  3. 分工后导致了很多重复劳动可以用技术来解决,于是福特公司出现生产流水线的技术(你是否还记得卓别林《摩登时代》里的工业生产流水线的场景,那取自福特公司)。

于是,福特公司的生产效率大大提高,最终实现了让每个美国家庭都能买得起汽车的理想,同时让美国成为了轮子上的国家。

不过,我们需要注意的是,在《国富论》中,Adam他同时也提到,分工如果过细,同样会带来问题——简单重复的劳动会让人变成一个不会思考的机器,从而越来越笨,进而变成平庸的无技能的人。自“分工”出现以后,争论就没有停止过。

Karl Max同样认为分工越来越细,会导致人的技术越来越差,同时,大量的重复劳动也会导致人对工作的失出热情,产生厌倦和抵触心理,最终会导致生产力的下降

同时,还有一些经济学家也同样表明分工的一些缺点:

  • 导致人只关注整个事情中的一小块,缺乏全局视角,导致视野受限,没有完全领会工作的意义和目标,从而导致各种返工
  • 对于组织而言,分工也会导致出现大量的沟通协同成本,并出现碎片的生产方式,以及组织的孤岛形式,并不利于提高生产力

当然,奥地利经济学家Ludwig von Mises 并不这么认为,他认为,在分工所得到的好处面前,这些副作用不算什么。并且,他认为在资本主义的制度下,完全是可以平衡分工的各种优点和各种缺点,从而可以达到提高生产力和提高人员素质的双赢解的。

比如说,分工中的各种沟通问题是可以通过一个标准协议来解的,造灯泡的,造开关的,造灯座的完全不知道对方的存在,他们只所以可以让做出来的东西拼在一起,完全是通过了一种标准协议完成的。这也是为什么这个世界上有各种各样的标准化的组织

还有很多经济学家对分工都有自己的见解和想法。不过基本上就是上面这些Pros和Cons了。下图是一个PPT的两个slids,可以点击看大图(来源)

lecture-5-10-728lecture-5-11-728
全球化下的分工

分工带来问题在全球化的浪潮下变得尤为突出。其委婉地被讲成是比较优势(Comparative Advantage)

比较优势(又叫相对优势)是经济学的概念,解释了为何在拥有相对的机会成本的优势下生产,贸易对双方都有利。当一方(一个人,一间公司,或一国)进行一项生产时所付出的机会成本比另一方低,这一方面拥有了进行这项生产的比较优势。于是,一个国家倘若专门生产自己相对优势较大的产品,并通过国际贸易换取自己不具有相对优势的产品就能获得利益。

于是乎,分工本来想要的是——合适的人干合适的事,但是在比较优势的情况下,商业社会把分工变成了——不是选择合适的人、公司或国家,而是选择成本低的人、公司或国家

经济合作与发展组织OECD最近(2015年6月28日)对全球化这样建议的——

“有效率的政策的本质不是阻止失业而是鼓励就业,如果各个国家都在收获全球化的利益而不是开放贸易的话,那么一些地方就会失去工作机会,当然也伴随着在另一些地方出现新的工作机会,这是全球化进程不可避免的,而我们面对的挑战是怎么能流畅调整我们的流程,能为那些新出现的工作机会找到合适的技能匹配的工人”。

通过上面的说明,我想你可以知道,为什么中国成为了世界劳动力大国,而为什么当初美国科技公司进入中国的时候,首先把测试的工作放到了中国。这就是所谓的全球化分工。同时我们也可以看到,像我们中国这样技术能力的确非常不足的国家,的确是可以通过分工这种形式,让我们这些技能一般的技术人员参与一个复杂的有技术含量的项目当中。这其中就是分工的光明面和阴暗面。

那么,我们想一想,随着中国的人力成本的越来越大,国际化的分工因为商业资本的因素,必然不会选择中国,只会选择人力成本更低的国家,比如印度、越南、甚至人力成本更低的国家。美国雅虎和Adobe不是离开中国了么?再看看中国因为人民币的汇率或是人力成本的上升,我们在早几年关了多少个Made in China的工厂,这就是全球化的分工,商业上来说,他不是找最合适的人,而是找成本最低的人。

所以,你千万不要以为我一提倡全栈了,你QA的工作就保不住了,就算没有全栈,就算是你还在坚持的社会化的分工,也可能让你的QA的工作就保不住了,除非,你能提供更低的价格。(想想这其中的逻辑吧,人家美国人把一些技术工作(比如测试)外包到中国的原因不是因为中国人聪明,想得周全,适合干这个测试这个事,而是因为中国人廉价,所以,当中国不在廉价了,自然就会找更廉价的地方了)

为什么国家要从Made in China转型?不就是因为中国早期拿到的国际化分工就是这些没有技术含量的支持性的分工么?也因此而造就了大量的技能很一般的工人。为了能在全球化分工中能拿到更有质量的工作,我们必然要从劳动密集型转向成知识密集型,必然要从支持性的工作转变为产出性的工作,必然需要单一技能型的技工转变为复合型的人才

分工的温床和天敌

分工的温床主要有两个

  • 一个是成本和效率,资本家或企业主或一个国家为了追求更快成本更底的生产方式,他们必然会进行大规模的分工,伴随着分工,他们也会把一些知识或技术密集型的工作生生地变成劳动密集型的工作。然后层层外包。
  • 一个是组织的大小,当一个组织的人数不断的变大,那么,你只能把工作和任务分得更细。这是被人数逼的,而不是实际需要的。这就是为什么我们可以看到很多大公司里要么人浮于事,要么瞎忙。

分工的天敌主要有一个——那就是技术

每当新技术出现的时候,一些复杂的工序会被一台机器或是一种高超的技术所取代,不管是被技术自动化,还是被技术所简化总之,以前本来需要数十人或是数百人才能干的事,突然之间只需要一个人就可以干完了。生产力得到了巨大的释放。所以,你这就是我们常听的——科技是第一生产力!

说到这里,让我们再来看看雅虎的那条新闻——

在软件开发流程中去掉QA团队会发生什么?更少的代码错误,更快的开发周期。这是雅虎工程师过去一年的实验结果。雅虎的Warp Drive计划将程序开发从批发布转移了持续交付模式,工程师的代码不经过QA团队的人工检查而是直接发布。开发模式的转变导致了处理问题理念的根本性改变,迫使工程师开发自动检查工具去识别原来由人工检查发现的错误。雅虎的技术团队现在全部是工程师,而不再有QA团队容身之处。雅虎的首席架构师 Amotz Maimon说,他们本来预计可能会发生严重问题,结果出乎意料,每个曾经对此抱有怀疑态度的人都说新做法很有效。

所以,当你面对一些难题的时候,比如线上的故障,或是一个复杂的软件生产活动,你是要加更多的流程更多的人呢,还是要用技术解决问题呢?一边是温床,一边是天敌,你想好了吗?

什么样分工才是好的

分工是必然的,因为很简单,你不可能一个人干完所有的事情,所以必需要分工,分工不是问题,而问题则变成了——什么样的分工是理想的,是优雅的,是有效率的?

华君武漫画《科学分工?》 华君武漫画《科学分工?》

对于分工来说,一般来是一种组织和管理形为。就目前来说,现代的公司有两种分工模式,分别是Control 和 Commitment 这两种分工。

  • Control就是控制型的管理,它是一种是基于工作技能的分工,于是员工会被这种分工分配到一个比较窄的技能里去完成一个非常明确的工作
  • 而Commitment则是面向员工的责任心和所承担的目标来分工并完成工作的。相比起前者来说,这样的分工在完成工作时,需要的不仅仅是技能,还需要更多的责任感

这么说吧,

  • 对于基于工作技能的分工,你会看到,这样的公司会把技术人员按编程语言来分,比如:Java、PHP、C/C++,或是分成:Web端、iOS端、Android端、后端、算法、数据。或是分成:开发,测试,运维。
  • 对于基于Commitment的分工,你会看到他们这样分的,软件工程师(不分前后端,不分语言,不分运维,测试),因为这样的公司认为,他招的不是只有特定语言技能的Coder,而是而学多种语言多种技术能保证软件质量以及能对软件维护的软件工程师。这种公司的软件工程师是各种团队都可以去的,而他们的分工更多的是按软件的功能,软件的模块,或是软件的产品线来分工。

基于技能的分工已是过去时,而基于 Commitment 的分工是更有效率的分工的未来。你可以参看McAlister-Kizzier, Donna. 的文献 “Division of Labor.” 。

小结

我说了这么多,不知道你看懂了我想表达什么没有?我不强加我的价值观,只希望你自己问自己几个问题:

1)作为工作的人,在分工中你会怎样选择?是成为一颗棋子,一颗螺丝钉,还是成为一个多面手?

2)作为工作的人,当你选择工作或任务的时候,你是选择做支持性的工作,还是做产出性的工作?你是选择做劳动密集型重复工作,还是做知识密集型的创新性的工作?

3)作为老板,你是想要什么样的员工?听话的只会加班和干重复工作的劳动力,还是有责任心的为企业和产品负责的员工?

4)作为老板,你是想通过分工释放低端员工的生产力,还是通过科技或技术去创造更NB的生产力?

5)作为老板,分工中的问题,你找到比较优的解了吗?比如,对于不同团队间的协议,你找到了吗?

可能,在不同的情况下你会有不同的答案。但是对我来说呢,无论是什么情况,我都只会有一个答案。

转载于:https://www.cnblogs.com/ww-xiaowei/p/10071732.html

这篇关于【转】谈分工的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/270518

相关文章

产品经理与研发经理的分工

最近在翻看《程序员》杂志的时候看到的一篇文章:被《偷走的童话结局-对营销和研发分工的考核》。中间反应的问题感觉和现在的工作息息相关,整理下来供思考。 一、如何进行职责的划分? 产品经理和研发经理是一个研发团队的重要组成部分,大体的分工均会这样:研发经理负责技术核心,按照需求进行开发。产品经理作为研发部门的边界部门,与市场对接并提炼需求,以缓冲外部环境的不确定性对核心技术的直接影响。如此一

Jsp和Servlet分工之求a+b的和

流程: 在WebContent文件下面建立sum文件夹,再在这里面新建form.jsp和result.jsp页面,在 form.jsp: <body> <span style="white-space:pre"> </span>//是项目名加资源路径<form action="/Web/SumServlet" method="post">整数a:<input type="

18.EventLoopGroup分工细化

分工细化一 服务端可以定义两个EventLoopGroup 第一个是boss,第二个是worker的。将accept事件和read,write事件分开处理。 package com.xkj.learn;import io.netty.bootstrap.ServerBootstrap;import io.netty.buffer.ByteBuf;import io.netty.channe

【团队成长】2024-24周周报-第一次组会人员分工48期推文预告

大家好!我们是IndustryOR 团队,致力于分享业界落地的算法技术。欢迎关注微信公众号/知乎/CSDN【运筹匠心】 。 记录人:张哲铭,算法专家,某互联网大厂 【团队成长/个人成长】系列的推文会以 【工作周报】 的方式记录IndustryOR团队及其成员的成长过程,请大家一起见证和参与我们团队从0-1-N的发展过程。 记录人顺序: 张哲铭-向杜兵-高欣甜-黄世鸿-许

【工程师的自我修养】岗位分工

一般小公司的人员架构类似如下图:         一、老板的定位         老板需要汇总客户需求,并以此确定招聘什么样的员工。         大多数时间用在公司战略方向、客户对接、招人、分拆任务给多个部门主管。         会管理的老板是要放权给部门主管、不越级管理基层员工的,因为这样会导致基层员工弄不清两位领导安排事情的优先级、不知该汇报给谁。         二、主管

【并发编程实战】贯穿并发编程的核心三要素--分工/同步(协作)/互斥

前言   并发编程相关的知识和技术还真是错综复杂,时至今日也还没有一张普遍认可的全景图,也许这正是很多人在并发编程方面难以突破的原因吧。 核心三要素 分工      现实生活中,为了提升工作效率肯定是要进行分工的,那么在程序里其实也是有分工的。分工的好坏决定了程序并发的性能,所以分工很重要又很复杂。      而Java SDK 并发包里的则提供了一系列的方法,例如 Executor

新手小白,在数学建模的过程中应该怎么分工?

大家知道,数学建模竞赛是需要一个团队的三个人在三天或四天的时间内,完成模型建立,编程实现和论文写作的任务,对许多第一次参加建模或者建模经验比较欠缺的团队来说,是时间紧任务重的,那么怎么办呢? 怎么办?!经过了一个暑假的磨练,大家的论文水平,强化算法运用和编程能力已经得到了显著的提高,当然,根据自己团队的实际情况找到适合自己团队的分工模式,同样也是很重要的! 01 每个环节

明确责任分工,错了吗?

目前公司强调安全生产工作,制定了一系列的规章制度,明确规定了代码犯什么错接受什么样的惩罚,并且要求代码上线前必要有复核人员进行复核,复核人员承担一半责任。       看上去,很美。       接下来的事实证明,一系列的制度并没有起到明显的效果,生产事故还是同等频率出现,难道明确责任分工,错了吗?       如果每个人都有高度的责任心,那么,有没有制度约束都是无所

数学建模团队分工建议

文章目录 引言数学建模概述数学建模团队的组成与角色定位一、团队组成与角色定位1.1 团队成员1.2 角色定位 二、团队协作方式 分工方案分工原则分工策略 按照任务流程分工数据收集与处理分工模型建立与优化分工结果分析与报告撰写分工用代码来表示这个过程 总结模块目录模块一:确定项目目标模块二:团队成员角色分配模块三:任务分配与协调模块四:沟通与协作模块五:进度管理与监控模块六:结果评估与改进

design verification的工作内容和分工。

design & verification 设计团队:设计说明,功能划分,架构。 根据设计说明,每个人做那一块。 验证团队:验证计划。 根据验证计划,搭建验证平台。 验证平台比设计代码要多很多。 一般验证的bug比设计的bug还要多。 设计工程师会先设计一个简单的行为级模型, 然后再去做RTL的coding。 行为级模型可以提供给验证团队,去