#團隊精神
要管理好技術團隊光靠前面說的開發流程和工作方法還遠遠不夠的。我認為管理好團隊要做好三個方面:制度、物質和精神。 前面講的開發流程主要是制度方面的,良好的制度能讓團隊高效的寫作。物質方面就是要多為團隊成員爭取獎金、薪資等待遇,讓付出多的成員能得到應有的回報,注意也要做到公平公正。一個技術團隊光有制度和物質沒有精神也不行。
互聯網公司和傳統行業的區別在于,傳統行業做的事情都是明確的,可量化的, 加班加人就能加快進度 ; 而互聯網技術做的事情是不明確的,不可量化的 , 同一個功能 用心和不用心開發出來結果完全不一樣 , 不用心的人可以開發得表面上沒有問題,但可能沒有做好架構設計,不能支持高并發或者有安全漏洞,管理互聯網技術團隊其實就是要創造一個環境能讓大家用心工作。往往傳統行業的人管理不好技術團隊,他們還是想著能加班加人加快進度,以傳統的命令式方式管理, 很難有一個用心工作的環境。只是制度+物質 能管理好工廠里的流水線工人,但很難管理好技術團隊, 我們要為技術團隊營造一個能用心工作的氛圍,必須還得有精神,這樣才能是一直有戰隊力有激情的技術團隊。
作為技術主管,自己的行為和人格能影響整個團隊,我認為一個技術主管應該有以下行為:
## 認可
團隊成員做得好的地方,一定要把你的贊揚給他,多給他認可,如果你不積極響應同事的努力,慢慢同事就沒有積極性了。作為一個程序員,成就感是一個很大的動力。他們就是能解決別人解決不了的問題,能寫出很炫的程序,然而如果做好了沒有人認可往往會失落、會打擊積極性。
在一些公司,因為老板不懂技術,產品做得好的時候不會關注程序員,不會覺得是程序員的功勞,最多夸夸產品經理。但產品出問題有bug,就痛罵程序員,認為都是程序員的問題, 老板如果認為做得好都是應該的,做不好都是程序員的問題。這樣的企業不會有一個好的技術團隊。
技術主管要少說“不”,多說“好”。不要同事每提一個方案第一反應都說“不行” ,第一反應總是找方案的問題, 要先看到同事提的方案的可行之處, 即使方案有問題也要先看看問題能否解決。即使真的同事提的方案有問題,必須說“不行”,也要充分說明理由,讓同事信服。
想否定同事方案的時候,不要直接說“不對”,告訴同事可以有另外一種方案。 比如同事向你提出了一個A方案,你覺得應該用B方案,如果你先說對方的A方案不對,對方有抵觸心理,一直想證明A方案是對的, 你再說B方案時,不一定能聽進去。 我們先不要說“不對”, 而是先告訴對方還可以有B方案,這時候應該你沒有說A方案不對,對方能聽進B方案, 說完后再對比A方案和B方案的區別,再說可能B方案更好一些。
看見做得不對的地方同時也要看見做得好的,比如我們發現同事代碼注釋寫得很少,可以這么說:“這次單元測試寫得不錯,下次注意把注釋寫好就可以了”,讓人覺得不是全都做得不好,只是一點不好已而,然后才有動力去改進。
主管對同事的認可,是同事們做事的動力,不要吝惜自己的認可。然而作為一個技術主管,本身就是程序員出現,可能性格也內向,可能很難說出贊美別人的話。甚至在自己下屬得到別人表揚的時候自己還會嫉妒。人都總想得到別人的認可,當看見別人得到認可會嫉妒是正常的,作為技術主管如果還想向外獲取認可,自己的內心都還沒有得到滿足時,無法做到能向外輸出認可給別人。這時我們需要調整一些觀念,調整人生態度,讓自己的行為不再是索取而是輸出,希望在后面的“人生篇”能給大家一些啟示。
除了認可,該批評的時候還是要批評,如果團隊成員違反團隊規范或出現嚴重的錯誤,比如變量沒有安全過濾,出現一次就說一次,直到改了為止。如果說了兩三次都還不聽,有的技術主管就不管了,他們不愿強迫人做事,害怕得罪人。但一些原則性的問題如果自己不堅持,團隊成員就很難遵守了。
## 樂觀
面對“半杯水” 技術主管要說“真好,還有半杯水”,不要說“糟糕,怎么只有半杯水了”。技術主管要把樂觀傳遞給團隊,讓團隊成員覺得“可能實現”而不是“不能實現” 。
比如遇到項目工期很趕,可能不能在規定時間完成,團隊成員們都沒有自信, 而這時候如果技術主管也沒有自信,那么就肯定不能在規定時間完成了。
程序員大多內向,容易缺乏自信。只要有希望,就要樂觀,要有自信,技術主管要給予大家自信。
## 關懷
作為技術主管應該多關懷同事,了解每個人的需求。
技術主管不要只想著公司的利益,需要考慮每個團隊成員的利益, 知道他們每個人的理想、目標、想有哪方面的提升。要讓他們實現個人價值時也能為公司創造傳值。
主管要知道每個人的困難,麻煩解決他們的困難,理解他們的難處。
然而,主管如何知道大家的理想和困難?同事們會把真實的想法給主管說嗎?技術主管不僅要能和同事們工作在一起,還要能和大家玩在一起,大家愿意和有親和力的主管談心,不愿意和高高在上的主管說真話。
每周花點時間找同事們一對一溝通是一種很好的方式。不要選辦公室這種嚴肅的環境來聊天, 到公司外面找一個輕松的環境。 不要一開口就說工作的事情,先聊聊家常,一開始應該問對方那種完全不需要思考就能夠回調的問題,例如 “中午吃了什么?” “搭哪一班車來公司” “昨晚回家的時候有沒有遇到下雨” 這么做的目的是讓對方開口說話,在閑聊的過程中營造有利于談心的氣氛,接著再進一步詢問更深入的問題。如何能夠先暖場再切入正題的話,對方應該就會告訴你他的煩惱、不滿和疑問。當對方發牢騷的時候一定要多聽對方說, 要表示理解對方和認同對方。 比如同事抱怨“產品經理又改產品需求”, 而你知道這個也是必須改的需求,這時候不要否認對方的抱怨不對, 先說“恩,是,的確有這樣的問題”,引導對方把抱怨的話都說完,然后再告訴他為什么要改產品需求,爭取他的理解。 有時候對方的煩惱只是想能找一個出口發泄出去,即使他說的煩惱,你不能解決, 他說出來就會好很多。
經常和同事談心聊天,還能形成“至下而上”的決策: 一個好的方案不是主管提的,而是下面同事提的;一個問題不是主管發現的,而是下面同事發現的。
## 跟我沖
一位朋友告訴我共產黨為什么能打敗國民黨,在打仗的時候共產黨的軍官都是說“跟我沖”,而國民黨的軍官說“給我沖”,國民黨軍官不是帶著士兵沖在前面,而是讓士兵們先沖,自己躲在后面。作為技術主管,也要“跟我沖”,要做好帶頭模范, 不能同事們辛苦的做事,自己卻很閑。
技術主管要給團隊成員們信心,只口頭上還不夠。比如項目工期很趕時,你只是口頭樂觀的說“沒有問題,我們一定能完成的”,但如果自己不實際行動開始干也是很難帶動大家。
帶頭行動也是教人的最好方法,我遇到過有同事每次遇到bug解決問題都要花很長時間,每次遇到bug的第一反應是認為自己解決不了,不知道該怎么辦。我給他說過多次解決問題的方法,也是前面本書講過的方法:先找錯誤碼錯誤信息,用排除法縮小bug的范圍等等。但他就是不能把這些方法應用起來,下次遇到問題還是不知道該怎么解決。我意識到光說無用,需要用行動告訴他怎么解決問題。然后又一次他遇到問題時,我親自動手給他解決問題,然后在旁邊看,在我不熟悉他寫的代碼的情況下 也幾分鐘就找到了bug的原因。從此之后他也能自己解決問題了。
技術主管不要想著自己能輕松,自己可以不用做事,對同事們提的問題不要用應付的態度。比如同事問你某個方案可不可以,你要是看都不看就回答“隨便,都可以”, 你這樣馬虎了事的心態也是能傳到給團隊其他成員的,后面整個團隊做事都馬虎做事了。
技術主管注意也不要出現孤軍奮戰的情況,把自己封閉起來做事,團隊其他成員都不知道自己在干什么, 這樣起不到帶頭作用。
## 不專制
我們要在團隊營造一種“至下而上”的氛圍。然而如果主管太專制,什么都是自己說了算,不聽取大家的建議,那將很難形成“至下而上”的氛圍。
開會討論問題時,主管要先聽其他人的建議,自己最后在發表觀點。 如果主管先發表觀點,大家即使有反對意見,但因為主管是領導,也不好反駁,不會說出自己真實的想法。每次開會討論問題,可以先讓同事們輪流兩圈發表建議,這兩圈主管都不發表任何看法, 第一圈每個人說自己的建議, 第二圈每個人點評一下全部建議,這時候對所有人的建議都了解,也對自己的建議有再次思考,可能會發現自己的建議不太行,某個人的建議更好。第二圈點評后主管就能知道整個團隊趨向于什么建議,再綜合大家的建議,發表自己的觀點。主管不要光用自己的觀點, 最好能再融合多個人的建議,能使方案更完善,這樣其他人也會覺得自己提的建議被采納,下次才能更積極。 對不能采納的建議,要充分說明原因,讓同事認識到建議的不足,幫助他提升,讓他有信心下次提更好的建議。
技術主管要相信群體的力量,不要有問題只是自己一個人思考,可以把問題都告訴大家,讓大家一起思考。一個人想問題難免有想不到的地方,一群人想問題會更加全面。
技術主管除了要注意自己的行為和人格以為,還要引導團隊成員形成以下心態:
##產品心態
我認為程序開發有兩種心態:外包心態和產品心態。 如果是外包心態,想著按產品經理說的開發就行,表面上看著沒有問題,不注意程序可讀性、擴展性、安全性,產品經理沒有說的事情就不做,總是認為是在給別人開發產品。
如果有產品心態,會站在用戶角度思考,會積極和產品經理溝通,反饋產品的問題。產品經理邏輯思維沒有程序員強,往往容易設計漏一些環節, 比如當數據為空的頁面,很多時候程序員自己處理了在頁面顯示幾個字 “暫時沒有數據”。 但如果是站在產品的角度出發思考,數據為空的提示頁面要不要設計得友好一些?要不要引導用戶做其他操作?發現有頁面產品經理設計漏掉了及時向他反饋,讓他去思考這些問題。
有產品心態的程序員還會在產品上線后關注用戶使用產品的情況,主動和用戶接觸。每個人都應該去了解用戶,不能在用戶都不了解的情況下站在自己角度提產品問題。程序員往往站在自己角度出發認為某個功能開發出來肯定沒有人用,而功能開發好后卻有大量的用戶使用,大家在開發功能前不要急于下判斷,要用數據說話。
技術主管要引導團隊成員養成產品心態,不是為別人做產品,這是為自己做產品。
##用批判性思維討論問題
在討論問題時,很多人的目的就是“自己的觀點不能被否認”。為了維護自己的觀點,會拿一些極端例子做論證,“萬一,機房起火了怎么辦?” ; 或者人身攻擊的方式 “這個人能力不行,他提的方案不能用”。 他們認為好像自己的觀點被否認了就很沒有面子,不管怎么樣都要反駁別人的觀點,維護自己的觀點, 豈不知越是這樣越讓自己難堪,在所有同事心目中也沒有好的印象。
技術主管要讓大家都知道:所有的討論都是“對事不對人”,并不是說你的觀點被否認了就是大家不認可你這個人。
技術主管要引導大家用批判性思維的方式來討論,批判性思維就是大家不要做謬論,不要拿極端少數的例子來維護自己的觀點,要分析每個觀點的論題、論據、結論是否充分合理。 也不要光提觀點沒有論據, 光說“我覺得有損公司利益”,“我覺得不行” 而又說不出理由,是很難讓人信服的。
中國人從小接收的都是服從性教育,認為老師說的就是對的,政府說的就是對的。 學校很少注意培養人們批判性思維,所以這塊我們從小就欠缺,我們要好好去了解一下, 大家可以在網上搜索更多批判性思維的資料,推薦一本比較好的批判性思維的書《學會提問》大家可以看看。
##不等待、不欺騙
團隊成員容易出現這樣的現象: 總是等待著被分配任務,自己不主動找事情做,任務完成了也不說,等主管問才說任務完成,總想在這等待的狀態下能偷點懶。一些團隊按敏捷開發的流程,每天有站立會議,這很容易就會變成形式主義,站立會議每天要說自己做什么,有的成員本來沒事做了也要編點事來說。一些團隊要求每天或每周提交工作日志, 團隊成員也容易作假,編造一些事情在工作日志的。本來一件事情今天能做完,還要留到明天,因為害怕明天沒事做。如何改善這些現象,讓團隊做到“不等待,不欺騙”?
技術主管要引導大家做到坦誠。沒有事做就是沒有事,沒事做光榮! 在站立會議的時候能說 “我今天沒事做,大家有什么事可以找我”的人,一定能贏得大家佩服,大家會覺得他工作效率高,這么快把事情都完成了。技術主管鼓勵大家任務完成后可以利用工作時間來學習。
##解決問題的心態
當用戶反饋產品有bug時,程序員第一反應往往是以下兩種:
吃驚:怎么可能有問題!
自信:這不是我的問題!
第一反應不是要解決問題,而是想逃避責任。其實很多時候技術主管都不是在追究責任,而是想趕緊解決問題。 即使有責任,往往也是技術主管一人承擔,他自己接受用戶或老板的痛罵,而不會牽了團隊的其他成員,不會說別人做得不好。
技術主管要引導團隊成員先解決問題,不要自責。
首先,問題已經出現了,不要吃驚,問題已經出現了,這是事實。
當團隊多人協作開發的功能出現bug,團隊成員容易說“這不是我的問題”, 前端程序員說 “這不是我的問題,肯定是后端接口的問題。” , 后端程序員說“我接口沒有問題,肯定是前端的問題”, 兩人都認為自己沒有問題,都不去查問題。
當你說“不是我的問題”時,需要證明真的不是你的問題。前端程序員馬上查一下程序,排除是自己的問題,并看看后端接口錯誤在哪兒,把接口返回結果截圖告訴后端程序員。 后端程序員也要立馬查一下自己的代碼,確認接口返回值正確。
遇到問題,第一反應應該是所有人都行動起來查問題,不要再推卸責任了。
##換位思考
程序員容易瞧不起其他崗位的人。
首先是程序員和產品經理容易互相瞧不起。程序員認為“產品經理整天只會畫原型,產品的實現還得靠我”。 產品經理認為“產品想法都是我想的,程序員只是實現我的想法的工具”。
技術主管要引導團隊成員換位思考一下。
產品經理并不是只是簡單的畫原型,他們要做用戶回訪,要做數據分析,要做競品分析,做了這么多事后才能畫出產品原型。程序員去做產品經理做的事也是有難度的,比如用戶回訪,怎么保證能讓用戶接你的電話,不掛你的電話,能和你反饋產品的問題?程序員要真心的認為“產品經理很厲害”。
同樣,產品經理也不要認為程序員只是簡單的實現你的想法,他們要做需求分析、難點分析、做程序架構,保證程序的可擴展性、安全性,還要考慮高并發的問題。程序員做得遠比產品經理想的要多。產品經理也要真心的認為“程序員很厲害”。
程序員還容易瞧不起業務人員,覺得程序員比業務人員辛苦,認為業務人員每天只是嘴皮子說話,工作太輕松,業務談成后什么就都不管了,而后面程序員要花大量時間來實現業務人員談下來的業務。其實業務人員也不容易,他們在談業務之前要了解客戶的公司,了解客戶的產品,猜測客戶的痛點。每當我們下班了,業務人員可能還在陪客戶吃飯喝酒。業務人員要承受屢次失敗,談了10個業務有7、8個都可能不成功。程序員要真心的認為“業務人員真心不容易”
程序員之所以容易瞧不上產品經理、業務人員,我認為是他們給程序員帶來了事做,好像是給程序員找麻煩了。但你真的希望在公司沒事做嗎?
技術主管盡量做得上面說的幾點就有可能營造一個能讓大家用心工作的環境。
另外還想提醒大家:做管理都會面臨混亂,不可能做到完美,主管要學會放權, 不要想著自己親自解決每個問題, 主管只負責發現問題和提出問題, 讓團隊里面的精英們去解決問題,相信他們能解決得很好,也許還會超出你的意料。面對問題,精英們會覺得是挑戰,主管應該給他們展示的機會。