放棄了 7 年的 Java,投身互聯網做 PHP,我是如何成為創業公司的 CTO?
原創【51CTO.com原創稿件】做好 CTO,在我看來有兩件事:一個是事,另一個就是人。如果你擅長處理人際關系,但對技術把控不到位,團隊不會服你;如果你技術上很厲害,卻管理不好團隊,你會發現工作推動起來挺困難,所以作為 CTO 要重點理解和面對的就是人和事。
放棄了 7 年的 Java,投身互聯網做起了 PHP
到了我們這個年齡階段,都知道選擇的重要性,如果選擇的方向不對,就會越走越遠。在我個人職業發展上,經歷了很多波折。
在我去做 SP 增值業務的時候,這個行業正是衰敗的時期,當時我面臨了一次轉型,放棄了 7 年的 Java 工作經驗,投身互聯網做起了 PHP。
等到我發現傳統的老牌互聯網都做起來了,電商又比較火,可惜我又沒有在對的時間進入主流大品牌的電商公司。
讓我欣慰的是,后來終于卡位對了一次,就是現在的移動互聯網,而且卡準了當時很流行的 HTML5 技術。
站在公司的角度,當我們的技術能力很強的時候,就會很容易產能過剩、過度開發,很多公司都出現過類似被技術綁架的問題。
也就是說需要評估我們當前所在的量級段位,例如很多用戶場景并沒有達到我們設定的場景時,如果技術太強了,反而變成把太多的資源浪費在做未來的事情。
這里,我要強調的就是在合適的時間點做正確的事。說到如何正確地做事,是有一些思考:產品的概念夠不夠新,產品研發夠不夠快,產品運營夠不夠準;這些點無論對大公司還對小公司都一樣適用。
CTO 如何在合適的時間點做正確的事?
產品概念要新
這里所謂的新,是一種模式,即這個產品模式是否適合當下的大環境。
產品研發要快
通過我的實踐,真正能讓產品研發快起來的經驗有兩條:
如果是技術型的團隊,那你要發明出可以使我們產品研發快起來的武器。
我們如何去關注團隊里的人,激發他們的創造力,這個是能讓我們的研發快起來,并且超越所有的項目管理辦法。
舉個例子
我剛入職七樂康的時候,IT 系統幾乎沒有,信息化程度較低,線上 B2C 很多產品也沒做起來,但我們想進軍移動互聯網,團隊用了兩周時間,就做完了***版七樂康醫生,靠的是什么呢?
***是因為我們手上有成型的工具,技術積累下來的引擎。我們現在再造一個 APP 的時候,不需要寫過多的代碼,只要寫幾個配置文件,基本上這個 APP 就能自動生成,大概 70% 以上的代碼,都可以通過這個引擎去生成。
第二就是團隊里人的信任和磨合,要激發團隊在這么短的時間內去做產品的時候,你會發現任何管理都是失效的,要靠大家長時間磨合下來的信任和默契。
產品運營要準
如何在最短的時間實現我們想要的目標?運營是否準確,直接影響團隊士氣。
從技術的角度來看,我們的研發實力足夠強,管理足夠好,但是運營方向不準,容易出現研發人員很累,天天加班,做出來的東西一次一次的無用,一次一次被推翻的現象。最終士氣渙散,大家覺得自己所做的事情沒有意義。
所以,作為技術管理者一定要對業務有自己的理解和判斷,并不是眼里只有技術,否則就只能停留在這個段位,或選擇走技術專家路線。
CTO 如何把控好需求和質量、靈活和透明
一個技術管理人員,如果只是把上級或其他部門交給你的事情分派下去,或者別人解決不了的問題,你可以帶隊解決。
這些還不夠,只能說明你還只是一個高級碼農而已,如果這樣的話,團隊里的技術人員也挺悲哀,因為他也就只能成為一個執行的碼農。
作為一個 CTO,我認為至少要能夠理解并指導團隊如何管理需求,從而控制人員投入、控制開發周期,在時間、質量和成本三方面做出***選擇。
同時,要管理好業務部門的預期。用靈活的組織形式和透明的方法帶領團隊達成目標。在任務艱巨之時,他能給團隊足夠的信心,激勵團隊克服困難完成任務。
需求:要管理產品和業務
只有技術管理人員對需求把關準確,才能保障我們整個技術團隊所做的事情是正確的、有價值的,而需求是以目標為導向的,以投資回報率(ROI)為標準要有成本概念。
我們在做項目時,首先要清楚一個項目要實現的最終目標,通常產品經理會去整理一個業務部門或者是用戶的一些需求和技術去討論,這個產品要做成什么樣子。
這時候技術管理人員就要了解清楚,這個需求及其背后的***目標是什么,然后再去考慮技術選型。
如果說產品經理要求我們怎么做我們就做什么,我覺得這是管理人員的失職;其次,做技術管理,要有成本概念,記住投入產出比。我們時刻記住這些,會提升團隊人員的價值感。
質量:產品質量、代碼質量、項目質量
對技術人員來講,質量是什么?易用的產品、優雅的代碼、漂亮的項目,這些大家都懂。我更想說的是,作為技術管理人員,我們要達到怎樣的質量,這個要有具體考量的標準。
我們做任何項目的時候,其實都在做權衡,做時間、成本和質量的選擇和取舍。這里特別強調的是質量,技術管理者在確定質量標準的時候,實際在考慮什么,我們又該如何與別的部門領導或上級領導溝通。
舉個例子
如果老板說,我現在有一個項目特別急,要求一個月后上線,但是現在連思路都沒有,你是技術管理者,你怎么去溝通?
聽老板的,團隊就會對你不滿,為什么?因為你沒有找到解決方法。時間,老板說就一個月,錯過這個時間,可能就是錯過了***時機。
時間固定了,現在就是剩下成本和質量兩個了,成本不變的情況下,我們質量肯定達不到要求,相當于我們要犧牲質量而保證交付時間,這時候是不是可以采用迭代的方式去做?
這時老板說,我時間必須準,質量必須要高,否則很危險,那這個時候唯一能做的就是如何增加成本。增加成本的方式,要么買“包”,要么加人。
如果老板說,時間、質量、成本一樣都不能忽略,那你可以笑著問問老板,他是不是想逼你離職了?
靈活:更快速的響應變化,小顆粒的發布產品
團隊的組織架構設定應該以保證靈活高效為準則,例如為了保持高效,我把測試團隊和項目管理團隊合并成一個團隊,統稱質量保障部,下設測試團隊,技術客服,項目管理,安全等團隊。
目的就是為了在團隊初期充分發揮項目的作用,把控整體的研發節奏和時間控制。
就像產品團隊究竟是應該放在技術體系還是業務體系這個問題,都有成功的案例,都有可取之處。所以在不同的階段,根據關注點不同,應該保持團隊的靈活組合方式。
另外,根據公司的業務模型來選擇組織架構,做到快速的響應變化。創業初期的時候,快最重要,部門不應特別多,人員配備上也以全棧工程師為主。不同階段,我們的組織架構也要相應調整,要善于嘗試。
透明:流程透明、規則透明、人員透明
部門人員之間,前端后端的劃分,研發和測試的劃分等都要做到透明有依據。
我們用項目經理舉例來講,小團隊時,完全沒必要設項目經理,研發領導就可以充當項目經理,這樣他的執行力會更高一些。
而當你的部門超過五個的時候,面臨跨部門協作,這時可能需要一個項目助理,不需要太資深、懂 SMART(目標管理)原則,知道一件事情什么時間、什么節點,需要有什么結果即可。
當公司業務運行模式穩定,慢慢從野蠻生長過度到精細化時,項目經理就越來越重要了。
CTO 如何選擇合適的技術項目管理方案
Just in time 消除浪費
傳統生產企業的精益管理也普遍應用在 IT 互聯網企業,例如要實現 Just In Time(消除浪費),做到標準化生產,我們就要做好任務分解,實現流水線式工作方式。
我認為流水線這種方式適合用在穩定且變化不大的項目上,而不太適合互聯網企業初創時期,因為一個小團隊,創業方向不明確,需求會來回變,流水線式的作業方式不靈活,不利于快速響應,也浪費時間。
三周迭代、快速交付、層層遞進、縮小反饋環
- 兩周迭代、快速交付:創業初期要講快,兩周迭代是一個比較好的節奏。
- 每日立會:要實現三周迭代,每日例會不要超過五分鐘,形式可以多種多樣,只要抓住例會目的就行,形式不限。
- 一般我們例會最重要的是,對前面工作完成情況有沒有風險進行一個評估,并評估后面的進度,如果發生風險的時候,要把這個問題怎么解決討論清楚。
- 持續集成:也就是在研發過程中的迭代。
- 單元測試:三周迭代的情況下,單元測試很難做到,如果必須要做就很可能浪費很多時間。
- 結對編程:組織結對編程,通常可以采用 3 種方式。
***種是由牛人編,層次低的人看,或者由層次低的人編程,由層次高的人看,這樣利于層次低的技術人員知道,牛人大概是個什么樣子,自己要朝哪個方向努力,這樣也會讓新人有歸屬感,這就是結對編程的目的。
第二是一個非常好的模式,就是由一個有經驗的人,讓他快速找到一個模板,告訴大家這個功能怎么去做,應該注意什么。
第三種方式就是做代碼審查,好處就是能讓你的團隊編碼風格和方法論盡量統一,同時,代碼審查能讓我們在做一些人事調動時不會太被動。
- 快速交付,縮小反饋環:有必要強調的是,我們一定要建立***責任人制度,通過***責任人去收集反饋、溝通協作,提高效率,教育團隊逐步讓團隊成員懂得責任。
異地任務、看板同步和每日例會同步
首先想說的是,不得不承認,異地管理難度非常大。所以也建議大家如果有可能,盡量不要把團隊建在異地。但如果有異地團隊了,怎么辦?
- 我們前面提到的***責任人制度,用來解決異地溝通管理不暢通的問題。
- 想盡辦法實現異地通過視頻會議來溝通。
- 切記不要用郵件來溝通具體問題,郵件適合做確認用,而不適合具體問題討論,否則效率太低了。
最重要的一條是從根本上解決異地問題,就是盡量業務本地化,至少實現本地備份。
我覺得現在很難找到一個理論,能適用于我們整體的發展。因為現在,各個公司都發展的很快,一年、兩年,發展的體量、規模都不太一樣。
拿組織架構來講,我覺得如果是快速發展期,半年到一年可以調整一次,實現良性發展。良性發展是什么呢?各自有各自領域的強大,然后互相能夠靈活組合,這是我們所追求的。
CTO如何做“仆人式”管理?
仆人式的領導:信任、傾聽、預見、醫治、接納
很多時候,我們帶領團隊,可能有很多麻煩,主要是人的原因。
所以對于一個 CTO,要當個好領導,要做的是帶領團隊中的成員,把公司要兌現員工的那些承諾變成現實。
這就要求一個 CTO 不只是要有管家的意識,還需要在信任、傾聽、預見、醫治和接納上做到位。
- 信任和傾聽:真心實意地和團隊成員溝通,傾聽他們的真實想法,了解每個人的特長,根據每個人的特點給予適合的位置和充分的信任,了解每個人的真實需求,給予激勵和引導。
只有這樣,你才不只是一個領導,而是團隊精神層面的***。大家也會用同樣的信任和真誠回報你。這樣的團隊,凝聚力是***的,這也是我們帶團隊的一個非常重要的努力方向。
- 預見未知:作為一個領導,無論是模式、人員、還是其他方面要有能力去預見風險,然后帶領團隊規避風險,而不是帶領團隊橫沖直撞。
- 醫治:作為領導要注意團隊人員應該逐級提升,而不是跨級提升。要針對不同性格的人分配力所能及的事,要有意識去看每個人的性格特征有哪些優點,能否被我所用或放大。給每個隊員找到合適的位置,讓他們有榮譽和歸屬感。
- 接納:為了讓團隊多樣化,領導要學會接納,可以有意識地讓團隊人員的性格出現一些偏差,尊重每一個個體,這樣的團隊會更安全、更有生機和活力。
包容和接納是很重要的,領導要注意的是不要帶領團隊走向一個極端。領導做決策時不要小眾利益化,要站在整體的角度去看待、去分析。
仆人式的管理:觀察、感受、需要、請求
我們要想讓團隊穩定而有凝聚力,最重要的是要了解成員的需要并表達我的需要,即雙向的需要。
我需要員工知道我想要什么,我的目標是什么,這個是必須要傳遞給成員的;你也要很清楚地知道,員工要的是什么,你才好把不同的人放在不同的位置,根據不同人采取不同的激勵或者引導方式。
要做到雙向需求溝通,管理者可以從觀察、感受、需要、請求幾個點抓起來。
- 觀察:如果你帶大團隊,觀察就是情報工作。你要有洞察力,不是觀察他們有沒有罵你、有沒有懈怠或者怎么樣,而是觀察和感受他們現在的工作狀態。
- 感受:重視員工對一件事情的感受,這是做個好領導最能體現的用心之處了。有些事情,我們如果做的很人性化,給員工的感受會很不一樣。
- 需要:真正的理解員工的需要,按需提供一些幫助、建議和指導。
- 請求:盡量理解員工的請求,并給出合理的答復。在技術上面要能夠指導團隊,在情感上面要多照顧團隊。
有句古話“己欲立而立人,己欲達而達人”,所以,作為 CTO,如果想在管理的路上立得住且走得遠,你手下必須要有強將,而且強將得是你培養出來的。
這樣你就會擁有一個團結、協作、強大的團隊,也能把事情放心交給別人去做,你才有精力去做對公司和團隊更重要的事。
曲毅
七樂康技術 VP
從事互聯網研發工作 12 年。曾在 HISUN、空中網、新浪、樂蜂網等互聯網公司擔任構架師、高級技術經理、技術總監等職位。近 5 年專注移動互聯網,他是國內資深 HTML5 專家和研究者,對 HTML5 技術有非常深刻的認識和理解,有著豐富的實踐經驗,是 HTML5 引擎 Crow5 的創造者。
以上內容節選自 CTO 訓練營出版圖書《CTO說》,根據 30 多位CTO訓練營導師的課堂分享內容整理、改編,包括樂視網 CTO 楊永強、360 副總裁譚曉生、跟誰學 CTO 李鋼江、花蝦金融 CEO 段念、極客邦科技總裁池建強等,
更多內容查看:https://item.jd.com/12065279.html
CTO 訓練營為 51CTO 推出的面向中高端技術管理者的學習及社交平臺,16 年推出以來受到了行業里的中堅技術力量的歡迎,邀請了行業里資深的技術高管、技術類型的投資人以及技術創業者,打造技術管理者的 MBA,幫助中國***潛力的技術管理者成長為未來技術領域的***。CTO 訓練營第四季正在招募中,愿意加入我們嗎?
【51CTO原創稿件,合作站點轉載請注明原文作者和出處為51CTO.com】