莊表偉:內部開源平臺強化公司開發
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英語)多放幾個進去。首先要保證的不是知識對。首先要保證的是你的效果在不在進步,就是你是不是每一個階段都進步了一點點?但是你如果沒有一個自己內部評測數據的話,你根本不知道自己進步不進步,你根本不知道我自己到底好不好只是憑著感覺,好像質量下降了。所以我才說,精益目標是做更好的敏捷,為什么是更好的敏捷?因為他在不斷的評估自己。我到底哪里好了,哪里又不對了,然后其實說到底,我最擔心的是,做敏捷做成像學別人做體操一樣的,比如說你的動作是這樣,我也要做成這樣,是九十度,不是這樣的度數,不對,這不對。每一個團隊,一定有自己的合適的度數,但是哪一個度數才最合適呢?靠測量。自己去評估自己團隊的速度、效率、質量,這些數據,然后不斷的調整,就像調參數一樣的,調到一個合適的了,然后這就對了,在此之前肯定是不夠好的。
嘉賓:所以事后評估是非常重要的。
莊表偉:非常重要。
旅強:因為時間的關系,如果還有問題,我們后續再跟莊老師溝通。我們謝謝莊老師。