深度乾貨丨優秀工程師進化錄:前IBM高級工程師詳解五大層次

互聯網公司講“基因”,就如同革命隊伍講“傳統”,許多創業公司在成長期取得一定成就之時,都傳承了創業伊始的熱情與敏捷思維,但與此同時,也或多或少開始暴露出管理體系、溝通機制上的問題。

為了提高創業公司團隊工作效率,乾元資本所孵化企業“天天智電”CTO、前IBM高級工程師程超從多個維度為讀者分享瞭如何開發優秀的產品,以及如何成為合格的工程師。

深度乾貨丨優秀工程師進化錄:前IBM高級工程師詳解五大層次

程超,曾任國際商業機器公司(IBM)高級研發工程師,現任乾元資本所孵化企業“天天智電”CTO,擁有北京航空航天大學計算機科學學士學位、軟件開發管理計算機科學碩士學位。其具有架構和設計大型計算機軟件工程系統、領導和管理軟件研發團隊的經驗及大型商業數據庫相關經驗。曾合夥創立尚良科技集團並在不同階段擔任技術總監、首席技術官、CEO多個重要職位,並先後創立並領導開發了核桃實驗室、琢麼網、燈鷺網、風信子內控審計系統、傘融網金融資產交易分倉系統、環保及道路工程領域的智能運維巡檢系統等多個互聯網產品及軟件系統。程超專注研究計算機工程中的軟件開發過程管理,對敏捷開發的互聯網思維具有深刻的認識和實踐經驗,同時對於互聯網思維在創業公司的管理中的應用更擁有豐富的實踐經驗。

以下內容為程超發言精選:

今天講的兩個重要的標題,分別是如何開發優秀的產品,以及如何成為合格的工程師。

深度乾貨丨優秀工程師進化錄:前IBM高級工程師詳解五大層次

首先我們講一下計算機科學與計算機工程的分別:什麼是計算機科學,計算機科學是學校裡、象牙塔裡的東西。計算機工程是工業界,是你從一個學校到一個公司,應該掌握和學習的東西。計算機工程包含什麼呢?從產品設計開始到架構設計,到質量保證和發佈,包含了一個軟件開發整個週期裡所有的東西。編碼這個事兒本身和編碼的相關知識在工作裡也就佔到成為合格工程師的20-30%精力,只有把計算機工程的知識都瞭解了才能成為一個合格工程師。大家都明白這些概念嗎?比如說,配置管理是軟件開發成果的倉庫。針對不同的環節和工種是不一樣的,比如代碼庫、測試用例、文檔管理等都是不同開發環節的配置管理。配置管理其實是計算機工程的基礎,一會兒要講的很多的東西都是以配置管理為核心的。

深度乾貨丨優秀工程師進化錄:前IBM高級工程師詳解五大層次

所以存在一個從計算機科學到計算機工程的轉變。大家從學校裡出來到一家公司,你可能覺得寫代碼就是一切,其實並不是這樣。今天我要給大家講的,就是開始這樣的一個轉變—需要建立一個很好的工程意識、開始工程實踐,幫助你們成為更好的工程師、開發更好的產品。這個過程是需要1-2年的實踐,你需要使用和實踐才能理解很多其中含義。計算機科學需要積累,計算機工程可以從實踐中學習。計算機科學中的很多課程,可能有些程序員沒有學過或者沒有好好學,你可能以為學習了類似“操作系統”這樣的基礎課程,但你一輩子都不會去寫一個操作系統,但是操作系統課程包含了進程、線程、進程間通訊這些知識基礎,如果你沒有受到過系統訓練,之後寫多線程應用時就可能會採坑。

深度乾貨丨優秀工程師進化錄:前IBM高級工程師詳解五大層次

如何成為一個更好的工程師?大家可以想一下自己認為的什麼叫作一個好的工程師。吳軍博士之前在谷歌工作,回國後擔任騰訊副總裁,近年應該在做投資,他寫了一本書叫《硅谷之謎》,他在書裡把硅谷的工程師分成了五個層次。每個層次的工程師都有不同的特點,上升要付出不同的努力。我們的團隊裡,不管是產品、研發、測試,無論是你是否寫代碼,你都可以被分類到這些工程師的類別裡。第五級工程師,入門門檻,要求你能夠獨立設計和實現一項功能。例如你是研發人員,一個產品人員把需求給到你,你可以不需要別人告訴你步驟,你就能夠去實現寫個功能。在這個工程中你需要做一些模塊設計、單元測試等。(如果你無法做到這個基本,那麼你還不算是一名工程師) 。第四級工程師的要求是能夠領導和負責產品。如果想達到第四級,你需要有產品思維和頭腦,你要知道你將要做出來的結果是一個什麼樣的。這裡講的是一個“ownership”,就是責任心。

