天天看點

蘑菇街頂天:真誠與尊重是技術團隊的管理要點

如果把高品質的 it 技術産出比喻成汽車上路,那麼技術團隊本身就可以看成是馬路。它是基礎設施,平時不會得到太多關注。然而,想要汽車上路,那麼這個路就要先造好。

關于技術團隊的相關話題,大家也都是在摸索中總結出怎樣做是好的、怎樣又是不可行的;但是可以确定的是:團隊這個基礎設施的建設是不容忽視的。

本次技術團隊訪談,infoq 邀請了美麗聯合集團副總裁頂天(曾憲傑),請他分享他關于技術團隊話題的一些了解與思考。本文即由采訪整理而成。

業務速覽

蘑菇街是一個專注于為時尚女性消費者服務的電子商務網站,從一開始的導購平台,到後來轉變成為導購加女性垂直電商平台,一路走來,受到萬千年輕女性的青睐。蘑菇街也随着社會潮流的不斷發展而在相應地提升它給使用者帶來的服務體驗,目前它的業務有幾個特點,包括内容驅動的“新時尚全媒體”、解決女性使用者搭配痛點、潮流好貨、品質更新、創新“網紅 + 直播 + 電商”模式、搶占“短視訊 + 電商”新風口。

技術團隊發展曆程

在業務不斷發展的同時,蘑菇街的各個團隊也在穩步發展着,其中,關于技術團隊的發展,我認為,從最初成立到現在,技術團隊經曆了兩個大的階段。

第一個階段

這個階段從研發團隊成立到 14 年年底,網站主要基于 php 技術建構,這時主要的目标是能快速支撐業務的變化與發展,每個研發同學的分工不是特别細,大家都一起維護着一個比較大的主站應用。

團隊也沒有設定專職的測試崗位,新功能上線前主要靠開發自身以及和營運、産品一起來測試。一切都是為了能夠更加快速。這個階段,溝通協作是最高效的階段,招人方面也相對難,也需要團隊的成員能盡量具備多重技能,一些方案沒有辦法做得特别深入,更多還是以解決現有問題為主。

第二個階段

公司也在 13 年年底,14 年年初從導購平台更新為導購加電商的平台,并且開始做支付相關的功能,業務變得更加複雜。

随着業務的發展,人員也相對之前有了增加。這麼多人在一起維護比較集中的系統,效率變低了。而且讓一個同學去全面了解整體業務也變得很難。

對接業務的團隊垂直化、支撐的團隊平台化是這個階段的一個變化。應用數量也開始在這個階段變多起來。每塊業務有持續、明确的團隊對應,負責具體業務線的開發工作,而底層有通用的業務和技術平台來提供支撐,避免了很多重複建設。

并且這個階段考慮到業務自身的複雜性,建立了專職的測試團隊來保障品質。後端系統開始從集中式應用走向分布式應用,這個變化主要是為了實作前面提到的業務團隊的垂直化和支撐團隊的平台化,這個時候系統已經不再是集中的一個應用了,變成了一個分布式系統後,我們就需要解決諸如應用間的同步、異步通信等問題。底層的資料庫也遇到單個業務需要多個庫的情況,整體就進入了分布式系統的時代。技術棧也從 php 遷移到了 java。

在前面提到的工作之外,近期從整個研發部的層面看,會有一個重點:

提升資源使用效率

當我們的線上機器數不多的時候,投入人力來研究如何提升效率的收益會比較有限,而随着業務規模的擴大,我們線上機器的數量也持續增加,在這個階段,必須要重視線上機器的使用效率了。

對于我們來講,提升機器效率有兩條路,一個是目前每個大廠必然選擇的道路,就是做混合的部署,把對資源的需求不同 (比如有的應用是需要大記憶體,另外的是需要很多 cpu),或者對同樣資源需求的時間點不同 (都是 cpu 密集的,但是有些應用白天特别消耗 cpu,有些是晚上比較消耗 cpu) 的應用做混合部署,目的是讓全天機器的各個資源都不會明顯閑置。

另一個方式是彈性,對于線上系統來說,每個應用在一天内的壓力是波動的,那麼理論上在高峰的時候需要更多的機器,在低峰的時候就需要較少的機器,那麼如果我們的系統可以比較靈活地做到彈性 (事實上對無狀态的是比較好做的),那麼是可以提升資源的使用效率的。

這裡有個問題,比較低峰的時候需要的機器少,那高峰的時段多使用的機器怎麼辦?這個需要的就是私有雲和公有雲的結合。對于大廠,這一條路就沒有辦法選擇了,他們更多的是采用第一條路,我們目前主要投入在第二個方向。

如何快速融入團隊 不同團隊間的融合

