2016年4月23日下午,华为开发者社区携手51CTO在魔都上海启动了“华为开发者汇”的***场沙龙。本次活动共邀请了华为公司、星网信通、优酷土豆的五位讲师做了分享。其中,来自华为iSource 内源平台架构师庄表伟给大家带来的演讲主题是《研发大趋势》。庄老师的演讲内容比较亲民,可能是考虑到“内源”这个词对大家有些陌生,他先从开源软件的发展开始讲起,慢慢引到内源。***为大家抽丝剥茧,梳理社会化软件工程和互联网研发模式。由于其演讲风格鲜明,还没到Q&A环节就被迫不及待的听众提问了。
现场实录如下:
庄表伟:大家下午好。今天这个主题,我先开始讲我的主题之前,讲一讲我前面听胡智勇上一场的感受,我也是***次听他讲我听完以后感觉非常的好。而且怎么说呢,可能对你们来说也是不可思议的一件事情,听到了在华为内部这样非常归、非自然、不可想象的一种世界,居然被他给发生了,一个自底向上的项目。其实自下而上的项目,有一种非常大的风险,小的时候不要紧,领导看不见,一旦它长大了,大到某种程度,领导一看,哎哟这不对,说不定就被干掉了。所以长大的过程中,是充满了风险的,说不定到某一级领导那儿,被领导一看这个不是我们的方向,不是我们的主航道,就被干掉了。但是,自顶向下的做法,另一个风险是不接地气。从上往下的时候,领导当然相信他肯定是对的,但是他做着做着才会发现下面的人根本不这么想,这是另外一种风险,到***就会变得,看上去他还在做,但其实会很惨淡,这是两种,自顶向下和自底向上的两种不同的风险。
我简单介绍一下我自己个人的背景。我是2013年11月份加入华为。那么我在加入华为之前,我主要是在开源社区有过一些参与和工作。所以的话,华为自己内部想要做内源平台了,而且是想要正式的做内源平台,想要自上往下推的时候,就把我挖到了华为来,然后我进华为的时候,其实我内心非常的忐忑。我在社区里所有的朋友,都会很震惊,说你怎么会去华为?就不知道我要去干什么,也不知道我在里面待多久,说不定半年,说不定一年就出来了。然后我到现在待了大概有两年半的样子。做的事情,正好是胡智勇的对立面,我们也在做一个内源平台,而他是从下往上在做,一个草根的平台,而我们在做的是一个从上往下推的官方的平台。因此,做官方平台和做草根平台***的一个区别是,我要花很大一部分的工作,去做理论布道,就是说假设在座的各位,每一个手下都管三百人到五百人,甚至每个人手下都管两千人到五千人,然后我要来告诉你,我说我们做的这个东西很有价值,我要跟你谈的肯定不是说你的工程师一定会喜欢,不是的。我要跟你谈的是,这个东西有价值,它的价值分两部分:***,这是全世界的大趋势,世界500强的公司有95%的公司已经在这个趋势上了,我就是在做这样的事情。还有这个趋势,从理论上来说,它会分解成多少个部分,每一个部分是怎么怎么样的。
当然,如果我要想去说服别人,***境界就是我一定得先说服我自己。如果我说服别人的那些理由,连我自己都无法说服的话,那么我肯定就是在骗人。所以我今天在说的这些,我认为有价值的东西,是我真的这么认为的,而不仅仅是为了去说服领导。
其实还有一个状况或者说一个现象,是我加入华为以后才发现的。在我之前工作过的七八家不同的公司,我大概97年开始工作,陆陆续续换了很多家公司,我在之前的七八家公司当中,我从来没有发现过有一家公司像华为那样,如此重视自己的研发效率,而且孜孜不倦的从全世界各种可能的渠道,去学习别人***进的研发的工具、工程、方法等等,不断的学。前面胡智勇前面的PPT里面讲到的,华为已经学了很多了,比如说CMM,比如说IPD流程,比如说敏捷,比如说开源都在学。那么在这样的一个过程中,我首先这一页要讲的就是这么多不同的潮流,新的思潮有什么特点?特点就在于把人当成人,把研发人员当成不仅仅是普通的劳动者,而是把他当成是一个知识工作者。就是当这个人坐在那里不动的时候,如果他是一个体力劳动者,你肯定可以相信他在偷懒,但如果他是一个脑力劳动者,他的大脑可能正在做剧烈的、激烈的精神运动,他正在思考一些非常重要的问题,这个时候你不能够认为他在偷懒,虽然他一动不动,他也没有在敲键盘,他也没有看什么东西,他甚至两眼无神的,就这样,他在思考。这个时候,他在产出,如果对于领导来说,说,我如果觉得你没在动,如果你的机器没开,如果你今天晚上没有加班到12点,我就认为你没有努力工作,如果领导是这样心态的话,那么他肯定管不好自己的研发人员。第二个,研发人员的特点是,他们是一群社会人,虽然看上去每个人坐在自己的电脑前面,写代码就可以把事情做完,但事实上研发人员已经网络化了。我们比较讽刺的说法是,我们现在是(07:02英语)什么呢,代码拷贝回中国来,然后我们就完成了自己的工作。但其实这恰恰是开发人员社交化的一部分。当我们在社区里面不断的学习,不断成长的时候,研发人员是一个社会人,我不能够简简单单孤立的去看他的工作量和工作贡献,更应该看到他在研发的网络中,他有没有成长?他有没有在不断的学习。还有一部分,是一些我们,也是说我自己的分析和发现,也是我希望说服大家理解的一个趋势。就是,最开始的时候,人类发明了工具,然后最开始这些工具也很简单,只是帮助我做某些事情。但是事实上,人类的行为模式,会受限于工具和流程,比如说当我和你的交流只能 通过写信和邮寄的时候,那么我会选择跟你写一封比较长的信,而且我们的交往会比较有深度,但是如果是现在,我以非常方便的方式,给你发短信的时候,那么就更简单,我可以给你写很短的一段话。现在有了微信,有了更加方便的工具,我直接跟你发表情包了,我连信都不用写。这其实就是一种工具给人和文化带来的转变。原来的工具,让我们用那种方式来交流,而现在的工具,会诱导我们用新的方式来交流,甚至是全新的方式会形成全新的文化和全新的工作的模式。这是在这样的一个过程中,这个世界在变,这个研发也在变。
然后在这个过程中,虽然华为非常的愿意请外部的学术派的专家来教导我们,说全球的研发趋势是怎么样,但是后来我们发现绝大多数的理论探索,往往落后于实践的探索。我这里是比较客气的说,互相促进,但大多数时候的理论探索都是落后于实践的,大不了就是能够对实践做正确的总结。基本上这是一个概要的介绍。
下面就是我想要跟大家介绍的六种,我能够看的到的研发的模式。我们认为研发模式分三大类:***类叫做企业之外的实践,比如说开源,比如说社会化软件工程,比如说游戏与软件工程。这些东西,我等会儿会展开说,这些都是原来在企业之外的一些实践,能不能够用于企业。第二类,内在改进的,就是说我们原来也在这样管项目,现在我们也这样管项目,但是我们只是在不断的改进我们本身的一些东西,所以出现了敏捷、精益或者是开放平台,或者是DevOps这样一些潮流。第三类是属于创新的探索其实就是用一种说法,叫做乱拳打死老师傅。互联网企业小、弱,所以他们敢乱来,说不定他们就长大了。长大了以后开始来总结说,互联网的很多模式,看上去很漂亮,或者说很了不起,但是他最开始只是因为他没有别的可供参照的东西,所以他乱来了。
现在先讲开源,就是为什么华为会做内源?其实最开始的来源是这样的。就是说,我今天简单介绍一下开源的历史。在开源出现之前的时候,处于学术和教学的目的,其实那个时候发明了大型机,发明了中型机,大多数人都买不起计算机的时候,计算机和计算机代码,通常只存在于各大院校和研究机构里面。那么他们这些研究人员互相之间交流代码,就像交流学术论文一样,这是一件非常自然的事情。但是到了95、96、97年的时候,个人电脑出现了。个人电脑出现最常见的一个现象,就是我跟你是朋友,然后我就把我的磁带拷贝给你一份,因为很容易,就复制一份给你,然后我花一份钱,你就不用花钱了,接下来你拿到免费的,你就更高兴把这个东西放出去。然后像比尔盖茨这样的,本身是靠卖拷贝赚钱的开发者,他就会觉得你们把我的钱给偷了,所以他就发了这样的一份邮件,把那些免费复制软件的家伙称之为窃贼。其实盗版这件事情,也不是中国人发明的,虽然我们现在比较擅长这个。最早其实是美国人发明的,他们其实也是为了能够免费的用上软件。那么,这件事情在美国顺理成章的被发扬光大,形成了正式的软件行业。微软能长这么大,如果在美国非常非常的保护盗版的话,而不是保护正版的话,那么微软不可能长大,甚至整个软件行业都不可能兴起。但是软件行业兴起了以后,黑客们愤怒了。像Richard Stallman这样的老牌黑客们,他们认为人类免费的使用软件是天然的权利。自由的修改和传播软件,是天然的权利,而闭源的软件公司剥夺了这种权利,是一种罪恶,是一种邪恶的。所以他去做了(14:00英语),他发表了不是copyright,而是coyleft宣言。所以他开始来推广这个GNU这样一种理念。到1990年的时候,linus开始开发linux操作系统了,整个的开源潮流是由此出来的。
然后在这样的一个过程中,开源这件事情本身还不值得大书特书。真正最值得夸耀的是,他们乱来的做法,就像linux这样的一个人,他是一个大学生,他自己就把代码放到了互联网上,然后你们随便来,你们随便写,随便改,随便给我提交代码,然后他就每个礼拜发布一个新的版本,慢慢的、慢慢的,在没有严格的质量标准,没有强有力的机构协调管理的情况下,linux居然稳定可靠的发展起来了,而且干掉了很多很多的商业公司开发的UNIX,甚至把很多公司给挤的倒闭掉了。这个时候,企业开始慌了,说我能够战胜那些跟我同样的竞争对手,因为大家都卖软件,现在突然出来一个家伙说我不要钱,我无法竞争。而且他们居然就真的把东西做出来了,不但是不要钱,东西做的还比我好,所以企业开始慌了。企业慌了,但是另一方面,像Eric Steven Raymond这样的人,他们也在思考,为什么这样的一种开源开发模式,得以成立?这些人,蜂拥而来一起做开源的开发,动力在哪里,成就感是什么?为什么他们能够把软件开发出来,背后的理论依据是什么?他在做了一个总结,有一本书非常好,非常值得推荐阅读,叫做《大教堂与集市》。这个书,其实我在公司里面,国内的所有研究所,我跑了一圈,在每一个地方去做内部宣讲,就去宣讲这本书,然后有很多领导听完了我的演讲以后,大笔一挥,给每一个部门主管每人买一本,我还是卖出去很多本,当然我自己没有回扣。
然后对于这样的一个开源的发展历程来说,企业产生了一系列的反映。最开始的时候是不屑一顾,他们一帮人在那里瞎胡闹,然后开始震惊,因为真的东西给做出来了,做的还不错,然后开始担忧说,他现在这些开源软件是没有做到我这个领域,什么时候有人做到我这个领域的开源软件,我怎么活?然后开始分析,说开源软件到底怎么回事儿?所以微软是有原罪的,因为他曾经干过很多诋毁开源软件的事情,他曾经有一系列的内部文件,对于开源软件做了各种各样的批评。当然也被刚才写《大教堂与集市》那位大哥严厉的、辛辣的批评。企业再近一步,稍微冷静下来以后,他们开始反思了,开源到底有什么用?开源对我们能不能有用?开源能不能成为企业内的一种模式?是不是有可能变成一种,甚至是帮助企业赚钱的方法?因此很多企业开始想通了,他们不但不在诋毁,他们甚至开始引进利用,甚至拥抱开源。这是企业对于开源的态度。因此像华为这样的公司,也开始来思考,如果把开源这样的模式引进到企业里来,是不是有可能在公司里开发软件,也能够变得更加省钱省力,甚至在外面也找到免费的测试和开发人员?甚至有没有可能,我们的企业,也把一部分自己的代码开出去,甚至我们能不能够跟上或者说用到开源领域的各种各样的创新来帮助我们等等?这是企业开始思考的问题,也是我2013年进公司的时候,大多数人都处在这样的一个层面,就是处在分析、引进、拥抱、利用这样的一个区域里面,不同的人想法还有不一样,也有各种担忧,也有各种怀疑等等。这是讲***部分。
第二部分是另外一种思潮。叫做社会化软件工程。社会化软件工程,其实这个相当于是背景介绍,如果有兴趣拍照就拍照,没兴趣我就翻下一页了。OK了。
嘉宾:结束的时候,能不能把PDF版的给大家发一份?
庄表伟:这个抱歉,这个可以解释一下,首先这一份稳当并不代表华为公司的态度,这只是我的一部内部演讲稿。可以说是代表我的态度,但并不代表华为公司的态度,我是拿这个去说服各级领导用的,如果领导们觉得很有道理,他们说不定会在自己的部门内部来推进内源的建设,但是也完全有可能,有些部门的领导并不认同这一点。所以如果说我现在在这里演讲,有录像,没问题,大家看到是我在说,这些观点都是我的,但是如果就拿这个胶片贴出去了,说这是华为的某一次宣讲,可能会带来不同的意见和歧异,所以说抱歉。
然后我们讲一下社会化软件工程背后的理论逻辑,就是说最开始人与人之间的交往,在有互联网之后是通过邮件完成的这些行为,但是邮件的行为,他是全文本的,因此我发了一封邮件给你,这个邮件到底代表着什么含义?除非是人类肉眼来阅读,否则我不知道。但是有了BBS以后,人与人之间的行为被分化了。就是我同样是跟你交流,我发贴和回贴是不同的行为,我顶和踩是不同的行为,看的人的数量等等这些,同样的人与人之间在交流,但是有更多的数据,特别是值得分析的数据出来了。我可以从这些数据当中,分析出一些东西来。比如说,可以分析出这个人,在社区里是不是最受关注的人?这个人的贴子是不是***的?最近、最热门的十大热贴是哪十个?这些数据可以出来。然后,再接下来到了SNS的社交化网络出来以后,他们其实比BBS更近一步的是什么呢?他把人与人之间交互的行为,更近一步的分化出来了。比如说,关注、拉黑、专发,比如说Facebook里面的poke或者like,这些不同的行为,或者说我们现在看新浪微博,你同样是发内容,你那个上面是不同的按纽,你发文字是一个按纽,发图片是第二个按纽,发音乐食品是第三、第四个按纽,为什么要这样分出来?这样我可以有更多的数据来统计,而且我们还特别约定,如果你想把你的某一段文字明显标注出来,你加#号,这些#号是什么?是方便大数据的时候,做分词用的,我直接做热点聚合的时候,我就直接拿这个来算了。那么有了这些东西,我可以得到更加有价值的数据,等会儿那边优酷、土豆的老师,会跟我们讲大数据分析,我这里就抛砖引玉了。为什么?因为这些数据本身会帮助我们决策,而另一方面这些数据有可能能够促进别人的行为。比如说,我知道有多少个人关注你,现在是一千个人,那么你是一个无名之辈,但是如果你有一千万人,那你就是新浪上的能够呼风唤雨的大V。那么一千人和一千万人,是一个明明白白摆在那里的数字,这个数据有可能值得你追求,或者说你发了一条微博,这条微博被转发了一千次、一万次还是十万次,这个转发的量也代表了你这个微博受关注和传播的量。所以现在有出现了新的职业,在微博上面专门做写手,大家怎么看呢?他的微博通常会被转发多少次,那么这个人就广告费,他也发一条微博的广告费能够收多少,如果没有这样的数据,他就不可能形成自己的微博写手或者是段子手这样的职业,有了这些数据,才会有这样的职业,也有了这样的数据,我们才能够促使一些人去追求这样的转发量。反过来会激励人的行为。
与此同时,社交化的平台在进入软件开发的领域,最常见的两个例子,一个是github,一个是StackOverFlow,他其实把开发人员的各种行为给量化了。其实反过来也激励更多的人,泡在这样的平台上面,去提升自己的声望,提升自己在社区的影响力,提升自己在github上面的排名。前段时间,我刚刚看到好几个github的排名,什么什么排行榜,这些排行榜事实上或者公司或者猎头,就会直接按照这个排行榜挖人,而且挖到的人通常会不错,因为他在github上面本身就有声望,有那些明显的贡献度。那么,我们如果在企业内也以同样的方式,来计算一个人,你到底每天提交多少行代码,每天解决了多少个bug,每天干了哪些事情,这些数据全部都能量化的,那么我也能够更加准确的判断一个开发人员的行为。甚至,当我们去把一个开发人员的行为全部的展示出来的时候,我们能够激励他有更多的行为。但是说到激励的话,更加值得一谈的是叫做游戏化的方式。当我们去激励一个人的时候,最入门级的手段是砸钱,砸钱肯定是有效的,但是砸钱是不划算的。对于一个老板来说,如果我能够激励你做某事,我有两个选择:***个选择是我给你一千块钱,第二个选择我花一百块钱给你送一张奖状。可能对你来说,你会觉得同样高兴,但是对我来说,我已经省了九百块了。如果我给你的不是一张奖状,而是我开一个表彰大会,然后给你一个荣誉称号,什么什么最牛程序员,就是一个空的名头,不花钱,但是你说不定会更满足,而且这件事情在大公司更加可以被放大化。如果你在一个一百人的公司里面,被称为最牛程序员的话,你没有什么好满足的,但是如果你在一个八万人的公司里面,称为最牛程序员的话,这个满足度简直是,我真的一分钱不花可以把你激励的每天都来加班。这就是游戏化的一部分。但是游戏化要做的有趣,不仅仅是给你一个名头,他要想出各种各样的名头,而且看上去像一个一个,可以值得被去打的怪一样的,你打完一个怪进入下一关,再打完一个怪,再进入下一关我再给你一个什么称号,再给你一个什么勋章,再给你一个什么头衔,这些东西看上去就你在公司内的环境里面打怪升级。
然后这是我曾经待过的另外一家公司,叫盛大。当然盛大的成功案例,现在已经被证明是失败的。这是一个很悲哀的事情。但是这里,大家稍微简单看看吧,就是说盛大曾经是中国***的,也是***的游戏软件公司,所以他的老板非常了不起,他在内部就开始推游戏式管理,在公司里人人打游戏,在公司里的管理,也是以打游戏的方式来管理。这些事情,现在可能跟你们说,你们还是会觉得很新奇,真的有公司这么管,当然***是管出事情来了,除了很多问题。但是他有一些优点,他的优点最核心的一个优点是,他部门与部门之间很容易形成某种协作关系,就是我们打游戏有经验值,那么我个人有经验值,他就说部门与部门之间可以以经验值的方式结算。我只要给你多少点经验值,你就可以派两个人过来帮我干活,所以部门的关系会非常融洽,而大多数企业的话,部门与部门之间都是一种有部门墙的竞争性的关系,这里一个很大的改变,当然他有很大的问题,这里就不展开。但是想要引出的一点就是游戏化从理论上来说肯定是一个非常好的东西,但是真正去实践一个游戏化的公司,其实还是有很多坑的,这些坑盛大曾经踩过。所以如果有其他企业想用,也要非常慎重的去设计一个公司内的游戏体系,才有可能得到好处,而不栽到坑里面去。
这部分,我打算说的更快一些,因为敏捷、精益、看板这些开发实践,可能已经在各个大大小小的场合里面,被说过非常多的次数了。我这里要说的只是说这些都是好东西,这些好东西是值得拿来应用于自己团队实践的,但是更加重要的是,他应该跟前面的那些实践结合起来,就是说一个开源的,一个以社交化的方式执行某种游戏规则的团队,他可能会变得更加的敏捷。这里我们就不多说了,还有一个要点是什么呢?就是说我曾经是在进入华为之前,我是有一个叫Trello软件的重度使用者。我从当中使用的一个经验,就是基于Trello这样一种看板,它可以更加深入分析一个研发团队内部的行为,对研发内部做大数据分析。我可以知道,比如说我举一个最简单的例子,我有一个bug,这个bug最开始停留在等待开发,或者是等待(30:30英语)这样的一个阶段,比如说开发人员花了两个小时,然后他又进入了下一个阶段叫做等待测试。然后测试人员开始说,我开始测试了,进入正在测试状态,突然测试人员发觉有问题,他在测了一个半小时,发现有问题,于是他又回到了等待开发的状态。因为开发人员的开发不过关,他没有真正的修复bug,他工作的卡片回去了。回去这样的一件事情,在传统的管理模式当中,很难被精确的量化,就比如说,这个开发人员他修复bug这件事情,我们只知道他花了多少时间,稍微粗略一点的话,花了一天两天修复了一个bug,但是如果我们去观察它的细节,就会发现他被测试人员打回了三次。证明什么?证明这个开发人员改bug改的非常不认真,但是他如果一遍就过,同样他也花了三个小时去修复这个bug,然后一遍就过了,和他被打回来三次,同样花了三个小时,说不定前者是证明这个bug确实很难,所以他花了三个小时修掉了,而后者证明这个程序员开发非常不认真,所以他被打回来三次。通过这样的一种大数据分析,来分析一个开发团队的行为细节,我们有可能发现更多的现象和更多的内部的原因。
如果再展开说,基于一个Trello,我们可以做很多的数据分析,可以有一些估算模型、价值点模型,这些都不展开说。但是如果详细展开说的话,其实背后是一套更加科学的方式来管理项目的一套思维。然后,这些东西,开放平台、云计算和DevOps,为什么会影响到我们的研发管理?最重要的一点是,所有的这些技术支撑,都是用来降低我们的研发成本的。原本,我们要吭哧吭哧的部署环境,吭哧吭哧的写代码,然后提交等等,做了这些事情以后,我们的一个版本才能够发布出去。或者说,我们要在申请打报告然后等待流程审批,才能新买到两台服务器,或者十台服务器部署在那里,在这样的一种情况下面我们的研发流程往往是重型的。因为我们快速变动的话,会导致我们的成本有太多的浪费。但是当我们现在有了云计算平台,有了DevOps以后,我们可以快速的部署,快速的发布,我们不怕浪费。原来我们可能一个月发布一个版本,现在我们一天可以发布十到二十个版本。那么,在这种情况下,如果我们的一天发布十个版本的话,那么我们的管理模式,一定不会像一个月发布一个版本那样来管理。管理的思路和理念完全变了。
***讲一个,我对互联网研发模式的一些思考。最核心的一个特点其实是快。在快了之后,它的开发者质量肯定是下降的,然后下降了以后,他说,我不要慢下来,不是说因为我的质量下降了,所以我要把开发者速度降下来,把质量提升上去,不是。他想一些别的办法来弥补自己犯下的错误,所以他说,我快速试错,然后快速调整,然后以更快的速度继续发布。原来我每天发布一个版本,所以我经常有bug在线上,所以我现在要多测试,严格测试,我***变成一个月一个版本发布,这样我就慢了,慢了就争不过别人了。所以互联网公司是什么呢?我在保证快的情况下,解决质量下降的问题。所以我如果质量下滑了怎么办呢?我做自动化测试,做灰度发布,这两个是技术手段,还有什么呢?我建立粉丝文化。粉丝文化派什么用处呢?就是让更多的用户能够宽容我的错误。还有我们要有一个专门的危机攻关团队,这个团队派什么用处呢?就是一旦这个事情连我的粉丝都不能忍的时候,我要做危机攻关。那我们现在按照传统的思维就想,你有钱来搞这些活,为什么不能够把你的质量提升上去呢?不,他们就不这样干,他们宁可去建立粉丝文化,搞危机攻关,他们也不要把自己的开发速度降下来。这是一个非常不同的选择。这个选择其实带给互联网一种非常不同的活力,这些活力才会让很多传统的企业觉得头晕眼花,看不懂说他们在干什么,他们怎么又变了,就是因为这样互联网才出来,才会发展的这么快。然后其实,如果我们去仔细观察很多的互联网公司,他们内部是非常混乱的。乱的呢,不像我们华为公司很多时候内部是管理井井有条的。我这样说没错,金字塔肯定是井井有条的。但是很多互联网公司,其实他们是非常的强调这种扁平化的管理,强调叫做目标导向、洗脑文化,给你讲我们是要改变中国怎么样,我们的理想是什么。为什么呢?因为其实在那样的混乱当中,大多数人心情是很不愉快的,是很想走的,所以才会有教主们这样的人出来说,忍得一时之气也是要为了改变中国什么什么的,对吧。所以其实他们也在做类似这样的一些事情,然后等到我进了华为以后,我非常惊讶,就是华为几乎不洗脑,都很直白,就跟你说,我们的年薪是怎么算的,如果你签署了奋斗者协议以后,工资会涨多少,就跟你直接谈钱,不跟你谈那种特别高远的东西,其实我觉得如果一个不是特别容易被洗脑的人来说,应该反而会比较容易适应华为的文化。
当然还有一部分,也是互联网公司的配套的。因为它确实乱,因为它确实快了以后容易犯错,如果他内部再不宽容失败的话,那这个活就没法干了。所以他一定强调某种宽容失败的文化,就是说我认你这个人,哪怕你错一次两次不要紧,我相信你接下来还能成,必须要培养这样的一种文化。甚至是什么呢?就是说有些事情,先不要追究责任,先保持某种灰度,不要做到黑白分明的讲谁对谁错,然后这个事情在快速发展中问题都会被解决,这个事情就过去了。这其实是互联网发展的一些很有趣的东西。
当然就是说,我其实在这里再说两句。好吧,我后面还有好多页,我想起来还有好多页。这个其实又开了新篇章,这个新篇章其实是讲的理论分析框架,这个框架专门用来公司里面大老板级别的人洗脑用的。我们在谈一个铁三角的时候,通常说项目管理有铁三角,意思是什么?就是你不能够同时追求,比如说成本、时间和项目范围,同时都达到***,不能同时***,必然要损失一点。但是我就想给领导传播一个什么样的概念呢?就是说A团队和B团队,他们可能都有各自的铁三角,但是A团队的强大之处就是每一个三角,都比另外一个团队强。也就是说,我们如果客观的比较的话,是有些团队,在三个方面都同时比其他团队更强的,那么我就问领导了,你想不想追求这样的团队?想啊。怎么才能做到呢?我们来分解这个东西。如果我们要追求更高的利润,那么我们一定需要的是通过创新来开源,然后通过重用降低成本,开源节流。如果我们要追求更好的可控制的东西,那么我们需要单个工作,每个人的单项工作都能够加快速度。然后所有的工作之间互相的协调,能够更好、更有效率,叫做速度与控制力。如果我们要达到更好的用户需求满意度,那么我们需要做到的一个是更多的特性,以及每个特性更好的质量。这样才能够更好的满足用户,这是三个三角形。
然后,我们说我们要达到这三个三角形,其实分别需要的是什么呢?需要的是我们要有更好的研发活力,这个企业、这个团队才能有更多的创新。我们还要有更好的研发效率,我们的单个环节和所有环节的配合才能够更好,我们也需要有更强的研发能力,这样的话,我们才能够开发出更好的特性以及每一个特性的质量都很好。但是,这背后还有一个大循环,就是说,当我的团队有更强活力的时候,我的人员才能够更多的主动学习,才能够不断的增长自己的能力。在能力增长的前提下,才能够达到更强的效率,否则的话,这些人能力上不去,只能靠加班。那么,如果说效率不能够得以提高的话,所有的人都没有业余时间,所有的人只能埋头加班,他们根本没有时间去学习新的技术,因此活力也上不去。所以这是一个大循环。这个大循环整个能够转起来了,你的团队就能够不断的得以进步。然后接下来,就进入我的最重要要安利的一个话题,就是为什么我们企业要学习开源社区。因为在我们企业内部的实践当中,通常我们会比较注重开发效率以及开发质量以及开发人员能力的北方。但是对于研发活力这一块,我们做的特别少,所以整个团队的研发活力上不去,我们整个人员的能力也上不去,所以我们才需要外部去借鉴开源社区很多的实践,来提升我们自己。
这块不说了,就说到这儿。总结,***我们要得到的是怎么样一个金字塔呢?下一代研发我们要考虑的是,四块大的积木:分别是社交化,大数据、云计算,开放平台,这是四块技术型的积木。在四块技术型的积木上,我们能够努力的去提升研发效力、研发能力和研发活力,而这三部分的能力、活力和效率,同时面向的是个人和组织的成长,***在这样的一种不断成长的个人和组织的基础之上,我们才能够不断的开发出更好、更强的产品来,这就是我们对于研发大趋势的一个理解。
好,谢谢大家。
旅强:有人要问问题的吗?
嘉宾:庄老师您好。我有一个问题,现在咱们开源社区,比如说我们一些初创公司,在选择框架的时候,去选这些开源,但是开源可能会有一些我们所未知的问题在里面,这种情况下,你是怎么看待的?就是说我们不可能去深究它很多东西。
庄表伟:我最近在看一本书,这本书,在我包里,等会儿拿给你看。叫做《数据化决策》。这本书背后强调的理念,就是所有的一切都是可以通过量化的方式来决策的。比如说你说到这个选择问题,归根到底是一个成本问题,什么成本呢?你选择一个免费开源的,你节约了成本,但是你遇到了坑,你又浪费了成本,然后你花时间去修复了,你的人员能力得以成长,你又赚到了。无非就是说,你有亏有赚,***总的下来,你能不能赚?这是一个大的估算。但是在大的估算中再有细节,比如说你要选择哪一类开源,你是选择稳定版本的?非常活跃社区的?还是没几个人用的?这个风险程度又不一样。不同的风险带给你的收益和带你的可能的潜在的损失是不同的,这只能够具体的案例、具体的分析。这个你知道github,比如说他的平均每天有多少人提交?他的平均开发人数有多少人参与?这些都是供你量化决策的时候重要参考依据,但是从一个大的方向来说,现在的企业,完全不考虑开源已经不可能了,你只是在纠结到底要考虑哪一种开源,哪一个版本的开源,或者是哪一家公司在背后支撑的开源,你无非是选择这个。但是你完全不考虑是不可能的。
嘉宾:还有一个问题,有些公司,比如说采用开源,他们可能想从这个获得分支版本,我们公司直接在那个基础上进行二次开发,之后在我们公司内部会一直往下走。但是如果这种情况下,如果我们再去回报这个社区的情况,是怎么看待的?
庄表伟:其实企业把自己的二次开发的代码回馈社区,是为了自己好。为什么呢?因为假设说这个社区的版本,又往前前进了两个版本,然后你发现你跟不上了,然后你就亏了。因为你原来的那些二次开发改动的代码,又可能得在***的版本上重新再二次开发一编,这是最不划算的。但是如果说你二次开发的代码已经并入到主线了,那你现成的跟着升级就行了。所以我一直说一个企业回馈社区,不仅仅是为了回馈,更重要的是为了自己将来跟版本会跟的容易一些,是这个原因。
嘉宾:***一个问题,刚才庄老师也提到了一个,他之前常用的一个看板管理的软件,就是Trello。我想听一下庄老师对看板管理,在互联网公司的应用,是怎样一个想法?
庄表伟:我在进华为之前,就是在一家互联网公司,在整个团队里面用Trello。前面我这个胶片,因为不太好再翻了,就是我所有的那些数据统计分析,自己内部给自己的效率的统计什么,都是用那个来做的。
嘉宾:庄老师,我想问一下关于软件开发方面的一些疑惑。我那天项目中,也用了Trello的方法管理。但是发现客观上,我们执行下来发现这个软件的质量是有一定下降的。我们用了几次,试了都觉得是这个软件问题。那这个是不是说用这种方法去做,本身就是会客观上导致质量下降?因为别的速度有点快,还是说不对?或者说这种方法更适合追求速度的,质量方面用一些其他手段去弥补的。
庄表伟:能不能再翻到刚才谈敏捷的部分。精益看板你了解吧?就是精益和敏捷的***的区别是,它多了一个度量的阶段,在每一次度量自己这一次迭代的质量,到底我迭代的好不好。这个质量包括,进度和代码的质量,或者说产品总的质量,你得去度量这个东西。然后到下一个迭代的时候,你其实就是说,你可以往(49:20英语)在做自动化测试的时候,都写几个单元测试用力,然后看下一次迭代的质量上去了没。在这种情况下,再做一次迭代,看看在这样的自动化测试的水平不断提升,包括人员能力不断提升的基础之上,你的这个迭代的(49:44英语),能不能再放一一些(49:45英语)多放几个进去。首先要保证的不是知识对。首先要保证的是你的效果在不在进步,就是你是不是每一个阶段都进步了一点点?但是你如果没有一个自己内部评测数据的话,你根本不知道自己进步不进步,你根本不知道我自己到底好不好只是凭着感觉,好像质量下降了。所以我才说,精益目标是做更好的敏捷,为什么是更好的敏捷?因为他在不断的评估自己。我到底哪里好了,哪里又不对了,然后其实说到底,我最担心的是,做敏捷做成像学别人做体操一样的,比如说你的动作是这样,我也要做成这样,是九十度,不是这样的度数,不对,这不对。每一个团队,一定有自己的合适的度数,但是哪一个度数才最合适呢?靠测量。自己去评估自己团队的速度、效率、质量,这些数据,然后不断的调整,就像调参数一样的,调到一个合适的了,然后这就对了,在此之前肯定是不够好的。
嘉宾:所以事后评估是非常重要的。
庄表伟:非常重要。
旅强:因为时间的关系,如果还有问题,我们后续再跟庄老师沟通。我们谢谢庄老师。