如果你想成為一個產品的負責人,你至少需要是一個第四級工程師。根據吳軍博士所寫,這需要再工業界的優秀的團隊裡鍛鍊3-4年。第三級工程師是能夠做出行業裡最好產品的工程師。這個非常感性的標準,有點模糊,是相對的。能否成為一個合格的第三級的工程師是需要一些運氣的。在硅谷或許需要5-6級積累,在國內甚至需要10年以上堅持工程師身份。在國內,第二級和第一級工程師幾乎很少,這和硅谷是很不一樣的。第二級的工程師的概念叫做“給世界帶來驚喜”,蘋果的創始人Steve Jobs和Wozniak就是這樣的第二級的偉大工程師。他改變了電腦、動畫、音樂、手機等產業。他從創立蘋果到去世,是不寫代碼的。但是他是一個懂工程的、有熱情的產品,所以世上沒有人會否認,Steve Jobs是一個偉大的工程師。第一級的工程師呢,我們這輩子可能都不一定能夠見到一個。他們能夠開創一個全新的行業,就像愛迪生開創電器行業、福特開創汽車行業,諾伊斯開創半導體行業這樣的。通過這個分類其實是為了給大家傳遞一個概念,什麼叫作一名好的工程師?我們這輩子如果能夠達到一個第三級的工程師就是很好的成就和目標了,我們需要自己給自己設立這樣的一個目標,讓自己在工程實踐中不斷提升自己,達到目標。

作為一個互聯網基因的公司,我們每位小夥伴、工程師,才是公司最重要的資產。每人的能力提升了,公司的價值才能夠得到提升。

中國的很多互聯網、軟件公司,都是缺乏工程師文化的。中國不少團隊自己搞得的很多都是一些邊邊角角的東西,很多都是拿Facebook, Google等的開源的東西去搭出來的。缺少高等級工程師和以高等級工程師為核心的自主創新,也導致了我們在芯片等行業受制於人。中國目前的經濟發展帶來了資本和互聯網的虛假繁榮,很多快餐式的創業和to VC的模式層出不窮。但是隨著中國經濟增速放緩,我們知道有些東西必將不會長久,燒錢的模式必將不會長久。未來對高級別的工程師的需求會越來越大。

深度乾貨丨優秀工程師進化錄:前IBM高級工程師詳解五大層次

軟件項目有一個項目三角,互相制約,此消彼長。比如,成果固定的情況下,需要進度快,那麼成本就需要增加,需要增加工程師。這是一個相互制約的過程。我們現在還是一個初創團隊,那麼成本是我們的最大的制約項。我們和BAT是不一樣的,對於BAT來說,功能和質量(即成果)是最重要的,因為他們面臨的挑戰和競爭是我們無法想象的,而進度可以相對容易的通過增加成本解決。而對於初創團隊,最重要的就是“降低成本”,我們說的降低成本不是給大家剋扣工資,而是說減少不必要的成本。我們今天要講的就是各種如何幫助大家降低各種不必要成本的方式方法和工具、理論。這個三角非常重要的一個功能就是,大家達成共識這個三角是真實、客觀存在的,討論才能進行,這是避免團隊內部產生矛盾互相大家的基礎共識。非常重要。這一點上,我們的團隊,還是決策層,都要牢記於心。

深度乾貨丨優秀工程師進化錄:前IBM高級工程師詳解五大層次

軟件開發過程,為什麼要制定這個流程呢?規模以上的軟件開發不是個人單兵作戰就可以做了。軟件開發過程的作用是標準化,就是任何一個人來加入,都可以達成共識。減少溝通成本、減少溝通中的誤解。希望大家能夠理解開發流程、環節、理解每個環節每個人要做什麼事,這樣才能最大程度的降低溝通成本,提高執行力。不知道大家是否都在大公司工作過,但是我想說的是,很多大的公司的開發流程未必是好的。很多大的公司真的是不缺錢,所以他們沒有動力和必要去降低在軟件開發過程中的成本,而是去優化其他東西。所以很多大公司出來的人未必會對軟件開發過程中的優化和精細化很懂。

