IBM大中華區總架構師:話說程式設計師的職業生涯

NO IMAGE

 

有一些年輕的程式設計師向我諮詢,將來的路應該怎麼走?俗話說,條條大路通羅馬。不同的路都能走向成功。到底選哪條路,取決於自己的興趣。可能有程式設計師會問:如果還沒找到自己的興趣怎麼辦?我的建議是多嘗試,努力做,這是職業生涯的必經之路。當你積累了一定的技術和經驗之後,就會面臨多種選擇。選擇哪條路,因人而異。

  如果對某一種或幾種技術非常感興趣,並且能夠持續鑽研,經過一定時期的積累,你可以逐漸成長為專家級程式設計師。專家級程式設計師對於所掌握的專業技術的熟練程度非一般程式設計師能及,各類常見程式設計問題在他們手中都能迎刃而解,可以說這類專家“越老越值錢”但是這類專家也有一定的風險性:隨著經驗的增加和年齡的增長,這些人的工資會越來越高,當公司改變技術路線而不再需要專家級程式設計師所掌握的專業技術時,或者想降低做事的成本,他們就可能面臨失業或者另找工作的局面。

  資深培訓專家也是個不錯的發展方向。成為培訓專家,不僅需要深厚的技術功底,同時還要具備優秀的溝通和表達能力,因為他們的主要工作不再是研發某種技術,而是傳播技術知識。這條路很寬,有一些優秀的技術培訓師除了擔任本職工作,還會兼職到大學裡講課。雖然培訓專家的技術可能達不到專家程式設計師的水平,但是工作內容相對更為豐富,接觸的人也更多。

  成為公司的技術總監是很多程式設計師的夢想。這條路線是從初級程式設計師成長為高階程式設計師之後,以做專案為工作重點,進而發展成專案經理、開發經理,最終成為技術總監甚至公司副總裁。這些程式設計師走的是技術管理路線,從做專案開始,逐漸積累管理經驗,然後成長為優秀的技術管理者。技術總監在公司甚至技術界的影響力非同一般,對於那些有志於成為公司領導層的程式設計師,是個很大的誘惑。但是權力大、管的人多,就意味著更大的壓力,技術總監不僅要保持對新技術的敏感,還要抽出精力做管理。比起成為純技術專家,這條路也許更為艱難。

  還有一些程式設計師職業發展的終點是總架構師、總設計師。這類程式設計師的興趣,不是某種特定的技術,而是偏重對軟體產品或者軟體應用專案的設計。如果將軟體專案開發團隊比作一個樂隊,那麼程式設計師就相當於一名樂手(比如小提琴手、長笛手等),他們負責將自己的樂器演奏好;專案經理是樂隊指揮,負責指揮和協調這個樂隊的配合;架構師則相當於作曲家。從入門的架構師開始,逐漸成為資深架構師乃至總架構師。如同歷史上偉大的作曲家,傑出的架構師能夠在各種軟體中譜寫出旋律優美的“曲子”。

  另外一些程式設計師心懷創業的理想,等到自己有了一定的技術積累,再掌握一些市場需求以及管理方法,他們會開始創業之路。一旦成功,這類人的影響力會非常大,像Google和雅虎的創始人,都是技術創業的成功典範。但是這條路也是最艱辛的,有句話叫做“不當家不知柴米貴”不親自創業的人也很難體會它的艱辛。創業涉及方方面面,稍有差池就會功虧一簣,投身創業的程式設計師並不少,但是真正能成功的少之又少。踏上這條路不僅需要過人的勇氣和魄力,更需要堅韌不拔的毅力,以及深度的商業智慧,再加上市場機會,才能夠贏到最後。

  很多程式設計師會走上技術支援路線,進而發展成為精通業務的技術和行業諮詢專家。這類程式設計師會在成為高階程式設計師之後加入銷售團隊,直接面對客戶,負責技術層面的問題。如果對某一行業(比如銀行、電信)非常熟悉,久而久之,就成為精通這個行業技術的專家;如果對於某一類解決方案(比如ERP、CRM、SCM)非常擅長,就可以發展成為跨行業的技術專家。

還有一部分程式設計師會成為IT專欄作家和自由職業者。這些人通常對寫作比較感興趣,文字表達能力也不錯,他們會將自己從事技術工作的內容或心得寫出來,然後發表文章賺取稿費。只要對技術足夠精通,這類人是很受雜誌歡迎的。在北美還有一種自由職業者叫做合同工,就是不定期的承接專案,在專案開始前簽訂協議,專案完成後結束合作。雖然這種職業目前在中國還不太多,但是其自由性對於很多程式設計師來講,也非常有吸引力。
    上文提及的若干條路,程式設計師可以根據自己的興趣進行選擇,但是一般來說,無論走哪條路,都有一個前提條件:從初級程式設計師進階為高階程式設計師。因為在這之前,你甚至沒有選擇的機會。從初級進階到高階,通常需要2~5年的時間,因個人素質而異。大家都說,程式設計師要耐得住寂寞和枯燥,年輕的程式設計師更要克服浮躁的心態。在職業生涯的起步階段,很多人總會摸不著頭腦,這時一定要靜下心來,多向資深程式設計師求教,慢慢熟悉技術、熟悉開發流程和行業。有時你會感覺掉進了一個知識海洋,身邊全是陌生的事物,很難抓住。所以就更要四處探路,逐漸尋找到方向,在尋找中進步。
    成功進階為高階程式設計師,也並不意味著前途一片光明。如果說從初級到高階需要的是學習,那麼從高階到專家,需要的是不斷地嘗試和堅持。比起前一個階段,這個過程更為漫長,通常需要5~8 年。在這期間,因為有了之前的積累,並且已經取得一定的成就,人會更加自信,同時也會更加彷徨,有一個問題會時常盤旋在腦中:將來的路到底要怎麼走?這時就可以利用自己所積累的資源,多做一些嘗試,嘗試不同角色、不同的專案,與不同的客戶打交道,時間長了,自然會找到最適合自己的發展方向。
    總結起來,初級程式設計師和高階程式設計師時期,都屬於職業生涯發展的第一階段,我們可以稱之為黃金時期。這階段程式設計師的年齡在20~35歲之間,因為年輕,所以更善於學習,而且體力充沛,很多走過這個階段的程式設計師有過通宵工作的經歷。在這個時期,你有大把的時間學習提高,為將來的事業打下堅實的基礎。而一旦超過了30 歲,無論從體力還是精神上,都會有所改變, 從30~40 歲是轉型時期。這時的程式設計師(很多人已經不再程式設計)已經明確了自己的發展方向,並且向著目標努力,讓自己有所建樹。40~60歲是專家時期,至此,一名優秀的程式設計師會徹底實現“破繭成蝶”的願望,成長為專家。
    程式設計師的職業很精彩,同時也很艱苦。享受高工資,掌握最新的技術,有可能成為創業成功的富豪,甚至有機會改變人類的生活方式(例如網際網路瀏覽器的開發、電子商務的應用、手機簡訊等),這就是別人眼中程式設計師的生活,也許正因此,每年都會有很多新人加入這個龐大的隊伍,體驗嚮往已久的精彩生活。但是大多數人卻忽略了光鮮背後的艱辛,高工資的代價是工作強度高,學習新技術的代價是工作壓力大,成為富豪的代價是心力交瘁,而若想改變人類的生活方式,那就要耐得住日復一日的枯燥和寂寞。酸甜苦辣都要自己品嚐,程式設計師的發展道路有很多條,就看你怎麼選。