歡迎光臨
每天分享高質量文章

程式員如何跑得比別人更快?微博研發總監李慶豐訪談

導讀:6 月 1 ~ 2 日,GIAC 全球網際網路架構大會將於深圳舉行。GIAC 是一個面向架構師、技術負責人及高階技術從業人員的技術架構大會。今年的 GIAC 已經有騰訊、阿裡巴巴、百度、今日頭條、科大訊飛、新浪微博、小米、美圖、Oracle、鏈家、唯品會、京東、餓了麼、美團點評、羅輯思維、ofo 等公司專家出席。


在大會前夕,高可用架構採訪了本屆 GIAC個人成長分會場出品人 李慶豐,就目大家關註的工程師個人成長和技術管理等問題進行了訪談。


李慶豐,新浪微博研發中心研發總監,負責微博影片及通訊相關服務研發工作。2010年加入微博,作為核心技術人員經歷了微博爆髮式增長、艱難突破、再度騰飛的全過程。技術上專註於高可用高併發架構方向,主導及推進微博平臺微服務化、服務治理、SLA保障體系等多個高可用架構最佳化升級專案。同時也是微博研發中心技術新兵訓練營負責人。


高可用架構:很高興能採訪到您。能否簡單給高可用架構讀者介紹一下自己?

李慶豐:很高興接受訪談, 我是2010年加入新浪微博,到現在很快要滿8年了,算是和微博一起經歷了整個成長髮展過程。 


在這8年裡由一名工程師逐漸歷練成長為一名技術管理者,還是很感謝微博這個平臺。

高可用架構:每一個取得成績的人,都有一段苦逼的堅持。回過頭去看,在您的成長過程中,什麼時候最讓您刻骨銘心?在您還是默默無聞的時候,在哪些方面下過苦功夫?


李慶豐:回想我自己的成長過程有兩個關鍵節點。 

第一個是畢業工作一年後從學校辭職來北京進入程式員行業。那時候並沒有什麼工作經驗,甚至程式設計技術基礎掌握的都不是很好。社招情況下沒有工作經驗來北京找工作的難度可想而知。當時的心態就是隻要有公司要我不給錢都行,儘管如此仍舊多次面試碰壁。但每次面試我都有收穫,面試提出的我不懂的問題,我會當天去西單圖書大廈或網上找資料搞清楚,並會按著網上的使用實體試著去做些小實踐以能夠更好的理解和掌握。其實技術面試的知識點無非就那麼多,慢慢的面試反饋就越來越好,終於有公司願意要我了。

上班後仍然是個痛苦的過程,平時開發自己的demo和真正開發線上業務系統差別還是很大的,會遇到很多技術難點問題,除了同事的幫助,更多的還是要自己利用下班時間去研究明白和解決。那時甚至都會住在公司,因為公司網路快,也省得擠公交車的時間。再有時間就是去研究一些新技術新框架,慢慢的你會發現經常會有同事來想你討教了,你從菜鳥變成了團隊的核心開發,這種喜悅是難於言表的。

 
第二個是在微博轉向技術管理那段時間,當時正直微博快速崛起那個階段,團隊規模比較小,但業務需求非常多,一邊進行程式碼開發,一邊還要溝通需求,還要協調同事協作及跨團隊協作,總感覺時間不夠用。最忙的時候是白天溝通需求和跨團隊協調,晚上寫程式碼。

當時記得最刻骨銘心的是寫故障報告的過程,當時微博的影響力已經比較大了,服務出一些問題領導都非常重視,需要寫故障報告並通報到各個團隊。那時候平臺的故障報告經常我來負責寫,經常被Tim(小編註:即Tim Yang,李慶豐的上級)駁回來重寫。有時候甚至Tim也會來和我一起梳理和修改。當時還有些不理解,感覺是在為難我一樣。後來才明白領導當時給了我很大的幫助和指導,對問題的本質和解決思路、在架構理解與跨團隊協作等方面都有更高角度的理解,這對我後來的技術管理成長有很大的幫助。 

