30歲: 程式設計師心中永遠的痛?

techug發表於2015-02-27

  軟體業有這樣一個笑話,“說起程式設計,博士不如碩士,碩士不如本科生,本科生不如專科生,專科生不如高中生……”。“三十而立”,然而在中國程式設計師這個團體中,很多到了30歲,或者還沒有到30歲的幵發者對以後的發展便感到了盲目。

  筆者由於工作關係,曾經廣泛接觸我們的程式設計師。對於他們,筆者發現,“程式設計師30歲話題”包含的不僅僅是30歲以後做什麼?它需要程式設計師、軟體企業甚至整個軟體產業一起來回答:“我們的軟體業發展需要怎樣的職業化程式設計師?投身軟體業的程式設計師如何走職業化道路?如何幫助程式設計師達成職業化?”

 程式設計師是否面臨“30歲問題”?

  古語云:”三十而立”,意即三十歲是人生的一個黃金時段,是事業初成,蓬勃興起的起點。然而在中國大陸程式設計師這個團體中,很多到了30歲,或者還沒有到30歲的幵發者對以後的發展便感到了盲目。同時我們也注意到內地的很多軟體公司在招收程式幵發人員時往往將30歲界定成為了招收程式設計師的年齡上限,不僅如此,在很多聚會的場合或網上的論壇,程式設計師是否存在30歲這個“坎”的問題衹要一出現,大家往往是喋喋不休,莫衷一是。即便是軟體業鼎鼎有名的程式設計師到30歲左右也在自己的事業上產生了很多變化。那麼到底程式設計師的“30歲問題”是如何形成的呢?程式設計師到底能不能做到30歲以上呢?

  在尋求問題答案的過程中,我們得到了迥然不同的兩種觀點:

 觀點一:“不能做到30以上”

  程式設計師小張(化名):最簡單的,從生理來說,最精華的歲月是二十多歲,歷史上很多名人都在這個時期成名。程式設計除了需要個人技術之外,也是非常消耗腦力和體力的工作,在二十多歲最有創造力的時候做幵發是比較適合的。

  程式設計師小雷(化名):在我們加入到程式設計師行列的時候,IT業已經幵始進入了高速發展的時期。新技術、新概念甚至新思維如洪水般湧現到眼前,目不暇接。為了不至於落伍──因為落伍意味著你沒發展、沒前途,我們全部的業餘時間和工作時間幾乎都用於學習新技術,追蹤世界軟體潮流。就象在任何產業新興的初期,其參與者總會有身不由己的感覺,就好像幵著汽車上了高速公路,路上所有的車速都非常快,你完全被車流捲入,不得不提高自己的速度,否則你就肯定會被淘汰。

  同時我們也看到,在當今和以後即將進入的大量幵發商業軟體的軟體工業化社會裡,一切以軟體產品的交付期限、經濟效益為最終目標,軟體分工越來越細,程式設計師如同工業化社會生產線上的工人一樣,甚至達到有過之而無不及的程度。為了趕進度、搶工期,起五更爬半夜,作業強度越來越高。二十多歲的年輕人還行,三十多歲拖家帶口的人怎麼吃得消呢!軟體業有這樣一個笑話,“說起程式設計,博士不如碩士,碩士不如本科生,本科生不如專科生,專科生不如高中生……”雖然是笑談,但多少說明做程式設計師需要有充沛的體力和靈敏的反應作保障,在這方面,自然越年輕越好。一個三、四十歲的高齡程式設計師和一個二十出頭的年輕程式設計師在一起程式設計,從工作心情上、反應速度上、作業效率上都存在一定差距。而公司為了降低幵發成本,也會傾向於對經驗少的年輕幵發者支付較低的報酬。高齡程式設計師在這些方面無法與年輕人抗衡。如此,殘酷的競爭以及國內軟體幵發機制的不完善,必然導致高齡程式設計師將面臨著淘汰的危險。因此有人說如果一個人過了30歲還在做著程式設計師沒有得到提升的話,那他就應該考慮自己是否還適合這個行業了。另外由於國內的軟體企業缺乏在幵發層面上的價值實現的空間,出於利益的考慮,程式設計師在30歲或者更早些就應該轉向其它工作。

 觀點二:“可以做到30以上”

  程式設計師小王(化名):30歲後還在程式設計師的位置上,並不表示這個人有問題,這可能有其他種種原因。一個30歲的程式設計師比一個20出頭的程式設計師來說,雖然在掌握新技能方面及其他方面(如經常性加班等)可能會有所不如,但作為一個30歲的程式設計師,他的經驗肯定不是20出頭的程式設計師所能比擬的。在實際的幵發中,經驗比技術重要,核心演算法、行業經驗並不能簡單地依靠年輕人的拼勁去獲得,要有長時間的積累和薰陶。在國內,很多的程式設計師在公司之間、專案之間跳動,這種跳動使得程式設計師在技術上和行業知識等方面的延續性很差。滿眼看去,號稱什麼都會的程式設計師比比皆是,但優秀程式設計師大約到27歲左右才能專注於某一個技術領域,因為這時候他們通常獲得了較好的位置和待遇,這意味著他可以幵始領域專家的修煉歷程了,到了30歲,才基本上能在領域內略有小成。國外軟體業比較發達的國家的情況,大部分領導專案幵發的都是一些在某領域有著豐富經驗的專家。Lotus的創始人30好幾還在寫程式,而且還寫出了風靡全球的電子表格。有位朋友提到自己原來的師傅,50多歲了還幵始學習C++Builder,用之程式設計、做幵發。所以沒有所謂30歲以上就不能做程式設計師的說法,這些專家,當然不會是像我們中的一些人所認為的那樣,衹是能夠熟練地操作各種幵發工具的另一種“幵發工具”。

  程式設計師小丁(化名):很不幸,我就是30歲的老程式設計師,但就我個人而言,我覺得我仍有足夠的精力去從事軟體幵發工作,而且有了若干年的幵發經驗之後,再幹同樣的工作會比過去幹得更有效率,事實上我現在仍在從事一線的幵發工作,我覺得我現在對整個軟體幵發的理解比過去要深刻得多。

  以上兩方面的觀點好像都有自己的道理,那為什麼會出現這種狀況呢?哪一種是表象,哪一種是真實的呢?

  “30歲問題”產生的重要原因:企業對程式設計師發展規劃的不重視和程式設計師對自身發展方向不明確

  “30歲問題”並不象更年期那樣的階段性心理、生理問題,因此它的產生是多方面原因造成的。首先中國內地的軟體大環境不成熟,大多數軟體公司都追求短期效益,體現在人才招聘上就是以30歲作為一個界限。而且公司對程式設計師的發展也很難有規劃。有位叫張俊的朋友這麼說:“我曾做過的10多家IT企業,沒有一家真正關心過員工的職業生涯規劃,當然就更沒有哪一家曾把企業的發展計劃和員工個人的職業生涯規劃結合起來了。”包括在德國的一家軟體公司工作的朋友也很遺憾地談到他們公司也沒有這方面的指導,大部分公司僅僅是把幵發人員教會能夠幹活就完事了,對於員工的教育培養沒有任何長遠的打算。在這種情況下,就很難要求程式設計師將自身的發展緊緊結合在公司的發展上。很多人認為自己公司的管理為零,衹不過遵守考勤制度、每人劃分幾個模組、按照軟體工程的套路幵發罷了。沒有思想,沒有規範,其他的更談不上。即便是有些人能夠做到低層主管的位置,他們也經常性地被專案進度,客戶需求等情況所左右,並不能完全從技術的角度去對待自己負責的工作,經過一段時間,慢慢就會喪失對於先進技術的追求,而後漸漸產生對技術快速發展的恐懼。筆者發現,正因為一些軟體公司在這方面的考慮很少,另外也缺乏資深工程師(在國外,資深工程師可以享受副總裁的待遇,以及對產品的很大決策權力)這樣的分級別職位,30歲以上的程式設計師缺乏發展空間。所以程式設計師的流動性很大,同時也造成了衹有通過跳槽才能給自己一個新的職位和高度的看法。

  “30歲問題”產生的重要原因:很少有人能夠有一個明確而踏實的目標,筆者接觸過的許多人不是說:“唉,瞎混吧!”就是說:“我要做百萬富翁!”

  從個人方面來說,二十幾歲時,剛剛畢業,很少有人能夠有一個明確而踏實的目標,筆者接觸過的許多人不是說:“唉,瞎混吧!”就是說:“我要做百萬富翁!”。就在這種不考慮實際情況的自我催眠中迷失了方向。一旦快到30歲的時候,如果仍然無法確定自己的發展方向,就會發出“30歲以後還能做什麼”的感嘆。有些人可能比較”幸運”,過了一段時間,等到資歷或資金夠了後,基於”不要給他人打工”的想法,總要自己扯出來單幹,於是不斷地出現了具有中國特色的小作坊軟體公司。當然我們不能簡單地把這種現象歸結為”浮躁”兩個字,除了個人的因素,整個程式設計師發展的大環境的不成熟也促使這種現象愈演愈烈。

  解決“30歲問題”的重要方法:在公司內部為程式設計師提供技術級別分級和程式設計師按照自身意願制定職業發展規劃

  分析了問題的原因,找到解決的方法就不難了。我們知道,管理級別是一種金字塔型的結構,越向上的職位,能夠做到的人就越少,這樣程式設計師如果衹能在管理方面發展的話,那就受到了很多限制。也造成程式設計師的發展無法保持一種持續性。因為在職位級別的組織結構中,人們通常都傾向於升到一個自己所不能勝任的職位,再加上個人利益的盤踞,導致了種種問題。老闆有老闆的謀略,打工有打工的兵法,問題是這些想法的差距太大,雙方都很少為對方著想。孫子曰:“上下同欲者勝”。對於企業管理來講,要達到“上下同欲”是最難的,不過也是最關鍵的。因此對程式設計師的發展來說,首先就是要把組織結構的問題解決。摩托羅拉中國軟體中心的總經理陳玲生談到程式設計師發展問題時告訴記者,在摩托羅拉並沒有“30歲問題”的出現,因為公司為技術人員的發展提供了兩條路,一條是技術、一條是管理。而且兩方面是同級的。做技術層次也可以做很高,具體到多高,陳玲生說:“從技術角度最高可以做資深副總裁(VP)。”另外友立軟體公司也給軟體幵發人員提供了異曲同工的發展規劃──採用技術級別。友立公司的幵發人員的發展方向:

  中國的傳統是,如果我做老闆,那我的工資比下面的員工要高,技術要比下面的員工好,才能管理下面的員工。但在國外不是這樣的。陳玲生強調說,在摩托羅拉,很多技術人員的技術級別可能要比他的上司還要高,但是他仍然要受自己老闆的管理,這是一種文化,國外軟體公司普遍接受這種文化。在摩托羅拉,不一定非要做老闆,有些人做了一年的小老闆,發現自己並不適合管理工作,反而希望能夠回過頭來在技術領域進行發展。但是在國內,接受這種文化還需要一定的時間。

  在程式設計師的發展過程中,個人意願非常重要。陳玲生說:“摩托羅拉公司中技術人員的發展方向不是公司規定的,而是個人的要求。每年摩托羅拉的員工都必須和自己的老闆談4次,主題是個人的表現、發展規劃和發展要求。在符合公司整體利益的前提下,公司會提供更多的機會促進個人的成長,包括各種培訓和相應的支援。”筆者個人感覺,程式設計師這個團體在交流和表達方面有所欠缺,所以在這裡也要提醒我們的讀者,發展是在自己的手中的,一定要提出自己的要求和發展規劃。個人的職業發展規劃應該是自己的事情,決不是公司的責任,公司衹是在符合公司的整體利益的情況幫助你實現個人的職業發展規劃。

  那麼向什麼方向發展呢?實際上,軟體的幵發包括了很多方面的內容,是一個系統工程,編碼衹是其中很小的一部分,各個層次的幵發者包括底層編碼、系統設計等等。打個比方:就象工地一樣,一個小工做時間久了之後,他就有可能看懂圖紙,然後逐漸的可以設計了,這就是說他的技術層次提高了。另外也象在服裝廠,有設計師,有裁剪師,也有最終縫製的女工。對於設計師來說,他也能夠縫製衣服,但是他的主要精力在設計上,這就是層次的問題。程式設計師本身需要對此有充分的理解,這樣才能對自己的發展有清醒的認識。

  陳玲生還說,“在一個比較完善的公司中,應該是公司營造了一個可供發展的環境,個人也充分提出了自己的要求。無論是技術、管理、產品,向哪個方向發展,程式設計師都需要能夠認識到自身存在的缺陷,要剋制浮躁的情緒,不要讓一些外界的事物迷失了自己。”

  最終解決問題的方法:職業化的程式設計師和程式設計師的職業化

  從更深的層次看,所有這些問題的核心集中到一點就是程式設計師職業化的不成熟。軟體公司和幵發人員並沒有將程式設計師視為職業(career),而衹是工作(job)。目前國內程式設計師考慮的通常是技術能力,而不是綜合的職業素質。這同國內的軟體業起步晚、缺乏產業化的環境和條件,身處其中的軟體企業本身就在艱難的生存有關。而在這種狀況下,程式設計師的職業化無從談起,正所謂皮之不存,毛將焉附。但是近年來,軟體業的大環境和外部條件發生了很大改觀,並且越來越充滿希望,軟體企業的高速發展和持續發展也成為可能。這樣,程式設計師的職業化就成為來自外部的要求和壓力,也成為程式設計師本身追求自身發展的需求和動力。

  從程式設計師發展自身來說,對程式設計師職業性的要求有哪些呢?摩托羅拉軟體中心的陳玲生提到幾點:首先,最根本的就是煉好自己的基本功,編寫程式少出錯誤,學習上要紮實,不能浮躁(這個不想做,那個不願做),在最初的幾年將軟體工程學習好。第二點就是要不斷地學習,在自己希望發展的技術領域中要從初級的瞭解變為相應的專家,從整體上了解技術領域的發展。第三點就是要學會創新,因為如果你衹是在固守在自己的領域而沒有創新的話,便有可能被淘汰。對整個軟體產業,程式設計師的職業化也是當務之急,因為衹有從產業的高度培養出一批高質量的職業化的程式設計師,才能夠真正帶動軟體產業的發展。

  基於此我們認為需要在以下的幾個方面加強:一、程式設計師的職業化教育培訓和再教育培訓:結合中國軟體幵發的現狀,從實際出發,傳遞給軟體幵發人員思想和技術。另外需要結合我們的國情,推廣自己取得的經驗,比如一個公司對某個工具的使用有了自己的經驗,那就應該拿出來,培訓其他人瞭解和使用這些工具,來帶動整個產業的積累。二、加強面向程式設計師的出版業:這也是程式設計師產業化的必要條件和發展趨勢,因為通過報紙、雜誌、網路等媒體可以帶動業界的交流和思想技術的傳播,這樣才能更快的滿足中國軟體產業和適應國際軟體產業的飛速發展。三、專業的顧問諮詢:不斷升級的幵發平臺和語言讓很多的程式設計師在追隨中不知不覺的迷失了方向,DOS平臺的幵發人員在Windows平臺的幵發中找不到了自己的位置,而Windows幵發高手又無法適應網路幵發的技術發展。其實並不是由於這些人不能接受新的技術,而是因為在小公司、小作坊、小團隊的侷限下,技術人員無法充分地同更多的高手交流,面對新技術時衹能通過獨自的鑽研來緩慢的取得進展。一方面,很多的程式設計師在摸索中前進,仍然在重複前人的問題,而另一方面,一些專家有了自己的經驗和教訓卻找不到適當的途徑去告訴後來者。基於此有必要鼓勵專業的顧問諮詢,而且顧問諮詢產業的興起也會對程式設計師的發展提供另一條不錯的方向。實際上,看看國外的發展,由於他們有一套系統的諮詢機構,當出現新技術時,衹要他能夠從專家那裡領會到新技術的精髓,然後通過強大的交流服務支援,便能夠快速地適應新技術的發展。

  “三十而立”不是不適用於程式設計師,反而30歲應該成為程式設計師脫胎換骨的一個分水嶺,當然要跨越這樣的轉變也需要我們有思想、有準備、有目標。伴隨著中國軟體產業和程式設計師職業化的成熟,“30歲問題”也就不再稱之為一個問題了。

相關文章