血的教訓!技術團隊管理應該避免的九大“坑”!
創業公司技術團隊如何組建?技術團隊管理過程會遇到哪些坑?如何填舊的坑,如何應付互相傷害,如何不給自己挖坑?
以下經驗不論是對創業團隊或小公司來說都有參考價值,尤其是對于一些非技術產品老板下的技術負責人,所謂早看早得利,誰用誰知道。
要成為創業公司的技術 Leader 或技術合伙人,從自己心理上再不能只是一個單純的碼農。
許多朋友和我吐槽,這些 CEO 們看見一個認識的程序員、工程師就會曉之以情動之以理說服來公司做 CTO,結果失敗率非常非常高。
不管是在大公司還是小公司,做產品一定是靠一個團隊,優秀的技術團隊一定不能有個人主義的氛圍。
技術 Leader 要思考的不是某個功能模塊的代碼如何實現,而是優先考慮如果打造一支“短小而精悍”的核心技術團隊、如何搭建高可用的技術框架、如何高效打造出優秀的互聯網產品。
組建技術團隊的正確“姿勢”
如何建立初期技術團隊?以下的經驗或許有參考意義:
***,根據技術解決方案和個人做事風格去挑選和掌控團隊
這點很重要,比如曾有一家拿了天使輪的團隊,CEO 是從阿里巴巴出來的“女神”,項目啟動不到半年,原技術 Leader 因為各種原因走了,后來她急著想拉我替補進來。
我只提了一個條件:“阿里巴巴的文化我不懂,如果我進來,我可能需要按照我自己的風格去管理。”
但是公司的負責人否認了我,說:“CEO 是從阿里巴巴出來的,團隊我們會自己去帶,你只負責寫代碼和解決技術問題就好了。” 于是我沒有繼續往下談了。
其實這種事情沒有對錯,這只是我個人的做事風格和原則。
第二,前期的技術團隊也許談不上管理
但是基本清晰的組織架構和簡單的績效考核制度必須到位。
第三,前期的技術部門***用“彈性工作制”來管理
團隊越小越應該實施這樣的制度,因為不拘小節、沒有時間概念的技術研發工作反而效率更高。
第四,發現“蛀蟲”立即砍掉
我之前帶過一支團隊,所有技術成員沒日沒夜的開展著開發工作,大家根本沒有時間考慮福利、節假日這些事情(當然、這些東西應該是由公司主動做就可以了)。
有這么一個人,事情還沒做好就不斷跟我斤斤計較、談各種條件,多上一個小時都覺得自己委屈,工作緊急時候卻偷偷占用公司網絡資源下載電影,還經常發出消極的言論、做事慢效率低下。
這種人就像一個“蛀蟲”時不時折騰得讓大家都不爽,負能量滿滿,影響他人不說,團隊破壞性極大,于是我立馬讓他工作交接對其勸退。
第五,技術 Leader 要引入或者培養自己的左膀右臂
CEO 要有自己的軍師和大將,CTO 或技術 Leader 也一樣。
第六,團隊成員要有責任心、人品好的,而不是要***秀的、浮躁的
令我感動的一段經歷,團隊里有個工程師下班坐車回到一半,就突然給我發微信說,有個事情沒做好,問我在不在公司,他要坐車回來重新做一下。
他不是團隊技術***秀的,但他確實是最能吃苦和有責任心的,這是我喜歡的員工類型之一。
第七,技術團隊一定要有定期的一對一溝通
技術團隊不論大小,團隊里的直屬上司一定要有定期的溝通制度。
我也是程序員出身,我知道程序員是以“悶騷”的特點著稱。對于長期的低調、苦逼的 IT 技術宅男,沒有定期的心理疏導工作,會出現很多尷尬的問題,不信你認真觀察試試,這也是團隊磨合的一個重要工作。
技術團隊管理應該避免的九大“坑”
那么問題來了,初創技術團隊需要管理嗎?技術團隊如何做管理?
老夫掐指一算:當然需要!尤其是技術團隊,只要大于 3 個人,就必須有管理。這個管理包含:代碼管理、項目管理、團隊管理等角度。
見過太多失敗的案例了,大多數的技術團隊出現的效率低、團隊一盤散沙、開發沒有方向、團隊不穩定等問題都是因為缺乏管理或者管理不到位引起的。
如何做好技術團隊管理?我沒事閑的時候,腦子里總在思考這個問題。將來有一天我成為一家創業公司的技術負責人,哪些錯誤應該是避免犯的呢?
人從一種狀態到另一種狀態的時候,先思考的不應該是如何快速去做,而是如何避免犯一些錯誤。
為了避免我太跑題,先設置一個限定,比方一個創業團隊近期融了一筆錢,需要快速的搶占市場。
這時需要有一個技術負責人(已談好全權負責)來帶領研發團隊更好的支持業務發展,這個團隊原來的技術人員沒有超過 5 個人。
善待原有技術團隊
這個產品能夠成功融資,原有技術團隊肯定付出了很多。也許他們技術能力并不突出,也聽不懂你的技術術語,還可能沒有做過高負載的網站。
但是他們肯定足夠辛苦,因為一直在默默付出,對待他們要抱著幫助的心態,不要一上去就提出批評或者質疑,不要提擴展性、可維護性這樣很虛的概念。
而要了解目前遇到了什么難題,你能夠坐下來仔細和他們分析,并實實在在幫助解決問題,技術人員都很單純,你幫助了他們,就會服你,會尊重你。
假如技術負責人不能幫助他們,那就不要去添亂。比如用行政的命令要求他們遵守代碼規范,畫架構圖,進行代碼審查,不要有高高在上的感覺,你過來是解決問題的,而不是來生產制度的。
就算你看到了技術團隊有很多問題,也要逐步的去優化。因為在現階段,原有團隊是最了解目前的技術組成,不要試圖全部推翻,也不要用新來的人去替代他們,尊重他們,幫助他們,才是***的方式。
整鍋挖來一個團隊需要慎重
很多公司負責人找技術負責人的一個標準,就是看這個人的人脈,看他能不能找到很多技術人員,快速搭建技術團隊,整鍋拉來一個團隊。
這個思路是沒問題的,公司負責人需要放權,專業的事情交給專業的人去做。
可是假如技術負責人招的人都是原來的朋友、同事,形成家族式技術團隊,那么就要警惕了。
首先這個用人成本非常高。招來的人并不完全是因為技術負責人的個人魅力而來的,他需要平衡是否值得,所以高工資成為必然,當然假如確實是高水平的技術人才,這也是合理的。
其次以關系這種方式引進的員工,技術水平肯定良莠不齊,很多人因為和技術負責人良好的關系而進來的,更要命的是技術負責人引進人只是為了證明他的人脈那就危險了。
所以技術負責人只要覺得一個人聽話,這個人可能就會被引進,而不是以技術能力而衡量了。
另外,一般的技術負責人年齡可能都不小了,而必然原來的同事年齡也不小,他們原來可能是技術人才,可隨著年齡的提升,他們現在可能是個“技術管理者”,而失去了編碼能力。
對于創業團隊來說這是非常不好的事情,創業團隊其實更需要業務開發人員。
家族式管理的弊端
在特定的時間,家族式管理很有用。技術人員任何的行為都是建立在幫助技術負責人的角度,所以干勁會很足。
對于技術負責人來說就更好了,不用動員,不用講管理技巧,只要建立兄弟之間的關系就行了,任何事情都能搞定。
假如這些兄弟確實技術能力很強,那么技術體系可能會很好;假如技術能力不強,設計和開發出的東西沒有任何的審查,技術負債就會很多,而技術負責人本來的職責不就是掌控技術質量嗎?你完全放開,要你有啥用?
家族式團隊很有可能和原有團隊產生摩擦。比如原有團隊感覺受到了排擠,很有可能處處不配合,而新進團隊可能為了有更多的話語權,會搶班奪權,所以這兩個團隊就為了私利,不會專注于技術,內耗就會很嚴重。
這種事情就很多,比如某個知名互聯網公司,新來的技術負責人帶來了自己的團隊,并且都是級別很高的職位,而老同事感覺這些人啥都不懂,什么也解決不了,而新來的團隊又各種的變革,導致互相利益不平衡,很多老同事就走了。
請先進行技術方案的設計
對于一個剛來的技術負責人來說,有許多工作要做,比如組建團隊、了解產品,但更重要的是設計靠譜的技術方案。
首先要了解系統存在的問題、要了解產品未來的走向、要了解技術團隊的現狀。針對這三點,你需要親自操刀,設計一個針對目前***的技術方案。
為什么要親自上呢?因為你是技術負責人,不了解技術問題,就無法進行技術管理。
只有親自設計了,你才能有針對性的去解決問題,將來系統遇到瓶頸,你就能更好的優化或者重新設計。不要用各種理由不去做這個事情,這在早期很重要。
不要過度追求專業化
在互聯網創業公司,一般追求小而快的概念。但是很多從大公司出來的技術負責人充滿激情,任何事情都想追求專業化,這可能會出現很多問題。舉幾個栗子。
沒意義的技術崗位
比如現在很多產品并沒有多少用戶,可非要搞數據挖掘,很多數據通過簡單的 Shell 腳本就能解決,可專業的數據挖掘崗位要求并不低,從成本和效益看,并不建議設置這樣的崗位。
重復造輪子
重復相同的開發工作,應該多用開源的解決方案。現在發現很多公司喜歡自己實現或對原有軟件做擴展,假如沒有特殊原因,應該用成熟的解決方案,原因***就是研發成本,第二就是這個開發成本會很長,第三就是穩定性有待考量。
系統設計過度
另外,很多創業公司存在大量的系統過度設計。即設計的方案不結合目前的實際情況,考慮的太復雜,所以實現的也特別復雜。
這和造輪子一樣,也存在同樣的浪費,其實過度設計到還好,就怕錯誤設計。
比如我原來的公司,覺得 MySQL 性能不好,非要加一層 Memcached 或Redis緩存,***設計并線上使用發現后,緩存***率非常低,白白浪費了大量服務器,損耗了性能,并增加了系統的復雜性。
根本原因是代碼寫的爛,為了 Redis 而 Redis,復雜會顯得很牛嘛!所以這個行為非常不值得提倡。
技術債
不要有開發語言歧視,比如某些公司搞的前端業務層用 PHP,后端數據層用 Java,性能沒有想象的那么夸張,這也是細分崗位的一種缺陷。
專業化的反面就是技術負債,上面也只是簡單的說下,有很多的***實踐指導,想表明的就是太專業化是對效率的***打擊(時間、成本等)。
我原來也遇到很多類似的情況,這個傷害分為兩個階段:
***階段就是短期的一錘子傷害,比如說技術方案上線了,浪費了一些時間和成本,但是這個浪費是固定的,可衡量的。
第二階段就非常難衡量了,為早期的決策還債,比如說原來的技術方案上線后,后期開發特別難擴展,維護也非常困難,累計起來是對生產力的極大打擊,成本就非常昂貴。
招人要慎重
招人的關鍵詞就是數量和質量,沒有合適的寧愿不招。在創業團隊,項目一個接著一個,很容易造成一個假象,開發人員不夠,所以就大量的去招人,這是非常不成熟的行為。
尤其是假如這個技術團隊沒有太強的***開發實踐,新來的人員可能會很茫然,各有各的開發習慣和模式,會導致 1+1 < 2 的現象產生。
人一多,分工就要細化,一細化協作就會產生一定的問題,所以招人要控制數量。
第二就是重視質量,質量這個詞每個人都有自己的標準,我核心的觀點就是寧愿使用一個技術底子扎實的畢業生,也不愿意使用一個有多年開發經驗但無技術底蘊的人。
一個沒有技術體系的開發人員總有一些瓶頸和不好的習慣,會有很多累。
不了解公司負責人
很多公司負責人找技術負責人的時候,都是求才若渴,目標就是希望這個人去搞定技術事宜,可他們在頭腦中一切都是變化的,并沒有一個衡量標準。
對于一個技術負責人來說,可以天天和他聊,告訴他架構的重要性,人員的重要性。
這些確實很重要,但并非必要性,對于公司負責人來說他其實就關注開發速度、穩定性、產出,他并不關心深層次的技術內部是如何運轉的。
舉個我遇到的情況,原來一個同事去一個公司做負責人,他天天搭基礎,優化系統,后來不知道什么原因走了,而產品負責人這么評價他“來這么久一個產品也沒上線”。這個例子對技術人員應該很具有打擊性。
不要有求必應
和技術合作最多的就是產品人員,個人覺得產品人員思維有點發散,做任何事情都比較著急,天天思考這個功能,那個功能。
一個簡單的數據需求就問技術要不要弄個后臺出來,反正一刻也不會讓你閑著。
對于一個成熟的技術負責人來說,不能什么都快速答應——因為這是對自己的傷害。
***,開發人員就算多一倍也會不夠,需求會源源不斷的來。
第二,產品人員很多情況會考慮不成熟,假如你完全按照他們說的去設計,方案會非常復雜,有的時候邏輯性也會顯得有問題,會讓系統很難有效的持續運轉。
第三,有時候人工完成的時間比開發一個系統完成的時間少得多。
因此,少開發一些無意義的腳本或后臺,比如剛開始產品人員覺得這個數據很重要,過了幾天就會突然覺得沒用了。
這樣的例子有很多很多,我的意思并不是不去配合產品人員,而是從自己專業角度出發,給出合理的意見,當然需要避免激化矛盾。
不要依賴測試
在創業團隊,由于對開發時間要求特別高,開發人員在評估時間的時候,特別喜歡加上測試時間,著等同于拿測試時間完成其開發時間,這是一種非常不好的行為。
比如說一個項目開發時間要 5 天,測試時間要 5 天。看上去好像開發時間只占一半(開發人員好像很高效),但實際上測試時間里開發人員肯定還在開發,他們給測試人員的只是一個半成品。
另外開發人員知道測試人員會測試出問題、會把關。所以初期的開發質量肯定不高,這種案例也見過很多。
所以,不要變相的用測試時間彌補開發時間。有可能的話,開發人員自己負責測試,當然這個實際操作起來開始有一些困難,有了開始就能夠適應。
小結
每家互聯網創業公司都有自己特殊的情況,我要表達的中心思想就是先考慮不犯錯,然后再考慮更好的改進。
尤其在互聯網創業早期,追求輕量而不是重量,技術成本非常昂貴,要效率。