具體來講,首先要打好扎實的基礎技術功底,包括語言基礎、演演算法基礎、編碼規範,其實是要去理解前人的經驗積累,比如設計樣式、經典技術架構的原理和原始碼。能做到這一步其實就是一個靠譜的程式員了。這是你就需要尋找更大的技術挑戰機會,去進一步實踐歷練。 

接著,需要透過借鑒優秀架構元件的架構思路,結合自己的業務去實踐,並能形成自己的架構理念。這個過程是想技術專家和架構師進階的重要過程,和業界前沿技術社群及大牛的溝通交流也非常重要,業餘時間做些總結分享會很有幫助。 

再之後,需要跳出技術的侷限,更多的結合公司的戰略和使用者真實需求去深入理解業務,這樣就能夠提前對技術趨勢做出預判,提前做好對應的技術儲備和準備。 

慢慢的,你的老闆會發現,你的團隊好像什麼都能搞定而且做的非常好,公司也就更願意把更有挑戰的專案交給你和你的團隊,也會更願意給你更多的資源。最終個人成長和晉升都會相對更順利些。


高可用架構:工作中有沒有遇到從海量簡歷中篩選合適簡歷的時候?如果拋開技術棧來講,怎麼樣的簡歷更能吸引您呢?能順利透過面試的那些人有哪些共同的特質呢?


李慶豐:招聘方面自然必不可少。伴隨著微博的成長,微博的技術氛圍和成長環境對小夥伴們還是很有吸引力的,所以,簡歷確實蠻多的,篩選簡歷確實也是一個非常耗時的工作。

 
早期我不怎麼篩簡歷,只要投過來我都會請過來面談一下,因為我擔心會因為簡歷漏掉優秀的候選人。當然,這樣耗費了我大量的時間,但收穫並不大。 


後來,經過不斷的思考總結和實踐,就會對簡歷做比較嚴格的篩選,這樣透過比例大大提高了,也節省了自己和候選人的寶貴時間。 

在社招簡歷篩選上,我重點看2點:經歷和具體的專案描述, 如果經歷參與過比較有技術挑戰場景的專案的話(比如說高併發場景,或複雜業務場景),我會首先篩出來進一步重點瞭解; 然後就是看具體專案的描述,透過專案描述來發現候選人在這個專案中的角色,透過其使用的技術棧來瞭解候選人的技術深度和經驗情況。也能透過這個描述,瞭解到候選人的思路是否清晰。 


上面2點符合的話,就基本都能來面試了,並且我會假定簡歷上說的都是真實的。然後在具體面試時帶著這些背景去進一步瞭解和驗證。

對於候選人我重點關註4個方面情況,按重要程度分別為:思路和態度、技術基礎、聰明、經驗。 


透過和候選人聊他在專案中的定位和所做的事,很容易瞭解其對工作的態度和解決問題的思路,如果這方面有問題,其工作肯定做不好,我會快速淘汰; 我們會有現場編碼題目和演演算法題目,來瞭解候選人的基礎以及程式設計習慣,這方面決定他的工作效率。 


只要思路和態度靠譜,技術基礎扎實,基本就是可以招進來的做常規工作的。 
而是否聰明將決定他未來的技術成長潛力,技術經驗能體現其技術深度,經歷大專案的核心研發人員總能對技術有更深的理解,並且幫助團隊快速提升某一方面的技術實力。 當然後面2方面是可遇不可求的,一旦遇到這樣的人才我們都會重點培養。

高可用架構:微博平臺的新員工培訓辦得有聲有色,您作為大家的校長,一定有更深的體會,能簡單跟我們聊聊嗎?


李慶豐:微博的技術新兵訓練營我記得最初是Tim提出的這個想法,定位是讓新人能快速融入到團隊以提高研發效率,也能促進團隊的技術積累和傳承,也得到了公司很多領導及人力資源部門的支援與響應。後面主要是具體由我來負責實現這個標的。

 
根據我們的調研和分析,技術新人(無論校招還是社招)初到一個新的團隊都會出現一定程度的不適應,影響個人的工作和成長,進而影響整體的研發效率。技術氛圍好的團隊可能透過導師的言傳身教的方式來引導新人養成好的開發習慣,傳承高效的協作方式和技術經驗。但這個過程會很長,也會佔用導師的很多精力和時間,並且其效果取決於導師的經驗和水平。 