在硅谷的很多互聯網公司都會有這麼一個關鍵角色叫做Director/VP of Engineering. 但是國內我很少見到有公司設立這個角色。所以大家可以多注意一些國外的過程改進分享案例。國內很多企業分享的更多是一些技術,什麼人工智能啊大數據之類的技術。

在軟件開發過程中每個人要知道自己的角色和定義。工程界和科學界有不同的一點,是工程界更講究最佳實踐,通過實踐反饋去持續改進過程,並不一定能夠研究清楚為什麼和原理,這是很正常的。

深度乾貨丨優秀工程師進化錄:前IBM高級工程師詳解五大層次

剛才的瀑布模型是一個很傳統的老掉牙的流程了,很少有人在用。所以並不是我想要講的。現在更多推崇的是一個叫做“敏捷開發-迭代”的開發過程,這個是我要講的。敏捷開發是以功能為中心的,每一個功能開發完成之後就馬上有成果、可驗證。互聯網開發要求需要敏捷。

今天要講的最最最重要的兩個概念,叫做“持續集成”和“自動化”。如果一個互聯網公司號稱自己做敏捷開發,但是他的開發流程中並不包括這兩個關鍵,那麼你可以從這家公司離開,因為他們搞的是“假敏捷”。敏捷開發更多強調的是單兵作戰的能力。這幾年硅谷非常火的一個概念叫做“全棧工程師”,就是說一個工程師他了解整個生命週期的環節,不一定都要這個人去負責,但是要了解。這是有效降低溝通效率的方式。

深度乾貨丨優秀工程師進化錄:前IBM高級工程師詳解五大層次

這個圖是非常重要的,基本就是我們現在在使用的流程。持續集成和自動化都在這裡標識了,在什麼環節中需要。持續集成是什麼?持續集成的概念就是把所有的成果給放在一起。這是一個集成的過程。比如我們把不同的代碼整合到了一起這樣的動作是其中一個例子。持續集成就是我們要不斷的集成,讓產品持續可以看到是什麼樣的。一會兒我會給大家看一下我們使用的工具。(此處省略了具體的工具講解,會在更詳細的技術培訓文檔中講解)

我們的互聯網產品不斷地迭代不斷的變,一旦變就會牽一髮而動全身。所以寫單元測試的用例是非常重要的。代碼的覆蓋度,有一些工具會幫我們去看。

深度乾貨丨優秀工程師進化錄:前IBM高級工程師詳解五大層次

這是我們用到的一些工具,給大家簡單過一下,列的並不全,這是兩三年前做的一個圖。Jira是我們的一個溝通管理的平臺我們已經在用了,但是大家用的並不是很好很完善,是需要貫穿我們整個生命週期的。從最開始立項到最後的用戶的討論都應該在Jira上實現。所有的代碼細節應該由代碼註釋+Jira的任務細節中去回溯出來。比如說,一個員工離職了,新的一個員工加入,應該從代碼註釋和Jira的任務細節中就瞭解全部的代碼,而不需要自己去讀代碼或者很高成本的培訓。

從產品設計出來到研發過程中,中間有一個非常重要的步驟是叫做“產品評審”,因為設計的東西不一定在架構上就是最優的,產品自己或者某一個工程師可能都是無法獨立判斷的。這就需要有評審會,否則之後就會有很多問題。(這一點在整個公司的管理思維中也是一樣的,一個前端的需求傳導過來,有些是需要整個公司的各個環節進行統一評審的,這樣要從各個不同的視角、不同的出發點去考究下一步的計劃和如何實施和實現這個需求。同時很重要的是要界定責任。這對於後續的公司的管理和提高效率是至關重要的) 我們在2008年開始創業的時候其實也是什麼都不懂,走了很多彎路。後來在創業過程中的整個公司管理,也是不懂,也走了彎路。後來我們把這些經驗這些坑都總結了起來,建立了開發過程的管理,建立的公司管理的體系,目的都是為了讓團隊在不斷擴張、增加新成員的過程中能夠保持整個公司始終在信息同步中,每個環節的信息溝通都是同步和及時的,不同環節、不同團隊之間的責任和目標是相互理解、又明確的。這樣做的主要目的就是兩個:第一提高團隊工作效率,第二降低團隊之間的誤解。


分享到:


相關文章: