程序員職業生涯發展到一定程度都會面臨一個選擇,是走業務+技術方向,還是選擇純鉆研技術。程序員職業生涯發展的問題,這是所有程序員都在關心的問題,未來究竟要怎么走,30歲之后還能不能再做程序員。
絕大多數程序員最終的職業目標可能都是CTO,做到CEO的人估計會比較少,也有一少部分人自己去創業創業去當老板,也有部分人說我轉行去做業務了,對于當老板的人畢竟是少數,對于轉行的人來說,都不在這行做了,自然沒什么好說的了。
當然這只是一個大致的路徑,不是所有程序員都必需要這么經歷的,有些人可能跳過其中的一些步驟,也可能有些人會把中間的很多職位都做了。而最終做到 CTO的程序員,也是非常少的一部分,原因很簡單,這個世界上不許要那么多的CTO和CXO.
也就是說,許多的程序員最終可能是做技術經理、項目經理或者項目總監之類的,那么到底我們職業生涯要選擇哪一種呢?我覺得這個問題沒有一個統一的答 案,因為每個人的性格不一樣,際遇也不一樣,就像你從小希望當貪官,可是命運卻偏偏讓你做了一個程序員。所以應該根據你的興趣、性格與際遇選擇一條道路, 比如說你正好有機會帶一個項目,而你又不是很討厭項目經理這個位置,那么你就可以選擇向項目經理方向發展。
實際上很多時候,國內并沒有明確的技術經理、項目經理、產品經理之分,在許多的公司里,他們經常是由一個人承擔。在外包公司里,通常會有項目經理和 系統分析員(也可能是技術經理)。在一些非IT公司里,可能會有部門經理,而做自己產品的公司可能會分得比較詳細一些。我大致說一下這三個職位的區別,讓 正在徘徊的程序員有一個大致的了解。
項目經理是項目的直接負責人,這個角色相當于一個中間接口,不管是團隊成員還是需求方(客戶), 或者是上級領導,有事都直接找他,所以這個職位著重于管理與溝通。一般來說,項目經理的工作重點在同客戶溝通需求、項目進度的把控、團隊的溝通方面,有些公司也會需要項目經理承擔團隊建設的工作,不過貌似 很多國內公司都忽略了團隊建設這個工作了。對于項目經理來說,重點會要求溝通能力、協調能力、危機把控能力、執行力、團隊管理能力,著重于溝通、管理與計 劃。當然也有些公司還要求項目經歷要參與招標談判,這就要求項目經理有一定的商務談判能力。
技術經理有時候也可能叫系統分析員,一些 小公司可能會整個公司或者部門有一個技術經理。技術經理承擔的角色主要是系統分析、架構搭建、系統構建、代 碼走查等工作,如果說項目經理是總統,那么技術經理就是總理。當然不是所有公司都是這樣的,有些公司項目經理是不管技術團隊的,只做需求、進度和同客戶溝 通,那么這個時候的項目經理就好像工廠里的跟單人員了,這種情況在外包公司比較多。對于技術經理來說,著重于技術方面,你需要知道某種功能用哪些技術合 適,需要知道某項功能需要多長的開發時間等。同時,技術經理也應該承擔提高團隊整體技術水平的工作。
產品經理這個職位一般在有自己產品(不管是軟件還是網站產品)的公司比較常見,產品經理主要會負責產品的設計、產品的改良等工作。需要注意的是,產 品設計與設計師是兩個不一樣的工作,產品設計主要會從用戶體驗、業務需要等層面去設計產品,而設計師更多是從用戶的視覺上去做。產品經理應該是最懂業務的 人,比如說你在設計一個微博的產品,就要求你對微博這個東西非常熟悉,從用戶習慣、用戶體驗、公司的發展戰略上去設計這個產品,還要對比同類產品會有什么 優勢等等。
不管是項目經理還是技術經理與產品經理,都要求要熟悉業務,業務是需求的來源,沒有不談業務的技術,所以不管你從哪個方向 發展,都要求對業務熟悉。 產品經理要求對業務最熟悉,項目經理次之,技術經理排最后。對于程序員來說,剛開始工作的前幾年可以埋頭扎到技術里面,一般這個時間在2-3年的時間,然 后就應該多關注業務了。這個業務不一定是指某個具體的業務,因為具體的業務的范圍太少,而且也需要機遇。