另一方面,由於新人對既有架構和技術體系的不瞭解,在日常工作中經常出現因為背景關係不清楚造成方案理解困難,甚至相關術語的理解不一致導致方案理解錯誤,進行影響整體的研發效率。

 
我們希望能有這樣一個平臺,能夠集合最優秀導師的經驗,讓新人能夠學習團隊既有的好的開發習慣和經驗,幫助新人快速適應團隊環境、汲取團隊經驗積累,從而能夠讓新人快速成長,提高團隊的整體研發效率和實力。 


所以,我們設計的課程內容主要包括2個方面: 


一是技術基礎部分,透過這個階段讓新人填平技術基礎短板,培養和團隊匹配的研發習慣,提高其研發效率。 

  • 透過研發環境和工具體系的介紹讓新人養成好的研發習慣,以及使用團隊已有的高效的研發工具體系,提高開發效率。

  •  透過分散式快取和海量資料儲存知識介紹,讓新人重新認識網際網路架構的挑戰、分散式快取和海量資料儲存方面的常見問題和有效的解決方案。避免新人出現常規錯誤和問題。 

  • 透過技術框架和常用元件的介紹,讓新人快速瞭解團隊常用技術元件的使用,為工作開發做好準備。

  • 還會有優雅程式碼及問題排查工具與方法的介紹,用實際案例來統一大家對優雅程式碼的認知,避免程式碼中的低階錯誤,提高程式碼質量。向大家介紹疑難問題的高效排查方法和工具,提高開發效率,也避免大家陷入痛苦的bug查詢和解決中。 


二是業務架構部分,重點介紹微博典型的業務架構設計,比如,資訊流架構、影片架構、通訊技術架構、機器學習架構等,讓同學們理解架構的問題場景和技術挑戰,傳承團隊的技術積累的同時,也為新人在後續業務研發中更好的理解業務架構,快速設計出更好的技術方案做鋪墊和準備。 


我們集合團隊中各個技術方向最擅長的核心架構師去整體相關的經驗形成課程內容,收穫的不僅僅是經典的新兵訓練營課程內容,還有對現有技術體系現狀的思考和改進,形成了團隊的技術積累和沉澱。並且我們的課程內容不是一成不變的,而是每期都由當期的講師重新進行整理更新和改進最佳化。 


收穫方面,很多人只看到了新人在這方面快速融入和成長的收益,其實講師的收益也是非常大,他們透過對這些內容的梳理和反思,自身對這方面的理解和改進的收益更大。這樣,這個活動的所有參與者都會有收益,活動辦起來自然很順利。 


到目前這個活動已經辦了6期了,基本上每年一期,從公司內外的反饋上來看,整體效果還不錯。

很慚愧,只是做了一些微小的工作!

高可用架構:在微博業務高速發展的時期,您肯定有很大的壓力。能否跟我們分享一下,這個過程中,讓您感觸最深的一點是什麼?或者說您從中學習到您認為最重要的一點什麼?


李慶豐:在微博這些年,一直在負責核心服務和戰略專案的研發,這些服務一旦有點問題對使用者影響都很大,領導老闆也都會直接關註,壓力確實很大。而這麼大的公司,跨團隊的服務依賴不可避免,整體上自己很難完全控制。 


一方面,我們需要透過服務治理,更靈活、高可用的架構等技術手段,讓服務盡可能的、更全面的保持穩定高效。 另一方面,我們也要能夠從公司戰略、使用者體驗的角度抓住服務的關鍵核心,進行重點保障。 


在資源有限的情況下,讓更多的精力和資源投入到更關鍵核心的服務中,於公司於個人都至關重要。所以,要主動去理解公司戰略以及體會使用者真實需求,不能都等著老闆找你說。

