程式設計師職業之路的選擇
許多程式設計的職位都會到達最高峰,並開始衰落——這是很多程式設計師不想面對的,但卻是一個不爭的事實。這之後再找一份程式設計師的工作會變得越來越難,很多人發現這個事實時束手無策。本文會提供一些重要的職業資訊,值得思考一下,以便有所準備。
TechCrunch 釋出了一篇文章「矽谷黑幕:技術人員年齡歧視(譯文連結)」,文中引用的研究發現:對一個程式設計師來說,能從事高效的開發的年齡段是有限的。這個問題確實存在,而且非常嚴峻。
程式設計師的未來是什麼樣的?
程式設計師的職業之路是什麼樣的?
對於這些路應有什麼樣的選擇和期望?
人人都知道程式設計師可以向經理或團隊領導發展。但很多程式設計師不明白經理這個職位的期望和工作要求。當然,我們都有經理,但怎樣才能成為經理呢?要具備什麼素質?中層管理者和一個高階程式設計師之間有什麼區別?
在這篇文章中,我會拉開帷幕,介紹從一個從初級程式設計師到頂級CTO的潛在職業之路。
注意:很多偉大的職業生涯停留在了不同的職位上,直到退休。一些職業生涯卻連連升級。但是管理和領導角色並不適合每一個人,幾年以後你可能會發現你在管理上的興趣改變了。二十幾歲的時候你可能不喜歡做經理,但是四十歲時你可能不再喜歡寫程式碼了。未來什麼樣,誰都很難說。然而,多瞭解一下你的選擇和情況總是好的。
下面一張圖表示的是程式設計師的各個職位的平均工資。注意在垂直水平上,一些人可能拿著兩倍或者三倍於別人的工資(像是銀行,貿易等行業)。所以這些數字僅代表了一個平均水平,並不全面。
初級程式設計師
- 0-3年工作經驗(一般是剛從大學畢業)
- 會寫簡單的指令碼
- 初步瞭解整個應用程式的生命週期
- 初步瞭解資料庫和應用程式的服務(佇列,快取等)
- 不需瞭解複雜的應用中的每一個部分
當你剛剛踏入程式設計師的行列中來的時候,可能會感到畏縮和煩惱。會時常感覺到自己資歷尚淺,驚訝為什麼會有人寫出這麼大而複雜的程式。不久之後,你就會想為什麼自己還沒有升級到高階程式設計師。看看其他的高階程式設計師,你覺得自己做著跟他們相同的工作。
但是區別就在於初級程式設計師缺乏經驗。即使是學習最快、最聰明的初級程式設計師,也沒有接觸到足夠多的程式碼和邊界情況,以勝任高階程式設計師的工作。在軟體開發方面,軟體設計模式也是一種智慧。雖然在這方面可以閱讀相關的書籍,但還是需要寫足夠多的程式碼,將錯誤儘可能地暴漏出來,真正理解軟體設計模式的價值。
相關連結:
高階程式設計師
- 至少四年工作經驗
- 能寫較複雜的程式
- 深入理解整個應用程式的生命週期
- 掌握資料庫和應用服務(佇列,快取等)
- 要了解應用程式的每一個方面
稱職的高階程式設計師非常擅長構建大型程式。擔任高階程式設計師佔了程式設計師生涯的大部分。事實上,如果你不喜歡管理的工作而僅僅喜歡寫程式碼,可以一直做一個高階程式設計師,我就僱傭了一些終生做程式設計師的人,但是,當老了以後,這項工作也會變得困難。
這個職位也可以作為一個過渡。一旦你掌握了足夠的技術,那麼很可能就有能力擔任一家技術創業公司的創始人或者CTO了。作為一個創始人或者CTO,寫程式碼的就會就少了,更多的是需要處理事務的技巧。但是深入理解技術非常有必要,是做好這份工作必不可少的部分。
團隊領導或架構師
- 七年以上開發經驗
- 掌握高階程式設計師必備的技術
- 團隊領導:向架構師過渡
- 架構師:沒有更高的技術方面的職位
做了七年程式設計師之後,如果你覺得不喜歡管理方面的工作,那麼可以考慮一下做架構師,這是技術方面最頂峰的職位。架構師有時候也寫程式碼,但大多數時間他們在設計複雜的系統,然後交給由初級和高階程式設計師們組成團隊來實現。架構師的工作就是,利用他技術方面的智慧以及多年的經驗(學習程式的模式和反模式),來為軟體專案建立合適的架構。有新的需求的時候,軟體架構師需要對專案選擇正確的方向,並估算應用程式的規模。
首席開發人員的工作是給其他初級的和高階的程式設計師指導和方向。雖然首席開發者通常不會做僱傭、解僱程式設計師的事情,但是他們的許多工作和經理無異。他們需做開發方面的協調,並在寫程式碼的時候做出實現方面的決定。
中層領導
- 通常包含經理和負責人等職位(開發經理,專案經理,產品經理)
- 做發人員的老闆(例如人事工作)
- 向高階主管彙報工作
管理人員通常向工程師發展。他們的方向很多:如果你喜歡接觸開發團隊,並對細節感興趣,那麼可以選擇產品經理,做你的夥伴們的盟友;如果你對產品特性和增強其效能著迷,那麼做一個產品經理是最好的選擇。
然而大多數人的選擇是開發經理。這是個經理中經典的職位,要求平衡專案經理和產品經理的需求和開發團隊的性格之間的矛盾。這個職位對人事處理和化解矛盾的技能要求較高,要經常做出退讓。開發經理的工作不僅僅是僱傭新人,在必要時也要解聘一些人。這就意味著很難和他們成為朋友。因為一旦和他們成了朋友,就處在了一個尷尬的位置。如果你認識的一個人從開發人員的職位升到了開發經理,你會發現這個人幾乎在一夜之間變了。這就是為什麼,這通常是一份費力不討好的工作。
但如果領導一個團隊勝利了,也是非常有收穫的。如果你想提高領導才能,準備做一個管理角色,可以讀讀 Phil Jackson 的書 《Eleven Rings: The Soul of Success》 。
高層領導
- VP,CTO 或CEO
- 是中層領導的老闆(例如 負責人事)
- 向另一個高層領導或者董事會報告
和中層領導顯而易見的不同是,高層領導負責管理中層領導。然而經理通常是不需要管理的,他們需要的是指導。中層領導需要知道高層領導的方向並跟進,不會得到非常具體的指示。
高層領導的工作是,做重要的決定,並激勵工作人員緊跟決策,增加對工作目標的信心。
你在這條路上走得越遠,寫程式碼的機會就越少。到達頂峰的時候,做的都是人事方面的工作了。中層領導依然能在核心技術方方面體驗到樂趣,但是對於高層領導,就必須把所有的時間花在人事上:激勵員工,領導,指定策略。如果你寫程式碼,也只能是不重要的專案(除非你是比爾蓋茲,但大多數人不是比爾,他是個極端的特例)。Phil Jackson 的書要求,在這個職位上必須經常閱讀,不能安於現狀。
高層領導的工作要求確保公司的每一個人都朝著相同的方向努力,確保方向的正確,確保每一個人知道他們朝這個方向努力的原因。這個工作難度非常大,而且充滿著危險,心酸和陷阱。如果你想要一個高層領導,讀一讀Ben Horowitz的《The Hard Thing About Hard Things》.
高層領導從來都不是天生的,而是經過不斷地努力達到的。Ben Horowitz的部落格裡有有關成為CEO的例子。
結論
今天,程式設計師的選擇是豐富多彩的。而且對於程式設計師的職業要求比歷史上任何時候都要高。對程式猿來說這是一個好的時代。但是任何時候規劃你的職業都不算晚。希望本文能排得上用場,給你一些指導和精神食糧。
相關文章
- 初級Java程式設計師職業規劃如何選擇Java程式設計師
- 你為什麼選擇程式設計師這個職業?程式設計師
- 程式設計師職業規劃:如何選擇下一門程式語言程式設計師
- 闡述選擇遊戲設計師職業的5個理由遊戲設計師
- 成長之路--論程式設計師的職業素養程式設計師
- 阿里畢玄:程式設計師應如何選擇職業成長路線?阿里程式設計師
- 程式設計師的打怪升級之路,程式設計師未來職業規劃全路線程式設計師
- 程式設計師職業生涯程式設計師
- 職業程式設計師不必那麼“職業”程式設計師
- 程式設計師職業發展之路思考:工程師的等級階梯程式設計師工程師
- 程式設計師的職業規劃!程式設計師
- 程式設計師的職業素養(一)程式設計師
- 美工和程式設計師的職業病程式設計師
- 《程式設計師的職業素養有感》程式設計師
- 話說程式設計師的職業生涯程式設計師
- [轉]程式設計師的職業規劃程式設計師
- 程式設計師:選擇效率,還是選擇質量?程式設計師
- 程式設計師的專業主義精神——評《程式設計師的職業素養》程式設計師
- 程式設計師的“非程式設計師”之路程式設計師
- 程式設計師如何選擇程式設計技術書?程式設計師
- 程式設計師跳槽,到底選擇什麼時間辭職最合適?程式設計師
- 程式設計師的基本常識——職業篇程式設計師
- 創造型職業程式設計師的無奈程式設計師
- 程式設計師,你的職業不要固步自封程式設計師
- 轉贈《程式設計師的職業素養》程式設計師
- 程式設計師跳槽的最佳時機選擇程式設計師
- Java程式設計師修煉之路(一)我們為什麼選擇JavaJava程式設計師
- 關於程式設計師這個職業程式設計師
- 程式設計師該有的職業素養程式設計師
- 路在何方——程式設計師職業規劃程式設計師
- 程式設計師10大職業生存技巧程式設計師
- 程式設計師職業路線認識程式設計師
- 程式設計師如何選擇技術方向程式設計師
- 家屬感言:選擇程式設計師,就是選擇一種生活程式設計師
- Github 對程式設計師職業生涯的影響Github程式設計師
- 程式設計師職業生涯中的 Norris 常數程式設計師
- 論一個程式設計師的職業素養程式設計師
- 程式設計師選擇公司的8個標準程式設計師