程式設計師有哪些發展方向
絕大多數程式設計師最終的職業目標可能都是CTO,做到CEO的人估計會比較少,也有一少部分人自己去創業去當老闆,也有部分人轉行了,當老闆的牛人也有。一般來說,程式設計師的發展基本上都會經歷這麼幾條路徑。程式設計師-系統分析員-架構師-技術經理-CTO,程式設計師-專案組長-專案經理-專案總監-CTO,程式設計師-產品設計師-產品經理-CTO。
當然這只是一個大致的路徑,不是所有程式設計師都必需要這麼經歷的,有些人可能跳過其中的一些步驟,也可能有些人會把中間的很多職位都做了。而很顯然,CTO,是大多數程式設計師的終極夢想。
也就是說,許多的程式設計師最終可能是做技術經理、專案經理或者專案總監之類的,那麼到底我們職業生涯要選擇哪一種呢?我覺得這個問題沒有一個統一的答案,因為每個人的個性和情況不同。但有一點是重要的,一是有際遇一定要抓住,二是自己要努力。
比如說你正好有機會帶一個專案,而你又不是很討厭專案經理這個位置,那麼你就可以考慮向專案經理髮展。因為老闆讓你做,說明他看到你有這個素質和潛力,要相信別人的眼光。
但是大多數人是遇不見這麼好的伯樂的,那就要自己努力。沒有能力就學能力,沒有知識就學知識,沒有氣場就每天照鏡子練。如果你的確不知道怎樣才能從眾多的程式設計師中脫穎而出,那麼就去參加培訓。用一兩個月工資,可以換來你能力的快速提升。
再說有些公司,並沒有明確的技術經理、專案經理、產品經理之分,在許多的公司裡,他們經常是幾個人混搭的。在外包公司裡,通常會有專案經理和系統分析員(也可能是技術經理)。在一些非IT公司裡,可能會是部門經理,而做自己產品的公司可能會分得比較詳細一些。我大致說一下這三個職位的區別,讓正在徘徊的程式設計師有一個大致的瞭解。
專案經理是專案的直接負責人,這個角色相當於一箇中間介面,不管是團隊成員還是需求方(客戶),或者是上級領導,有事都直接找他,所以這個職位著重於管理與溝通。一般來說,專案經理的工作重點在同客戶溝通需求、專案進度的把控、團隊的溝通方面,有些公司也會需要專案經理承擔團隊建設的工作,不過貌似很多國內公司都忽略了團隊建設這個工作。對於專案經理來說,重點會要求溝通能力、協調能力、危機把控能力、執行力、團隊管理能力,著重於溝通、管理與計劃。當然也有些公司還要求專案經歷要參與招標談判,這就要求專案經理有一定的商務談判能力。
技術經理有時候也可能叫系統分析員,一些小公司可能會整個部門有一個技術經理。技術經理承擔的角色主要是系統分析、架構搭建、系統構建、程式碼走查等工作,如果說專案經理是總統,那麼技術經理就是總理。
產品經理這個職位一般在有自己產品(不管是軟體還是網站產品)的公司比較常見,產品經理主要會負責產品的設計、產品的改良等工作。需要注意的是,產品設計與設計師是兩個不一樣的工作,產品設計主要會從使用者體驗、業務需要等層面去設計產品,而設計師更多是從使用者的視覺上去做。產品經理應該是最懂業務的人,比如說你在設計一個微博的產品,就要求你對微博這個東西非常熟悉,從使用者習慣、使用者體驗、公司的發展戰略上去設計這個產品,還要對比同類產品會有什麼優勢等等。
不管是專案經理還是技術經理與產品經理,都要求要熟悉業務,業務是需求的來源,沒有不談業務的技術,所以不管你從哪個方向發展,都要求對業務熟悉。產品經理要求對業務最熟悉,專案經理次之,技術經理排最後。對於程式設計師來說,剛開始工作的前幾年可以埋頭扎到技術裡面,一般這個時間在2-3年的時間,然後就應該多關注業務了。這個業務不一定是指某個具體的業務,因為具體的業務的範圍太少,而且也需要機遇。
我見過許多的程式設計師,他們是做Web開發的,但對網際網路很不熟悉,對於網際網路流行的趨勢基本上不聞不問。不知道現在大家都在使用微博,也不知道SNS,也可能從不使用網銀。我覺得這樣很不好,程式設計師應該多多去關注網際網路的發展,多多去玩一些新的網站。
對技術不敏感、不興奮的人,對進步和快速提高沒有強烈慾望的人,是沒有辦法在IT界生存下去的。