高可用架構:您在微博工作的這些年獲得了持續晉升,對於想在大公司發展並希望得到成長和晉升的年輕人,您有那幾條建議?


李慶豐:技術人的成長還是要靠技術實力的提升為基礎。年輕人有機會在大公司發展,更要看重自身的技術成長,在這個階段,成長比薪酬更重要。 所以,儘量去技術氛圍好的核心技術團隊,跟靠譜的領導。 

技術氛圍好的團隊會讓你保持對技術的追求,養成好的研發習慣;核心技術團隊承擔核心服務架構,能夠和優秀架構師進行協作和交流,這種潛移默化的影響非常重要,並且更容易得到更大的歷練機會。靠譜的領導總能在關鍵時刻給你好的建議和幫助,能夠讓你不斷突破瓶頸更快的成長,那晉升就變得自然而然。

高可用架構:那再請教一個工程師關心的問題,現在普遍壓力較大,如果想要自己在專業及收入上持續保持提升,最重要的一點是什麼?


李慶豐:對於網際網路技術人來講,這是一個最好的時代也是最壞的時代。 


好是因為網際網路的廣泛應用和發展,讓這個行業有了高速的增長,從人力需求到收入水平相比其他行業會高一些。 並且當今的網際網路技術非常開放,技術社群及開源社群成熟活躍,要想瞭解學習網際網路技術門檻並不高。 


壞是因為由於網際網路的高速發展,大量優秀人才湧入到網際網路導致競爭非常激烈,並且由於網際網路技術更新迭代非常快,導致網際網路老兵的技術經驗壁壘並不是很牢固。 


所以,要想持續保持收入的提升,就需要持續提升自身的技術實力即專業能力;能夠解決別人解決不了的問題,或者比別人更高效,總能拿到更高的收入。而要想提升專業能力就需要有開闊的技術視野和快速學習能力,能夠關註並學習實踐那些有前途的新技術,讓自己的工作更有效率。具體就是關註行業多和社群進行交流,並且積極結合自身業務去學習和實踐。

高可用架構:您是如何劃分架構師和技術經理在工作中的邊界?兩者在能力要求方面有什麼樣的異同?


李慶豐:技術人成長到一定階段的兩個方向,一個是技術專家,另一個是技術管理。架構師屬於前者,他要求在某一技術領域的有更深的理解和經驗,能夠帶領團隊在這個技術方向上解決攻堅難題、有所突破。技術經理屬於後者,雖然也需要有深厚的技術實力和經驗,但其價值是能夠有效組織團隊的資源形成更好的執行力。


架構師需要不斷提高某一領域的專業技術能力和架構經驗,以助其能夠帶領團隊更高效的解決專業技術架構問題。增強團隊技術實力。這決定了架構師的價值和未來高度。


技術經理需要更強的綜合能力,就像我前面所說,他需要的是透過自己的影響力來構建一個良性的團隊成長生態,能夠及時的瞭解團隊現狀,根據公司的戰略去協調資源,引導團隊走向技術實力、效率、發展的正向迴圈。

高可用架構:對於不同的管理風格,管理主導技術好?還是反過來更合適?您是如何平衡管理和技術的?


李慶豐:最近正好也在做管理方面的一些總結思考,我認為管理的本質是讓團隊更有效率的完成工作,管理的目的是讓技術的價值能最大化。


對於技術管理來講,技術是核心基礎,管理是組織方式和手段。


所以,我對技術管理理解是,首先要提高團隊的技術實力,包括營造濃厚的團隊技術氛圍,吸納優秀人才,提供好的歷練平臺,引導團隊成員快速成長,這要求技術管理者自身也要有深厚的技術功底和架構經驗,也需要不斷的去瞭解學習業界先進的技術架構和經驗來拓展自己的技術視野。