說到如何快速融入一個團隊,我這裡舉個例子。16 年在美麗說和蘑菇街融合之後,我帶領技術團隊對蘑菇街、美麗說的底層架構及背景系統進行了整合。融合後,整個技術團隊是一個垂直加水準的結構,垂直指的是有技術團隊對應具體的業務線,比如美麗說的業務是一個獨立的應用開發團隊負責,也隻負責支援美麗說業務的發展。而蘑菇街也是一個獨立的團隊負責蘑菇街的業務的相關開發工作。

在蘑菇街的業務開發團隊内部,對于電商、導購又會有團隊上的分工,會分成獨立的團隊來對應,而不論美麗說還是蘑菇街的業務,或者蘑菇街的細分的不同業務,都會有需要共同解決的業務的需求和技術上的需求,比如大家都需要用到使用者的注冊、登入、管理等功能,比如都需要用到交易、支付、促銷等支撐,這些就不需要每個業務線的開發同學各自做一遍,而是會形成通用的業務平台層來解決。負責這些不同業務平台層的團隊就是水準的。

在偏技術方面,怎麼解決分布式的問題,解決存儲、緩存的問題,包括虛拟化、大資料平台的問題,對于不同的業務線也都是通用的,那麼也會由專職的團隊負責,對上層的應用開發團隊提供服務。

在整體技術架構确定後,就會遇到有同學的職責會發生變化,以及可能的團隊融合的問題,對于做應用開發的同學來說,因為都還是負責原來各自的業務開發,融合更多的是技術體系的融合,會需要學習底層平台的工作。

而之前負責偏通用的業務平台或者技術平台的同學,會存在着技術和團隊上的融合,這個過程,最重要的是能把我們希望融合後的技術架構說清楚,以及融合後的分工說清楚。

新人融入團隊

前面提到的融合是很少的,更多的融入團隊是一個新人(不論應屆畢業還是之前有過工作經驗)加入一個公司。我自己之前也經曆過多次加入一個新團隊,最近的一次就是我自己加入蘑菇街。我覺得對于新人來說最重要的是一種開放的心态。

每個人都會有自己的積累和習慣,但是不論你曾經有多少經驗和積累,在融入團隊的時候,需要開放和主動。每個人都有自己的經驗和經曆,也都有比别人有優勢的地方,但是到了一個新的環境,我們應該先把自己過去的經驗和經曆放一放,更多地去了解現在的環境和團隊,看看現在的環境有什麼急需要解決的問題,現在的團隊有些什麼樣的積累和缺失,然後看看自己如何能夠給到幫助。

對于一些和自己之前經驗不同的做法,應該是空杯心态去了解下原因,千萬不要覺得和自己之前不同的做法就是有問題的,不能有這個預設。同時這個過程中需要更主動一些,最好也通過一步步地解決問題來建立互相的信任。

真誠與尊重是管理的要點

關于上司如何去對技術團隊進行管理,我覺得最重要的是 真誠 和 尊重。

我個人雖然帶的團隊的人數也算不少,但是我并沒有去系統地學習過管理。從我的角度,我認為帶團隊不是去管,而是去幫助,應該是在思考如何帶着團隊拿結果的過程中幫助團隊成長,幫助團隊中的成員成長。

而對每個成員,需要的是真誠和尊重。最初開始帶很小規模的團隊,更多的考慮是如何把事情做好,真正放在成員上的心思和時間比較少,放在團隊成長發展上的時間也少,而現在則花在成員和團隊成長上的時間會更多。

相對于之前,目前更多的是希望能通過一些機制來保障團隊和成員的發展與成長。比如在我目前的幾百人的團隊中,有直接向我彙報的,有不直接向我彙報的 leader,然後更多的是一線員工。那麼對于直接向我彙報的同學,更多的是平時及時地溝通,包括周會以及周會之外的一對一的溝通。這些溝通是以解決問題為主的,包括他們自己團隊的問題以及具體在事情層面上的問題。

對于不直接向我彙報的 leader,主要解決的是 leader 成長以及 leader 之間熟悉度的問題。leader 的成長,一方面由他直接的 leader 回去關注和培養,另外從研發部層面會有 tld 這樣的一個 tech leader 發展計劃來承載,在 tld 中會有教育訓練的形式,也有沙龍的形式,内容更多圍繞的是偏管理方面的話題。

另外一方面會通過整個研發部的 leader 一起團建的方式去拉近大家的距離。而到一線員工,給到更多的是内部的教育訓練和分享的機會,尤其是分享會更多些,大家可以根據自己的興趣去參加。并且在今年開始開放了下午茶,給平時不太因為工作能跟我有交集的同僚一個和我 1 對 1 溝通的機會。盡量可以沉澱一些機制,而不是去非常依賴我或者某個 leader 自身。也就是說希望能造鐘而不是僅僅報時。

選拔成員

