转:我心目中的理想团队

评注:比较接地气的一种团队建成方式

转自:

http://mp.weixin.qq.com/s?__biz=MzAxNzM4OTE4Mg==&mid=210320484&idx=1&sn=eab0401c2a20b7d2fd117733807e1eed#rd

我心目中的理想团队

2015-07-25 玉伯 探索时间

昨天 @左耳朵耗子 发了篇文章:「开发团队的效率」(http://coolshell.cn/articles/11656.html),对文中绝大部分观点都很认可,但关于团队小而精这点上,我觉得有失偏颇,于是回复了一条:

非常理想化的想法,但不接地气。小而精的全栈式团队,就像一个曲线的波峰,看似美好,但不稳定。更喜欢朴实的工程团队,能安然处于谷底,每个人可能都不太牛,但通过各种土办法,能汇聚起来,所向无敌。

由于微博的字数限制,读者容易断章取义。看大家的疯狂回复,只能淡淡一笑了。不过耗子既然约战,我就详细写下,侧重于描述我心目中的理想团队。

耗子描绘的小而精,我的感觉是这样的:


每个小红点都是一个不错的全栈式人才。全栈的含义,一是多语言的快速掌握能力,消除技术锁,二是跨模块的业务深入能力,消除模块锁。这非常赞,是很多技术团队梦寐以求的追求。

我关注的是,怎么组建出这样一支团队?耗子全文中并没有给出答案,耗子描述了美好的终局,但并没给出实际可行的路径。能猜到的一种做法是,疯狂招聘牛逼的人才,看不上的都不要。对于现有人员,则严要求、高淘汰。这种做法,对于极少部分团队,是可行的。但对绝大部分团队来说,缺乏实际的可操作性,不接地气。

我更倾向于下面这种团队构成:


小红点是大牛,团队里有,但并不多。小黄点是小牛,正在快速成长为大牛。团队里更多是小绿点,技术基础不错,发展潜力好,但当下只熟悉某一门语言,在具体项目里,也只能为某一两个模块负责。我相信这是绝大部分团队的现状。

在这种现状下,我们回到耗子的主题:开发团队的效率。很明显,耗子的倡导是好的,但直接开搞,团队非死即残,只有很侥幸的机会能存活下来。面对现实,说说我的「土」办法。

第一步是承认现状,认清自己所处的环境。耗子所在的阿里云我不清楚,不多说。我待过的淘宝和支付宝两家公司,这么多年,从来没看到小而精的团队能持久存活。同时还有一点非常重要,无论自己多牛,需认清的一个现状是,大家都不是傻瓜,能在阿里一路带兵打将到带领团队的负责人,十个里面有八个都是不错的,否则阿里不可能做这么大。这么一帮不错的技术负责人里,肯定有不少人想过耗子想做的事情,为什么没去做或没做成?希腊的神谕真的不是鸡汤,认识你自己,无论什么时候都非常非常重要。

认清现状,很多问题会清晰和简单化。在不断的碰壁失败后,会发现一些可行的「土」方法更接地气并且更能实现理想中的目标。比如

对于软件开发中的「锁」,耗子的解决方案是:

一个程序员应该能够掌握多个语言,也能够负责多个模块甚至不同的职责。如果一个程序员觉得多学习一门语言,多掌握一个模块是件很困难的事,那么这个程序员本质上是不合格的。

这个解决方案,淘宝曾经的技术负责人三丰,支付宝 CTO 鲁肃等等牛人,都自上而下以及自下而上推行过,但现阶段来看都尚未成功。我现在的主要工作职责之一,就是和鲁肃一起在支付宝推行全栈工程师文化,其实从 2009 年开始就有尝试。我们尝试过让前端学 Java,也尝试过让 Java 工程师学前端。但最后的解法,并不是发现培训不成功,就认定这些工程师本质上是不合格的。即便认定不合格,在当下技术人才稀缺的情况下,你能怎么样呢?耗子给的是要求,并不是解决方案。

分工并不可怕。分工源自社会经济学,分工解决的问题,就是效率提升。无论在传统工业车间,还是在互联网技术公司,分工依旧是提高团队效率最「土」但最有效的方式。分工的背后,是遵循人类社会发展的规律性,是术业有专攻。分工有两个非常关键的点:

1、分工的合理性。耗子说分工越细团队就越没效率,并没有说到点子上。影响团队效率的,是分工的合理性,而不是粗细。究竟怎样的分工是合理的?不同领域、不同团队,在不同阶段下,合理的分法可能都不同。在支付宝,对于高交互类业务,前后端分开,各司其职是很有必要的。对于可规范的平台类业务来说,让 Java 开发懂一点前端,基于前端提供的服务化方案去独立完成产品研发,则是非常不错的方式。分工的合理性离不开实际场景和团队的人员情况,会有一些规律性,需要在时间的长河中不断去探索、沉淀。

2、团队间彼此赋能。就是耗子说的团队间的服务化。这一点非常非常赞同,服务化不是我帮你做事,而是让你能做我的事。不过耗子依旧是只说了方向,而没有说打法,是目标,而不是解决方案。在支付宝,为了能让 Java 开发学会更多前端技能,我们的做法是,成立了前端技术学院,与各技术团队负责人一起,筛选出培养目标,通过一系列培训,以及在实际项目中的以战练兵去赋能。同时,也需要在前端类库与框架层面发力,尽可能让前端的技术门槛降低。一方面是通过培训提升人员的能力,一方面是通过技术架构优化降低技术门槛,当能力提升能匹配上技术门槛的降低时,很可能就可以真正实现团队间的彼此赋能。真实操作过程中,还有大量大量的细节工作需要去攻破,远比耗子喊喊口号复杂很多。

其实这些接地气的解决方案,回过头来想,都很「土」,都是自然而然就能想到的方案。但正因为「土」,反而不怎么被很多有远见的牛人待见。因为很多牛人,总想着通过某些取巧的方式去达成目标,我之前也疯狂想过通过各种更快速的方案,比如搞一套类似 Visual Studio 的可视化拖拽方案去给后端团队赋能,但实际操作下来,这样反而会惯坏后端团队,使得后端团队在前端技能的积累上停留于初级阶段。大道至简,返璞归真,越来越觉得,真正能解决问题的,往往都是最「土」的方案。

耗子说的第二点,接力棒式的软件开发,跟软件开发中的锁本质上是一样的。解法是,一是要找到合理的分工,二是要通过服务化让团队间彼此赋能。

耗子说的第三点是保姆式的软件开发,这一点的解法依旧是合理的分工与服务化赋能。耗子解决方案里提到的招聘、以及人多人少的问题,并不是关键。支付宝最近一年,在逐步把测试团队取消掉,让开发也懂测试。但无论怎么融合,专业化的质量工具团队与质量架构师依旧是有必要的。这需要大家的专业度都提升,开发需要懂得测试,掌握的技能与责任感需要更多,同时测试发展空间也被打开了,不再需要专职的测试去做重复性的人肉测试,而需进一步提供测试自动化工具,需要往深里钻,非常有挑战。

WatchDog 式软件开发,这一块要看领域。耗子所在的领域我不熟悉,不多评价。但解决方案里提到的设计想好了再做,以及残酷无情还债,实在是有点片面,并不具备普适性。大部分商业系统的设计,如果要等设计想好了再做,可能已经错失商业契机,做出来已经黄花菜都凉了。先土土的上去,在行进中开火,在飞机高空飞行时换零件,我更佩服这种能力。如何做到高空中换零件,一开始可能还真需要 WatchDog 系统。最常见的是监控系统,这一块太重要了。

不光是从技术上考虑需要 WatchDog 系统,还有一个非常实际的问题是考虑团队人员的实际情况。大部分团队里都有很多新人,有很多耗子可能看不上的普通工程师。这些新人们每天在产生大量代码,很多代码可能质量真的不高。长期的挑战是如何让大家的技能都提升到耗子期望的水平,但短期的挑战也非常棘手:如何让一帮新人写出来的代码,即便再烂,也有一定的可控性?

去年和 Facebook 的一个资深工程师交流,他说最有挑战的事情之一就是,如何能让一帮刚从大学毕业的 newbie 们,写出来的全栈代码不至于太烂。这背后需要大量工程化的思考与实践,涉及质量控制等很多方面。前端领域的同学,对最近如日中天的 React 技术应该不陌生。React 背后的故事真的非常有意思,React 能在 Facebook 的环境下诞生,一定程度上是被逼无奈。有太多各种背景的新人们需要在 Facebook 环境下去写前端代码,但如何保证这些所谓的 Facebook 牛逼闪闪的全栈工程师写出来的前端代码不会随着时间快速腐败?如何保证各个业务线的前端代码不会臭不可闻?Facebook 有一个专业的 Frontend Infrastructure Team(简称 FIT),这帮人可是想尽了各种办法,最后才发现基于 DOM 是无望的,必须超越 DOM,必须打破 W3C 规范的很多拘束,于是有了大道至简的 React 方案。React 的技术亮点就在于「土」,新人们操作 DOM 老出问题,我就搞一层 Virtual DOM,不让你直接操作真实 DOM。Flux 单向数据流的设计也是一种非常「土」的做法,土得出奇,但现阶段看起来,正因为土,反而把很多很多问题简化了。土到极致,牛气冲天。

最后,回到如何构建一支心目中的理想团队。我的想法依旧是一张图:


很多团队是处于 A1 状态,都期待着往耗子说的 B1 而去。我们真正要解决的问题,是如何带领团队从 A1 波谷,到达耗子描绘的 B1 波峰。除了合理分工、团队间的彼此赋能、以及土到极致的技术突破,还需要重视一个规律性:

波峰是不稳定的,不要尝试让团队永远处于美好的波峰状态。当一个团队的人都成长成为精兵悍将时,往往意味着这个团队前途有限了。站在波峰,很容易藐视群雄,很容易拔剑四顾心茫然。一个良性团队,在短暂攀登上波峰时,应该能有勇气去打破一些东西,有勇气去带着团队下山。下山会很痛,甚至会让效率降低,但不下山,不到达另一个波谷,就永远难以攀登上更高的波峰。前端团队的发展在这一点上有很多故事可讲,耗子若有兴趣,我们可以私聊。

很尊重耗子的理想,也是我的理想。面对现实,我选择我的路,也期待着耗子能把自己的路在美国走通。

玉伯

2015.7.25 杭州三墩

时间: 2024-10-08 01:59:16

转:我心目中的理想团队的相关文章

理想团队模式构建的设想及对软件流程的理解

一    理想团队模式构建的设想: 软件设计是一项需要多人合作完成的工作,一个人是很难或者无法完成一项比较完备的软件设计的.因此,团队是必须的.但是团队是多人的,不可能有一个人的那种高度一致和自由性,因此,怎样构建一个较为理想的团队是提高工作效率的前提和基础. 团队有多种多样的模式,每种模式又有优缺点,但不管什么模式都基本遵循下列原则: 1.一个理想的团队应该有一个一致的集体目标,一个所有成员共同努力的方向. 2.分工明确,每个人都要有自己要去完成的任务,这样才不会茫然. 3.分工明确的同时要加

理想团队模式

理想团队模式构建中各个成员要对团队的目标,角色,产品都要有统一的理解,分工明确,尽量统一使用成熟的技术和做法,设计期间尽量收集多的对团队有利和不利的数据,使用数据帮助团队做出理性的决定,由负责具体执行的角色来制定切合实际的计划和承诺,团队需要有自我管理能力,专注于提高质量,争取在软件生命周期的早期发现问题,在设计时期尽力做到全面而且细致的设计工作. 在开发.运营.维护软件的过程中有很多技术.做法.习惯和思想.软件工程把这些相关的技术和过程统一到一个体系中,叫做软件开发流程,软件开发流程的目的是为

如何做到员工心目中的好领导

我个人觉得做到员工心目中的好领导其实并不难,只需诚心待人.以身作则.言行一致.尊重他人.敢于承担责任等,最重要还是保持一颗平等的心. 您若是员工心目中的好领导,您就是团队的灵魂:团队成员将心甘情愿随您共进退,尽心尽力为团队做贡献. 您若只是员工心目中的领导,您只是团队的老大:团队成员的工作只会"尽力而为",很少会"尽心尽力",因为大家只是打工的. 您若是员工心目中的挫领导,您只是老板任命的:团体成员不认可您,您仅拥有一个头衔而已:团队的工作效率.工作态度.工作积极性

我心目中的北京大学:从薛定格到王恩哥

以下是王恩哥校长的近照(取自<成都商报>): 5月18日,读毕媒体报道"北大校长:不是挣钱多当官大才是成功"一文有感. 老实说,此文不是给王恩哥校长"拍马屁"(我已年老退休),而是说说心里话,对其业绩不得不佩服.王恩哥校长,1957年出生.1987年进入北京大学物理系读硕士研究生.这三十年里面的辛苦(无奈与辛酸),在此不提(原因大家都明白). 2009年,王校长辞去中科院物理所所长的职务,担任北京大学物理学院院长,3年赶超南京大学(我的母校)与中国科技大

敏捷中的自组织团队

敏捷中的自组织团队,其“自组织”一词,可能不是太准确,不太符合关于“组织”一词的定义,因此有时也用“自指导团队”一词.敏捷中的自组织团队,肯定是由外部创建的,而非自发组织在一起的一个团队.它是一个由外部创建,然后给与授权,然后自行决定行动纲领的一个团队.这个团队接受外部给与的任务和约束条件,自行决定如何完成任务.在这个团队中,不存在外部指定的领导者,而是由团队成员自己决定,是“民主”,还是“集权”,由大家说了算.可能在不同的阶段,会有不同的“英雄”站出来,带领大家迎接各种挑战.也许正是没有指定的

【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

原文:教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http://www.xiaohuar.com/,让你体验爬取校花的成就感. Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试. Scrapy吸引人的地方在于它是一个框架,任何人都可

专业人士心目中户外LED“好屏”的八大标准

现如今,LED显示屏行业正在逐渐崛起和壮大,各种各样的显示屏数不胜数,户外LED电子广告屏已经成为户外广告的不二之选,人们对显示屏各个方面的要求也越来越高.什么样的显示屏才是广大客户心目中的“好屏”呢? 第一,高分辨率.一块显示屏拥有较高的分辨率才能使高画质的广告画面有展现的可能. 第二,高亮度,因为户外条件的要求需要较高的亮度,尤其是可调节的亮度. 第三,高灰度,只有拥有较高的灰度才能让显示屏的色彩更均匀,图像更细腻,配合高分辨率,才能使显示屏展现高画质的画面. 第四,高刷新率,显示屏的刷新率

你理想中的测试团队是什么样子的?

有的测试团队会让你工作很开心.工作也很有价值,有的测试团队工作不开心.心也那么累,所以理想的测试团队是什么样子的?下面只是我个人的看法,欢迎大家一起讨论. 首先看看何谓团队,本人的理解是为达成共同的目标而相互协作并利用各自的技能.知识.资源的人.物.事等.基于以上定义中的要素,所谓的完美团队与团队100分是根本不存在的,团队是无限趋于100分,因为团队成员再亲密,也不可能是切肤之触,另外团队成员的思维和出发点不尽一致,即使团队成员就某一项的某一点达成共识,也是短暂的,如果一个团队中的所有成员思维

阅读《构建之法》,谈对理想团队模式构建的设想和对软件流程的理解

一.我们在开发.运营.维护软件的过程中有很多技术.做法.习惯和思想.软件工程把这些相关的技术和过程统一到一个体系中,叫做“软件开发流程”,软件开发流程的目的是为了提高软件开发.运营和维护的效率,以及提升用户满意程度.软件的可靠性和可维护性. 瀑布模型.瀑布模型是最早出现的软件开发模型,在软件工程中占有重要的地位,它提供了开发的基本框架.从瀑布模型开始的各种模型都有一个共同点:重计划,重事先设计.重文档表达.这一类的方法中集大成者要算Rational统一流程(RUP).RUP把软件开发的各个阶段整