在此基礎上才能透過一些組織手段來提高研發效率。技術實力促進研發效率,效率提升為團隊調研新技術、研發效率工具、提升術氛圍提供了更多的時間和機會,進而會形成技術實力到效率到發展的正向迴圈。不能說哪一塊更重要,這是一個團隊成長生態的建立過程。作為技術管理者需要能夠瞭解團隊的現狀然後去構建這個良性的生態,讓團隊走向這個良性迴圈。

高可用架構:你現在還經常參與業務程式碼開發嗎?關於 CTO 或者 Manager 是否需要寫程式碼,業內一直都有爭議,您是什麼樣的看法?


李慶豐:坦白講,我現在參與直接業務相關程式碼工作較少,但會做一些核心架構元件的程式碼 review,以保持對核心架構的準確理解;也會寫一些工具類的程式碼來實踐一些新技術以幫助自己更好的理解新技術。

 
CTO 和 Manager 是否需要寫程式碼,我覺得不同的團隊場景會不一樣。 


如果團隊幾十上百人規模,技術管理者的只要職責是讓整體團隊有更好的研發效率和技術提升,更重要的是技術視野和協調組織團隊,以營造更好的技術氛圍和提升團隊整體的研發效率,這種情況寫不寫程式碼不重要,反而在程式碼上花費太多的時間會顯得不太正常。 


如果是創業公司或小團隊的 leader,一共團隊十幾人的情況,技術組織協調工作並沒那麼多。技術管理者還是需要寫些核心架構程式碼的,以保持對核心服務有足夠的把控能力。 


另外,是否需要寫程式碼和能不能寫程式碼是兩碼事,技術管理者至少要能夠寫程式碼(雖然並不要求一定比團隊中其他人寫的程式碼效率更高),或者保持對程式碼的足夠關註度。抽時間多去 review 下核心架構的程式碼,能夠幫助技術管理者及時瞭解團隊的狀態,甚至發現一些潛在的技術管理方面的問題。

高可用架構:對於網上聊得比較多的話題,IT工作者35歲的尷尬,您認為這種大齡尷尬是真實存在嗎?有沒有什麼方法避免呢?


李慶豐:網際網路技術的更新迭代的非常快,對於技術人員需要不斷學習新的技術需要耗費比較大的精力。所謂35歲的尷尬更多的是指這個年齡之後受限於身體狀況和家庭事務等因素,相比年輕人的時間和精力會差很多。 


如果技術人員到35歲還沒有能夠利用自己以往的技術經驗體系,形成自己突出的技術價值優勢,不能讓自己具備獨特高效的快速學習能力,純和年輕人拼體力,肯定是拼不過的,就會形成這種35歲的尷尬。 


要避免這方面的尷尬,就需要技術人員能夠把自己從前的經驗積累形成自己的獨特價值,同時形成一套快速學習和提高的方法。網際網路技術更新迭代雖然快,但具體到某一特定領域,其新舊技術的迭代還是相關性很強的。 


如果對具體某個技術領域有很深的理解,對其技術關鍵點和方向瞭然於胸,就能夠提前對其發展方向有很好的預期,對業界新技術的接受也會更容易。慢慢的就會成為這個領域的專家。開始雖然需要花費較大的精力和時間去達到這樣的成就,但對於後續的發展卻會相對輕鬆很多。 


當然保持對業界前沿技術的興趣和不斷拓展自己的知識邊界也很重要。但至少之前的經驗會起到很大的作用,不至於和年輕人純拼體力。 


無論未來是走技術專家路線,還是技術管理路線,這些經驗和能力都將讓你受益良多。

高可用架構:作為個人成長專場的出品人,您對GIAC有沒有什麼期望或者展望?


李慶豐:GIAC是一個非常好的技術社群,特別是在網際網路高可用架構和工程師文化方面匯聚了很多業界前沿的經驗和思路,對技術人員的成長非常有價值。希望GIAC能夠繼續保持自己的特色和優勢,更好的為技術社群和技術人提供更好的內容分享。

本期 GIAC 大會上,個人成長/技術管理 部分精彩的議題如下:


參加 GIAC,盤點2018最新技術。點選“閱讀原文”瞭解大會更多詳情。

贊(0)

分享創造快樂