上邊說到的是團隊内成員如何去管理、如何去融合,關于技術團隊,還有一個重要的點也不能忽視,那就是招人。如何招人,招什麼樣的人,這是個很多公司上司需要好好考慮,并且也很難決斷的問題。

怎麼組建團隊

先從廣的角度來說一下團隊組建需要什麼樣的人。對于這個問題,我的看法是從我們要解決的問題出發,找合适的人。我們組建團隊,成員要麼來自于已經工作了有經驗的人,要麼來自于即将走出校園的應屆生。對于新組建的團隊,一般來說肯定需要先從市場上找有經驗人的來先作為團隊的種子。而對于我們這些已經過了初期組建階段的團隊,我更傾向于主要靠應屆生來補充我們的隊伍。

更傾向于應屆生的原因是,每年都會有應屆生要找工作,這本身就是一個比較合适的時間點,而對于社招,很多時候是需要看機會的,可能是因為要換城市,或者說原來的公司業務上有較大的調整等等因素,會導緻一些在職人員選擇看新的機會。

說到從問題出發,找合适的人,這裡面首先需要的就是要定位清楚自己希望建立的團隊來解決的問題是什麼。比如如果說現在的業務到了非常大的規模,然後也做了很多的嘗試,可能這個時候是需要付出比較大的代價找到業内頂尖的科學家來解決具體問題。

而如果業務規模沒有到這個階段,即便願意付出很多也未必能吸引到這樣的候選人,因為候選人自身也有自己對于崗位機會的訴求。而一定要找這樣級别的候選人,很可能最後花了很多時間也沒有找到。

我說的合适,更多的是崗位機會、崗位要求和候選人的經驗和訴求的比對。從我的角度,候選人希望得到的機會和公司可以給與的成長空間的比對度是最重要的,我講的合适也是指的這個部分的比對度。

應聘者需要什麼能力

具體到對一個應聘者的要求,下邊我以招聘架構師為例,簡單說一下我個人覺得主要應該關注的應聘者的幾個能力:

1、邏輯的嚴密性。架構師的工作是要去負責某個甚至多個系統的整體架構的設計,這是整個系統能正常運轉的基礎,如果這個部分出現了纰漏,那麼帶來的問題會影響很大。

架構師主要負責整體系統的架構,這就像造房子的整體結構一樣,并且在做架構設計的時候,很多是在白闆上或者腦海中的推演,這個時候的邏輯上的疏忽和遺漏,帶來的可能就是開工後的返工,會有很大的成本。

2、對關鍵細節的把控。架構師不是飄在天上的,自己設計的架構的關鍵細節是需要非常清楚的,在架構設計完成後,關鍵部分的功能實作方式可能是有不止一種的,不同實作方式則有可能對穩定性、性能和擴充性等有不同的影響,而且關鍵細節本身也決定了實作的品質,架構師是必須要關心的。

3、溝通能力。相對于具體代碼,溝通架構的要求會更高些,這就需要架構師有比較好的溝通能力,能夠把設計的架構講清楚,把其中關鍵的環節和要點講清楚,尤其在網際網路行業,軟體工程的過程不會有非常多和嚴格的文檔的工作,這個時候就要求架構師一定得把架構設計溝通清楚。

4、開放的心态。能接受别人的意見和建議很重要,我們很多架構師也并不是什麼樣的系統和問題都經曆過的,在工作過程中很可能會遇到關于架構上的挑戰和探讨,這個時候,如果很封閉,就可能錯過了别人給的好建議,這樣在後期發現再改,成本就很高了。而且架構設計,除了自己在實踐中提升,互相的切磋也是互相學習的好機會

展望

對于團隊今後發展的一些想法,我覺得主要可以從三個方面去談一下。

1、團隊始終需要保持對行業熱點與發展趨勢的敏銳度,以及對新技術的可實踐思考;關注技術與業務場景的結合,更友善在合作過程中上下遊的溝通。

2、成員在寬度和深度的發展。相對于規模很大的公司,我們目前的階段是需要成員在技能上要擴充自己的寬度,并且在我們場景下去深挖技術。美聯現在還不是一個很大的公司,有一些業務還在探索,需要快速地嘗試。

我們需要的是每個同學有自己的專長但是又對周邊的技術有所了解,這樣可以快速響應業務的需求,而不是去做過于細緻的分工,每個人就守着自己比較窄的一塊地,把這一塊的事情朝着 100 分去做。

3、希望每年可以有比較大比例的新人補充來自于應屆生。前面在講建立團隊的時候也提到過,每年都有應屆生要進入工作崗位。這是一個固定補充新鮮血液的來源和時間,應屆生本身的可塑性更好,而且我們對自己的培養體系也比較自信,是以對于比較批量的招聘,還是會以應屆生為主;而社招,更多是解決我們需要的戰力的問題。

花若盛開,蝶自飛來,你若精彩,幸福開懷!2020年12月11日-18日