虎嗅注:在創業過程中,研發管理是很重要的內容。但是國內創業公司的研發管理卻長期處于一種比較混亂的狀態。國內創業公司的研發管理到底出了什么問題?技術人攻略的Gracia采訪了素有“技術圈交際花兼娛記”稱號的程顯峰。從程顯峰的口中,我們可以了解到國內創業公司在研發管理上的各種怪現象。
程顯峰:@程顯峰-Mars,藍海訊通COO,MongoDB中文社區發起人,曾任積木盒子技術副總,Admaster首席布道師,混跡于安全、廣告、云計算、大數據、互聯網金融等多個技術圈。
文/Gracia
“什么時候采訪我?”在GitCafe北京分部的開幕活動上,顯峰半開玩笑半認真地問我。認識顯峰的時間不算短,總在各種技術大會與小會上頻繁碰面。過去一年多,他的工作狀態算不上“穩定”,這不,剛離開高大上的互聯網金融,投身APM的偉大事業。真要采訪,得先選出一個可行的話題切入角度,他引用《人件》里提到的“高科技幻覺”,從傳統工程的角度談了談對IT研發管理的看法,于是采訪主題順利地定了下來。
這通吐槽顯然憋了很久,不乏“這個行業充滿了騙子與強盜”的激烈言辭。我有點被驚到,常看他以典型的東北式幽默與人調侃,并不知道他原來如此嚴肅。在北五環外的東升科技園,我們從下午兩點半,一直聊到天黑,期間換了3個場地。末了,他嘆到:“為什么好好做技術這么難!”
顯峰無需借此博眼球、搏出位,公開發表這些話給他帶來的潛在風險遠大過收益,觀點犀利自然會贏得一些贊同,也難免招致對號入座的無端恨意。在烏合之眾匯聚成的網絡空間,謾罵而非理性的討論是更為常見的交流方式。雖然在文字上做了些處理,我仍然對其可能帶來的爭議無比擔心。發給他確認,幾乎沒做大的修改,僅回了個:“整體很流暢,但細節上的文字還不夠平滑。”看,真是個對品質要求很高的人。
這些細節暴露了他的始終如一,也讓我更加理解顯峰的選擇,不安定的背后,自有他嚴格的價值堅守。如果有機會,顯峰希望去教小孩寫程序,熱愛學習的人是真誠的,他喜歡和這樣的人在一起。
技術人攻略:你從什么時候起開始對對研發管理感興趣?
我是學工程出身,本科就讀于哈工大航天工程與力學系,研究生是悉尼大學的航天專業,期間受到了嚴格的工程訓練。傳統航空業的研發和制造體系非常完整,拿造飛機舉例,悉尼大學的本科生就完全可以組裝出可供銷售的飛機,因為整個生產過程非常嚴格,任何一個扳手都有編號,有詳細的記錄和流程,不可能搞錯任何東西。
雖然專業選擇了航天,我對編程卻非常熱愛。從小學就開始寫程序,那時候家里沒有電腦,每次上機需要走40分鐘山路。研究生期間,獨立完成了完整的有限元分析軟件,算是我在科學計算領域的一次實踐。
回國之后,我加入的第一家公司Antiy,很重視底層技術,產品做得非常成功,但研發管理做得并不好。我在那期間學了很多軟件研發歷史,但在研發體系建設上,還是留下了許多遺憾。隨后加入做互聯網廣告監測的創業公司AdMaster,當時公司正在籌建,人員來源多種多樣,研發管理問題比較突出。我的職位是專職敏捷教練,配合技術負責人做團隊建設,開始更深入地思考研發管理。
剛進入IT這一行時我很難理解,為何在傳統工程和制造領域很平常的事情,在IT領域卻是需要商量和懸而未決的。可靠性在航天等領域早已解決得很好,為何軟件行業卻一直解決不了產品質量問題。后來看了不少管理的書,發現IT研發管理的許多思想都是從建筑業、制造業借鑒而來,例如快速迭代、精益管理等概念。
結合工作實踐,我逐漸發現了研發管理問題的癥結所在。研發能力是工作的綜合體現,內功水平是關鍵,任督二脈打通了,練什么都很快,至于到底用哪個套路,是很輕松的一件事。舉個例子,大家通常說要做“敏捷轉型”,認為自己是從傳統軟件研發轉型成敏捷,關于二者的爭論也顯得像是涇渭分明的兩派,但實際上不是。難道傳統軟件就不做配置管理嗎?難道敏捷就不做測試嗎?這兩派理論有八成是一樣的,即便在軟件工程教科書里,也同樣有關于質量控制、配置管理、迭代等理論,如果很好地去執行,同樣可以達到不錯的效果。
為什么敏捷轉型失敗的案例很多,因為企業并不具備相應的內功,只想尋求解藥,以為敏捷能有所幫助。實際上如果不打好基礎,結果還是一樣。具備這種內功的人,玩傳統軟件也會很好。航天、制造、金融行業并不過分強調敏捷,當然敏捷里的好東西,他們也能非常快地去借鑒。《精益軟件開發藝術》這本書的作者來自波音公司,他們將其在制造上的經驗應用于研發,對軟件的駕馭能力相當高。
強調時髦的概念,對研發幫助并不大。比如知道了TDD測試驅動開發,對團隊幫助有多大呢?TDD想執行好,要求對測試理論有深入理解,但大部分國內開發團隊不僅不具備很高的測試水平,連測試是什么,如何測都不知道。這種情況下去推廣TDD是沒有意義的。
技術人攻略:根據你的觀察,國內研發管理有哪些常見問題?
我觀察到國內研發管理主要的問題有幾個:第一是過于強調個性,缺乏共同價值觀;第二是內功差,不重視軟件質量;第三是很多從業人員眼界狹窄,拿無知當個性;第四是對技術缺乏敬畏之心;第五是整體氣氛浮躁,擅長炒作概念而非腳踏實地做事。
IT這一行太推崇個性,過于強調創新,強調極客,而對于共同價值的堅守非常少。傳統工程領域里,大家都遵照明確的規范和標準做事。軟件行業的國家標準很落后,大家也都不執行,幾乎每個公司都會自定義一套方法和流程,大家各說各話。個性的東西太多,達成共識的東西太少,導致軟件行業的人很難樹立共同價值觀,以及清晰的研發過程。
我做軟件咨詢的時候發現,不少合作多年的團隊,都未能在基本價值觀上達成一致。例如自家產品到底能解決客戶哪些問題,10個人能給出8個答案。我認為研發管理首先要解決的問題,是形成一個團隊,這就要求大家必須有足夠多共性。想要塑造有戰斗力的團隊,需要模仿軍隊管理,大家穿一樣的衣服,邁一樣的步子,用同樣的方式使用工具,減少不必要的浪費和溝通。
建立共性的關鍵之一,是要對代碼質量樹立共同的認可規范。好代碼必須干凈、可維護、可測試性好、適宜閱讀。如果在大規模項目之前沒有就此達成統一,大家沖上去的時候,再說如何配合、包抄,只會被打得一敗涂地。
關鍵之二,是要做好版本控制。版本控制是研發的基石,開發人員每天都要用,而即便很多資深程序員,對版本控制的使用方式依然很落后。版本控制最基本的要求是可回滾,但國內大部分公司做不到這一點。《精益軟件開發藝術》這本書第0條就講:代碼必須在版本控制工具里。離開這個基礎,其它的改善都是無用功。我原來一直在推Git,本質原因還是我們的內功特別落后,你看Github有多流行,就知道國外做得有多好。
技術人攻略:國內研發管理內功不足,除了版本控制,還體現在哪些方面?
除了版本控制外,調程序和測試的情況也不樂觀。國內程序員調試程序大部分全憑拍腦袋,不能以程序的方式思考問題,不僅不具備調高難度算法的能力,也沒有清晰思路去解決問題,更不會使用工具。
在互聯網領域,測試的重要性遠遠被低估。合格的測試開發工程師應該既懂測試,又懂開發,還要能教育其它開發工程師。這種人在現實情況下很難找到,根據我面試的經驗,能把最基本的單元測試要點說清楚的人都不多。
做互聯網金融這段時間,我接觸過國內很多第三方支付,都在測試上做得一塌糊涂。舉個例子,開放平臺讓商家接入之前,需要提供一個虛擬測試環境。Paypal的正規做法,是給每個商家建立一個沙盒。而國內大部分廠商的做法,是讓所有商家共用一個測試賬號,往里面打一分錢。這一看就根本不懂測試理論,沙盒測試是標志性的東西,如果你到某個醫院,發現那里沒有顯微鏡,那就一定說明這個醫院不具備做某些類型化驗的能力。
電信、金融、制造業等傳統軟件開發領域,對軟件質量重視程度很高。互聯網領域最不重視軟件質量,普遍采用的灰度測試,雖然能解決體驗、交互流程上的問題,但并不能解決質量和正確性問題。測試能力是很基本的內功,做灰度可以,但不能對測試一竅不通還無所謂。這好比你有10發子彈,因為時間、資源所限,只能打1發。但如果你只有1發子彈,你就打,不要說別的不好,因為你根本不知道完整的方式該是怎樣,只能灰度。
國內的創業者天天看TechCrunch,知道美國的市場、機會、商業模式,唯獨別人的研發流程不了解,所以只會抄襲一些表面的東西。媒體總是報道Facebook一夜成名,但很少有人知道,在這家公司剛開始壯大時,就從Mozilla挖了一位非常資深的專家去負責工程。這些經驗豐富的人是團隊的定心丸,前進路上有多少坑,他們早就踩過了。研發有本質的客觀規律,不能因為你年輕,你創新,就逾越這些規律。
技術人攻略:你提到的從業人員眼界狹窄,表現在什么地方?
從業人員不怎么看書,是這個行業普遍存在的問題,最多看點講程序開發的書,所以有文化的程序員特別少。作為完整的人來講,基礎文化結構的缺失,導致大部分程序員看問題很偏激,沒有常識,不知道歷史,還總拿無知當個性。
例如做技術選型時,看好某門技術,就要用到項目里,這其實是非常幼稚的行為。技術選型一定要考慮團隊的駕馭能力,考慮能不能持續招到懂這門技術的人,以及最重要合作伙伴用了哪些技術,你選的這門技術能不能同他們高效溝通等非技術因素。
研發管理90%的問題,30年前在美國已經出現過,好好看看經典書,90%的問題能解決得挺好。不要總覺得自己是世界上第一個遇到這個問題的人,差不多你都快成為世界上最后一個遇到這樣愚蠢問題的人了。干了多年研發管理的人,都沒讀過研發管理經典的書,是很可笑的事。
我經常說,想去研究軟件考古學。軟件的歷史比較年輕,可考證的東西又比較多,能研究出相對清晰的歷史、來源、派系,幫助我們了解行業的發展過程。《人月神話》這本軟件工程經典書,就是講軟件開發的歷史,程序員知道歷史后,會更有興趣去思考整體的行業脈絡。
上大學時,我們會從各種空難事故中,學習飛機設計失敗的教訓,例如某個部位為什么要這么設計,是從哪一次空難開始改進的。航空工業能發展成現在這樣,不是由幾個小屁孩拍腦袋做成。在大體理論框架沒有突破的前提下,許多改進都是基于已有經驗,對細節的精益求精。任何行業都需要積累,研發管理也類似,我們需要對行業歷史有所了解,要傳承,而不是完全去創新。計算機行業理論框架突破并不多,并且能得圖靈獎的理論,跟大部分撅著屁股干活的人沒啥關系,所以還是老老實實把這些經典理論繼承了,對你的幫助更大。
至于為什么要讀那么多其它方面的書,除了能提高人文素養,還能幫你解決自身的問題。國外軟件業大師,在思考自己行業問題時,常常能旁征博引其它行業的案例,例如引用一本護士學的書、一本機車修理的書,或一本建筑電氣的書。各學科反復交叉會帶來啟發性思考,可能你這個行業的難題,在其它行業就不是事兒,幫助你開拓新思路。
技術人攻略:對技術缺乏敬畏又如何理解?
國內一些程序員懶、沒有開闊的視野,對于技術缺乏敬畏之心,覺得自己什么都懂,不需要特別謙虛去學技術,一幅老子寫代碼天下最牛逼的樣子。問他行業里有沒有偶像,回答沒有,問他知道業界誰做過什么東西,回答不了解。這種人是行業禍害,拉低了行業平均水準。
開發人員能不能成長,只要看有沒有追求就可以。面試時我通常會問幾個問題,例如最近學了什么?通過什么途徑去學習?看哪幾本書?都是誰寫的?他還寫過什么書?關注什么開源項目?誰寫的?他還做過什么項目?這幾個問題如果能很清晰回答出來,說明面試的這個人是有追求的,起碼有吹牛的追求。如果一個程序員連吹牛的追求都沒有,是很失敗的。
那這群人為什么如此驕奢淫逸?因為拿錢太輕松了。互聯網公司程序員離資本非常近,光今年上市的公司就大概有20家,行業發展得實在太好。國內互聯網已經快15年沒有寒冬了,包括2008年金融危機時,企業融資可能受點影響,但程序員的薪水一路水漲船高。除了干IT,有幾個剛畢業的人能拿到上萬工資呢?金融行業能拿到,但不需要IT這么多人。
美國每7、8年,就會經歷一次經濟周期,而國內這一代程序員沒有經歷過寒冬,所以不珍惜自己的工作,不知道自己真正的價值在哪里。出來混終究是要還的,大量發行貨幣必然導致通貨膨脹,只是時間早晚問題。從經濟學角度講,市場有了泡沫,需要經歷一次大蕭條,把泡沫擠壓干凈,才能變成更健康的環境。經緯合伙人已經寫信,讓大家做好過冬準備,如果資本持續注血,繁榮的假象就會持續得更長,如果市場找錢很困難,那大批互聯網公司就會死掉,釋放出大量人員,工資水平馬上就會下來。
研發工作非常辛苦,需要踏實態度和長期努力,通過日復一日的艱辛勞動才會有所收獲。國內浮躁氛圍很難培養出好的工程師。但換個角度,工程師價格高了,對真正有樂趣從事這一行的人來說,還是好事。
從趨勢上看,技術學習也正在發生變化,在校學生如果心態夠開放,通過參與開源社區快速獲取經驗,在學校里就能練就很好的內功。這群人一旦成為一個小氣候,可以直接和畢業5年左右的人競爭。尤其是當經濟形勢不好的時候,那些得過且過的人會很危險,終究有一天,他們會拿起書本去學習,知道自己根本不值那個價。
技術人攻略:這種行業普遍存在的浮躁心態,帶來了哪些不利影響?
我們生活在一個非常功利、信仰缺失的時代,人們只想快速獲取財富,很難有正確的價值堅持。用博弈論解釋,這種浮躁走向了囚徒困境,類似日本、德國這種成熟社會,大家做事都不浮躁,整個社會能達到比較高的均衡。而在一個浮躁社會,沒按規矩的人走得更快,于是那些按規矩做事的人就吃虧了。這種浮躁其實把大家都害了,把行業也害了。
IT現在和錢離得比較近,所以病得挺重,整個行業里充滿了騙子與強盜。大家努力的方向不是提升自己,而是只要能獲得錢的事情都會去做。任何時代都有騙子,但一個國度里大部分人都是騙子,是不正常的,還是應該實實在在創造一點價值。
熱衷于炒作概念,是行業浮躁的表現之一。前幾天參加一個研討會,討論了半天,才發現這群人不是在玩大數據,而是玩“數據”。因為以前根本沒有數據,決策主要靠拍腦袋,現在有數據了,就覺得自己與時代劃上了等號,想裹著這個外衣去掙錢,真是無知者無畏啊。好多人覺得有Hadoop集群了,上了硬件了,從政府那里拿到錢就牛逼了。可對數據沒有理解,不知道怎么用Hadoop發揮價值,有錢也沒有用。云計算也類似,被地方政府當成了房地產來搞,涌進許多根本不懂這個行業的人。
這種浮躁會導致軟件研發競爭優勢下降,我們在圈子里有討論,如果做高端基礎軟件,硅谷研發成本會比國內更低,能雇傭更高素質的人才,有更好的配合,以及更確定的產出。國內拿到錢的互聯網公司,將來可能都會去北美建立研發中心。貴不貴是一說,還有值不值的問題,為什么中國建研發中心不值,這是一個很耐人尋味的問題。
互聯網行業看上去門檻低一些,創業相對容易,但總要設置一些門檻給競爭對手,所以還是要有自己的積累。我以前曾噴過阿里這樣的公司,覺得他們做的東西不夠專業,但后來我改變了觀點,他們能堅持這么長時間,能把云計算推到這樣的高度,就算走了一些彎路,也是值得敬佩的。這些實實在在的創業者,才是業界的良心。
技術人攻略:根據你做敏捷咨詢的經驗,實施技術團隊過程改進的最大困難在什么地方?
最大的困難在于建立起團隊成員對你的信任。許多敏捷實施失敗的原因,就是因為程序員不信你,特別是團隊資深的人不信你,基本一定會失敗。從事敏捷咨詢行業的人,許多并不是技術背景,他可以講一大堆方法論,但程序卻寫得亂七八糟。所以想做好技術團隊的過程改進,至少你得是個懂技術的人,首先要向團隊展示出自己的技術能力,才有機會去解決困擾他們的問題。
管理大師德魯克曾說過:“你度量什么,就能改善什么”。在具體過程改進實施中,我喜歡從細節著眼,尋找一些善于實施,又能見到效益的改善。比如我經常會用到一個方法:度量程序員的時間花在了什么地方。如果大家都是靠猜測,管理不好也不奇怪。
我曾經裝過一個軟件,記錄自己使用電腦的行為,例如統計每天用了多少時間上微博、聊QQ、寫郵件,還是寫代碼。真正把時間記錄下來之后,才發現實際結果和自己的感覺大相徑庭。社交要消耗大量時間,非常影響工作效率,所以后來我把IM都關掉,集中處理工作。
一個管理良好的團隊也是一樣,想要改善需,就必須要有動力。作為管理者,你必須刺激團隊成員身上的動力,給他們一面鏡子,照出來他們背后的魔鬼,這樣才會有改善的基石,這也是建立信任的其中一步。大部分程序員都很尊重事實,當他發現每天5個小時都花在聊天上,自己就會想辦法去改善。逐漸實行這樣能見到效益的改善,就會獲得團隊信任。
好多找我做咨詢的人,容易關注一些表面現象,比如敏捷實施的各種方法。在我看來,表面的東西只占20%,真正想做好過程改進,必須花很多時間做基礎工作。比如上面提到的對團隊工作時間的測量,對你的改善目標,提供了強有力的數據支撐,是非常基礎的改進工作。敏捷是一個方法論,在團隊內功真正得到提升之前,那些方法沒有任何用處,而且高深莫測的方法,會讓大家感覺到不確定,容易對此起反抗。
實際工作中,許多咨詢顧問不會花精力,去做看上去沒有科技含量、很瑣碎、不為人知的事情。就像剛剛談到的大數據行業現狀,大家在會上討論著大數據的建模、分析、如何出漂亮報表,但80%的臟活累活,是要把數據有效地進行搜集和整理,它是簡單的體力活,但做不好的話,根本沒有后面這些故事。過程改進也類似,絕大部分工作就是普通工作,沒有太多技術含量,也沒什么值得可說的,但必須把這些基礎打好,才會有后面的故事。
國外談論敏捷的,都是有20多年工作經驗的人,敏捷宣言發起者,都是業界大牛。而平時工作中,我常接觸到一些許多沒什么工程經驗的人在實施敏捷,并且在各種業界大會上,沾沾自喜地分享他們的經驗,所以我后來也很少參加敏捷的這些會了。我懷著一顆敬畏的心,去讀大師的作品,思考我工作中的不足。我感覺自己做的工作都很普通,都是大師們說過的,很普通的那些事情,值得分享的不太多,失敗倒是有很多。
技術人攻略:你從什么時候成為技術圈的交際花?你工作跨的圈子很多,是否會影響知識的積累?
我也不知道從什么時候開始成為交際花,大概是2011年初,我翻譯了《MongoDB權威指南》那本書之后,參加了很多技術交流活動。在這些活動上,遇到了不少志同道合、真正熱愛技術的人,讓我感覺很踏實,于是就更愿意參加社區活動。
客觀地說,許多活動的內容和組織都還有很大的提升空間。大家感覺日本的技術做得應該不怎么好,但我最近看了一本日本的技術刊物,發現他們的技術討論很深入,國內罕有。我之所以會去各個技術會議當出品人和主持人,是因為不想作為批評者旁觀,而是主動推動這些事情的發展,促成技術交流的氣氛。
離開上一家公司之后,許多做互聯網金融的公司都給我打電話。我會問他們一個問題:技術能給你們公司帶來什么?在我看來,大部分互聯網金融公司處在初期階段,還遠遠沒到拼技術的時候。他們拼的都還是業務,業務做得好,技術外包一個,都能撐過去。
現在加入的這家公司做APM應用性能監控,提供的是純技術產品。我個人更希望在一家不浮躁,純粹以技術為價值導向的公司工作。云計算快速發展,已經到了踏踏實實給大家創造價值的階段,我希望通過公司提供的SaaS,讓大家用得更舒服、更省錢。
我一直很喜歡跨領域學習,對很多東西都有好奇心。大學本來是航天工程力學系的,卻因為研究工業自動化系統,獲得了電氣工程學院的Rockwell獎學金。嘗試新東西在我看來不是障礙,而是樂趣。
工作以后,在不同圈子認識了不同的人,在互聯網金融圈認識的人,如果一直待在廣告圈,是無論如何也遇不上的。在各個圈子有朋友之后,可以做一些融合的事,比如想知道金融里面安全怎么做,就會有很多安全圈的朋友給我出主意。當然,在不同圈子太多,單一的業務上說不上特別精通,但我個人積累的重心一直放在技術上,一直在認真研究和探討自己感興趣的東西,從來沒有放棄過對積累的追求。
技術人攻略訪談是關于技術人生活和成長的系列訪問,由獨立媒體人Gracia創立和維護。聯系郵箱:gracia@devlevelup.com;微博: @技術人攻略;微信:技術人攻略(dev-levelup)。
本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請
點擊舉報。