30歲: 程序員心中永遠的痛?

>>>  技術話題—商業文明的嶄新時代  >>> 簡體     傳統

age-old

  軟件業有這樣一個笑話,說起編程,博士不如碩士,碩士不如本科生,本科生不如專科生,專科生不如高中生。三十而立,然而在中國程序員這個團體中,很多到了 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 歲問題也就不再稱之為一個問題了。


Cnblogs www.techug.com 2015-08-23 08:57:30

[新一篇] 17年了!Logo涂鴉并不能賺錢,但谷歌為何還沒玩膩?

[舊一篇] 【趣事】一根網線發起的攻擊 - EtherDream
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表