文:Gracia (本文爲原創內容,部分或全文轉載均需通過做者受權,並保留完整的做者信息和技術人攻略介紹。)程序員
導語:本期採訪對象程顯峯@程顯峯-Mars,藍海訊通COO。素有「技術圈交際花兼娛記」稱號的顯峯,是MongoDB中文社區發起人,曾任積木盒子技術副總,Admaster首席佈道師,混跡於安全、廣告、雲計算、大數據、互聯網金融等多個技術圈。面試
「何時採訪我?」在GitCafe北京分部的開幕活動上,顯峯半開玩笑半認真地問我。認識顯峯的時間不算短,總在各類技術大會與小會上頻繁碰面。過去一年多,他的工做狀態算不上「穩定」,這不,剛離開高大上的互聯網金融,投身APM的偉大事業。真要採訪,得先選出一個可行的話題切入角度,他引用《人件》裏提到的「高科技幻覺」,從傳統工程的角度談了談對IT研發管理的見解,因而採訪主題順利地定了下來。算法
這通吐槽顯然憋了好久,不乏「這個行業充滿了騙子與強盜」的激烈言辭。我有點被驚到,常看他以典型的東北式幽默與人調侃,並不知道他原來如此嚴肅。在北五環外的東昇科技園,咱們從下午兩點半,一直聊到天黑,期間換了3個場地。末了,他嘆到:「爲何好好作技術這麼難!」編程
顯峯無需藉此博眼球、搏出位,公開發表這些話給他帶來的潛在風險遠大過收益,觀點犀利天然會贏得一些贊同,也不免招致對號入座的無故恨意。在烏合之衆匯聚成的網絡空間,謾罵而非理性的討論是更爲常見的交流方式。雖然在文字上作了些處理,我仍然對其可能帶來的爭議無比擔憂。發給他確認,幾乎沒作大的修改,僅回了個:「總體很流暢,但細節上的文字還不夠平滑。」看,真是個對品質要求很高的人。segmentfault
這些細節暴露了他的始終如一,也讓我更加理解顯峯的選擇,不安定的背後,自有他嚴格的價值堅守。若是有機會,顯峯但願去教小孩寫程序,熱愛學習的人是真誠的,他喜歡和這樣的人在一塊兒。七牛雲存儲
技術人攻略:你從何時起開始對對研發管理感興趣?安全
我是學工程出身,本科就讀於哈工大航天工程與力學系,研究生是悉尼大學的航天專業,期間受到了嚴格的工程訓練。傳統航空業的研發和製造體系很是完整,拿造飛機舉例,悉尼大學的本科生就徹底能夠組裝出可供銷售的飛機,由於整個生產過程很是嚴格,任何一個扳手都有編號,有詳細的記錄和流程,不可能搞錯任何東西。微信
雖然專業選擇了航天,我對編程卻很是熱愛。從小學就開始寫程序,那時候家裏沒有電腦,每次上機須要走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這麼多人。
美國每七、8年,就會經歷一次經濟週期,而國內這一代程序員沒有經歷過寒冬,因此不珍惜本身的工做,不知道本身真正的價值在哪裏。出來混終究是要還的,大量發行貨幣必然致使通貨膨脹,只是時間遲早問題。從經濟學角度講,市場有了泡沫,須要經歷一次大蕭條,把泡沫擠壓乾淨,才能變成更健康的環境。經緯合夥人已經寫信,讓你們作好過冬準備,若是資本持續注血,繁榮的假象就會持續得更長,若是市場找錢很困難,那大批互聯網公司就會死掉,釋放出大量人員,工資水平立刻就會下來。
研發工做很是辛苦,須要踏實態度和長期努力,經過日復一日的艱辛勞動纔會有所收穫。國內浮躁氛圍很難培養出好的工程師。但換個角度,工程師價格高了,對真正有樂趣從事這一行的人來講,仍是好事。
從趨勢上看,技術學習也正在發生變化,在校學生若是心態夠開放,經過參與開源社區快速獲取經驗,在學校裏就能練就很好的內功。這羣人一旦成爲一個小氣候,能夠直接和畢業5年左右的人競爭。尤爲是當經濟形勢很差的時候,那些得過且過的人會很危險,終究有一天,他們會拿起書本去學習,知道本身根本不值那個價。
技術人攻略:這種行業廣泛存在的浮躁心態,帶來了哪些不利影響?
咱們生活在一個很是功利、信仰缺失的時代,人們只想快速獲取財富,很難有正確的價值堅持。用博弈論解釋,這種浮躁走向了囚徒困境,相似日本、德國這種成熟社會,你們作事都不浮躁,整個社會能達到比較高的均衡。而在一個浮躁社會,沒按規矩的人走得更快,因而那些按規矩作事的人就吃虧了。這種浮躁其實把你們都害了,把行業也害了。
IT如今和錢離得比較近,因此病得挺重,整個行業裏充滿了騙子與強盜。你們努力的方向不是提高本身,而是隻要能得到錢的事情都會去作。任什麼時候代都有騙子,但一個國度裏大部分人都是騙子,是不正常的,仍是應該實實在在創造一點價值。
熱衷於炒做概念,是行業浮躁的表現之一。前幾天參加一個研討會,討論了半天,才發現這羣人不是在玩大數據,而是玩「數據」。由於之前根本沒有數據,決策主要靠拍腦殼,如今有數據了,就以爲本身與時代劃上了等號,想裹着這個外衣去掙錢,真是無知者無畏啊。好多人以爲有Hadoop集羣了,上了硬件了,從政府那裏拿到錢就牛逼了。可對數據沒有理解,不知道怎麼用Hadoop發揮價值,有錢也沒有用。雲計算也相似,被地方政府當成了房地產來搞,涌進許多根本不懂這個行業的人。
這種浮躁會致使軟件研發競爭優點降低,咱們在圈子裏有討論,若是作高端基礎軟件,硅谷研發成本會比國內更低,能僱傭更高素質的人才,有更好的配合,以及更肯定的產出。國內拿到錢的互聯網公司,未來可能都會去北美創建研發中心。貴不貴是一說,還有值不值的問題,爲何中國建研發中心不值,這是一個很回味無窮的問題。
互聯網行業看上去門檻低一些,創業相對容易,但總要設置一些門檻給競爭對手,因此仍是要有本身的積累。我之前曾噴過阿里這樣的公司,以爲他們作的東西不夠專業,但後來我改變了觀點,他們能堅持這麼長時間,能把雲計算推到這樣的高度,就算走了一些彎路,也是值得敬佩的。這些實實在在的創業者,纔是業界的良心。
技術人攻略:根據你作敏捷諮詢的經驗,實施技術團隊過程改進的最大困難在什麼地方?
最大的困難在於創建起團隊成員對你的信任。許多敏捷實施失敗的緣由,就是由於程序員不信你,特別是團隊資深的人不信你,基本必定會失敗。從事敏捷諮詢行業的人,許多並非技術背景,他能夠講一大堆方法論,但程序卻寫得亂七八糟。因此想作好技術團隊的過程改進,至少你得是個懂技術的人,首先要向團隊展現出本身的技術能力,纔有機會去解決困擾他們的問題。
管理大師德魯克曾說過:「你度量什麼,就能改善什麼」。在具體過程改進實施中,我喜歡從細節着眼,尋找一些善於實施,又能見到效益的改善。好比我常常會用到一個方法:度量程序員的時間花在了什麼地方。若是你們都是靠猜想,管理很差也不奇怪。
我曾經裝過一個軟件,記錄本身使用電腦的行爲,例如統計天天用了多少時間上微博、聊QQ、寫郵件,仍是寫代碼。真正把時間記錄下來以後,才發現實際結果和本身的感受截然不同。社交要消耗大量時間,很是影響工做效率,因此後來我把IM都關掉,集中處理工做。
一個管理良好的團隊也是同樣,想要改善需,就必需要有動力。做爲管理者,你必須刺激團隊成員身上的動力,給他們一面鏡子,照出來他們背後的魔鬼,這樣纔會有改善的基石,這也是創建信任的其中一步。大部分程序員都很尊重事實,當他發現天天5個小時都花在聊天上,本身就會想辦法去改善。逐漸實行這樣能見到效益的改善,就會得到團隊信任。
好多找我作諮詢的人,容易關注一些表面現象,好比敏捷實施的各類方法。在我看來,表面的東西只佔20%,真正想作好過程改進,必須花不少時間作基礎工做。好比上面提到的對團隊工做時間的測量,對你的改善目標,提供了強有力的數據支撐,是很是基礎的改進工做。敏捷是一個方法論,在團隊內功真正獲得提高以前,那些方法沒有任何用處,並且高深莫測的方法,會讓你們感受到不肯定,容易對此起反抗。
實際工做中,許多諮詢顧問不會花精力,去作看上去沒有科技含量、很瑣碎、鮮爲人知的事情。就像剛剛談到的大數據行業現狀,你們在會上討論着大數據的建模、分析、如何出漂亮報表,但80%的髒活累活,是要把數據有效地進行蒐集和整理,它是簡單的體力活,但作很差的話,根本沒有後面這些故事。過程改進也相似,絕大部分工做就是普通工做,沒有太多技術含量,也沒什麼值得可說的,但必須把這些基礎打好,纔會有後面的故事。
國外談論敏捷的,都是有20多年工做經驗的人,敏捷宣言發起者,都是業界大牛。而平時工做中,我常接觸到一些許多沒什麼工程經驗的人在實施敏捷,而且在各類業界大會上,沾沾自喜地分享他們的經驗,因此我後來也不多參加敏捷的這些會了。我懷着一顆敬畏的心,去讀大師的做品,思考我工做中的不足。我感受本身作的工做都很普通,都是大師們說過的,很普通的那些事情,值得分享的不太多,失敗卻是有不少。
技術人攻略:你從何時成爲技術圈的交際花?你工做跨的圈子不少,是否會影響知識的積累?
我也不知道從何時開始成爲交際花,大概是2011年初,我翻譯了《MongoDB權威指南》那本書以後,參加了不少技術交流活動。在這些活動上,遇到了很多志同道合、真正熱愛技術的人,讓我感受很踏實,因而就更願意參加社區活動。
客觀地說,許多活動的內容和組織都還有很大的提高空間。你們感受日本的技術作得應該不怎麼好,但我最近看了一本日本的技術刊物,發現他們的技術討論很深刻,國內罕有。我之因此會去各個技術會議當出品人和主持人,是由於不想做爲批評者旁觀,而是主動推進這些事情的發展,促成技術交流的氣氛。
離開上一家公司以後,許多作互聯網金融的公司都給我打電話。我會問他們一個問題:技術能給大家公司帶來什麼?在我看來,大部分互聯網金融公司處在初期階段,還遠遠沒到拼技術的時候。他們拼的都仍是業務,業務作得好,技術外包一個,都能撐過去。
如今加入的這家公司作APM應用性能監控,提供的是純技術產品。我我的更但願在一家不浮躁,純粹以技術爲價值導向的公司工做。雲計算快速發展,已經到了踏踏實實給你們創造價值的階段,我但願經過公司提供的SaaS,讓你們用得更舒服、更省錢。
我一直很喜歡跨領域學習,對不少東西都有好奇心。大學原本是航天工程力學系的,卻由於研究工業自動化系統,得到了電氣工程學院的Rockwell獎學金。嘗試新東西在我看來不是障礙,而是樂趣。
工做之後,在不一樣圈子認識了不一樣的人,在互聯網金融圈認識的人,若是一直待在廣告圈,是不管如何也遇不上的。在各個圈子有朋友以後,能夠作一些融合的事,好比想知道金融裏面安全怎麼作,就會有不少安全圈的朋友給我出主意。固然,在不一樣圈子太多,單一的業務上說不上特別精通,但我我的積累的重心一直放在技術上,一直在認真研究和探討本身感興趣的東西,歷來沒有放棄過對積累的追求。
做者介紹:
技術人攻略訪談是關於技術人生活和成長的系列訪問,由獨立媒體人Gracia創立和維護。報道內容以「人」爲核心,經過技術人的故事傳遞技術夢想;同時以小見大,見證技術的發展和行業的變遷。在這個史無前例的變革時代下,咱們的眼光將投向有關:創造力、好奇心、冒險精神,這樣一些長期被忽略的美好品質上。相信經過這樣一羣心懷夢想,而且正腳踏實地在改變世界的技術人,這些美好的東西將從新得到珍視。
聯繫方式 gracia@devlevelup.com
微博: @技術人攻略
訂閱:微信搜「技術人攻略」或「dev-levelup」
感謝SegmentFault提供博客專欄及推廣支持。
感謝迅達雲成提供雲主機及技術支持。
感謝七牛雲存儲對「技術人攻略影像拍攝計劃」提供支持。