項目經理是項目的直接負責人,這個角色相當于一個中間接口,不管是團隊成員還是需求方(客戶),或者是上級領導,有事都直接找他,所以這個職位著重 于管理與溝通。一般來說,項目經理的工作重點在同客戶溝通需求、項目進度的把控、團隊的溝通方面,有些公司也會需要項目經理承擔團隊建設的工作。對于項目經理來說,重點會要求溝通能力、協調能力、危機把控能力、執行力、團隊管理能力,著重于溝通、管理與計 劃。當然也有些公司還要求項目經歷要參與招標談判,這就要求項目經理有一定的商務談判能力。
技術經理有時候也可能叫系統分析員,一些小公司可能會整個公司或者部門有一個技術經理。技術經理承擔的角色主要是系統分析、架構搭建、系統構建、代 碼走查等工作,如果說項目經理是總統,那么技術經理就是總理。當然不是所有公司都是這樣的,有些公司項目經理是不管技術團隊的,只做需求、進度和同客戶溝 通,那么這個時候的項目經理就好像工廠里的跟單人員了,這種情況在外包公司比較多。對于技術經理來說,著重于技術方面,你需要知道某種功能用哪些技術合 適,需要知道某項功能需要多長的開發時間等。同時,技術經理也應該承擔提高團隊整體技術水平的工作。
產品經理這個職位一般在有自己產品(不管是軟件還是網站產品)的公司比較常見,產品經理主要會負責產品的設計、產品的改良等工作。需要注意的是,產 品設計與設計師是兩個不一樣的工作,產品設計主要會從用戶體驗、業務需要等層面去設計產品,而設計師更多是從用戶的視覺上去做。產品經理應該是最懂業務的 人,比如說你在設計一個微博的產品,就要求你對微博這個東西非常熟悉,從用戶習慣、用戶體驗、公司的發展戰略上去設計這個產品,還要對比同類產品會有什么 優勢等等
一、高級程序員
如果你是一個剛剛創業的公司,公司沒有專職產品經理和項目經理,你就是公司的產品經理,你如果對你現在的開發員能力不滿,那么你只需要的是一個高級程序員。
你定義功能、你做計劃推進和管理,他可以帶1-2個副手把你規劃的功能實現了,他是主力干活者,有技術難題也是他來親自攻克解決。
所以,一個高級程序員,他的職責很清晰:
1、負責核心復雜功能的實現方案設計、編碼實現
2、負責疑難BUG分析診斷、攻關解決
二、研發Leader
公司再長大些。如果你就有一個研發團隊(含產品/開發/測試),你就一套主產品,而且你的研發團隊小于15人,那么你需要的就是一個研發Leader。
因為你已經有了1-2個高級程序員,核心難題攻克和核心功能研發進度與質量保證,已經可以靠他們自身能力解決掉了。那么你需要研發Leader干什么。
研發Leader的職責是:
1、團隊任務管理:開發工作量評估、開發任務分配
2、團隊生產質量提升:代碼審核、開發風險識別/報告/協調解決
3、團隊生產力提升:代碼模板研發與推廣、最佳實踐規范總結與推廣、自動化研發生產工具研發與推廣
4、團隊專業力提升:招聘面試、新人指導、領導復盤總結改進
三、技術總監
如果你的研發團隊超過20人了,而且有多套主打產品線了,你可能已經有了多個研發Leader了,那么你需要一個技術總監。
技術總監的職責:
1、組建平臺研發部,搭建公共技術平臺,方便上面各條產品線開發。
2、通過技術平臺、通過高一層的職權,管理和協調各個產品線組。現在每個產品線都應該有合格的研發Leader和高級程序員了。
四、首席架構師
因為你已經有了技術總監了,所以技術平臺不錯了。技術平臺和各條產品線的協調互動,也是技術總監管著。
因為你已經有了各個產品線的高級程序員,他們在靠個人能力維持著核心功能模塊的開發進度和代碼質量。
因為你已經有了研發Leader,所以代碼模板研發與推廣、最佳實踐規范總結與推廣,這些事都已經在日常按份內職責開展了。
那么,啥時候需要首席架構師啊。
也就是說,需要分離管理族和專業族了。你會發現,這個階段你的研發團隊已經超過100來人了,需要有人專注來做架構規劃、設計、日常維護。不能讓研發總監和研發Leader又做管理又做技術一股腦都扔給他們,你就等著總結果產出。這是不對的。
需要從技術總監和研發Leader身上剝離職責了。讓技術總監和研發Leader偏項目管理(管理族),把各個模塊之間的架構設計工作,獨立出一個崗位,就是架構師,來負責。
每個產品線都有架構師,在技術平臺部門也有技術平臺的架構師。那么,技術平臺和業務產品線的架構互動,就是首席架構師在銜接了。讓技術平臺架構能夠和產品業務系統的架構互相促進和支撐,就是首席架構師的份內之事。
架構師的職責是:
1、架構分析:從功能性需求中識別出需要增加的非功能性需求,好滿足性能、可擴展、解耦/集成、安全、可運維、高可用、易部署、易更新。并且識別完非功能型需求,還要做技術選型、技術架構風險識別、技術實現工作量評估
2、架構設計與實現:非功能性模塊的架構設計、接口設計、代碼實現。所以需要的是有代碼實現能力還要有架構思維的工程師,不需要畫PPT的工程師
3、業務架構設計與實現:需要對跨系統的接口進行識別、實現、維護,需要對能寫成公共代碼類庫的進行分析、識別、接口設計、實現、變更維護。
4、重構:架構師需要經常做Bug分析、非模板性和公共類庫代碼檢查,以發現代碼腐爛程度,以發現還有哪些代碼沒有做很好的架構與精心的代碼設計。所以重構是經常性維護發生的,不是攢到某一刻動大手術,甚至推翻重做,那就不叫重構了。
五、CTO
你把架構師團隊組織建立完成,再往大長,你才需要真正意義上的CTO了。否則你一開始就招真正的CTO,他也不滿意,你的期望也不對。現在你的期望也對了,他的能力模型也正好和你的期望職能匹配了,你能給他的和他想要的也正好匹配了。
有的公司有軟件系統產品副總裁,也有軟件系統技術副總裁,而且把軟件系統技術副總裁叫CTO,軟件系統產品副總裁叫產品VP。這就很怪異。
真正的CTO,是軟件產品和技術是統一管理的。
他做的事情,是商業、產品、技術、管理、團隊相平衡的綜合統管。
CTO的職責:
1、業績達成:洞察客戶需求,捕捉商業機會,規劃技術產品,通過技術產品領導業務增長,有清晰的戰略規劃、主攻方向,帶領團隊實現組織目標
2、前沿與平臺:到這個研發規模規模級別了,一定要有專門的團隊做技術應用創新探索和前沿技術預研。而且要和技術平臺團隊、應用研發團隊形成很好的聯動作用,讓創新原型試點能夠很平滑的融入商業平臺再讓應用研發線規模化的使用起來。大量的前沿探索都死在了內部,做完試點就停滯了,這就需要CTO做好整體的銜接推動工作。
3、研發過程管理:站在全局立場來端到端改進業務流程,為業務增長提供方便
4、組織與人才建設:公司文化和價值觀的傳承;研發專業族團隊梯隊建制建設、研發管理族團隊梯隊建制建設;創建創新激發機制,激發研發人創新向前發展,激發黑馬人脫穎而出