30歲的智慧

在中國有不少人都認爲IT行爲是吃青春飯的,若是過了30歲就很難有機會再發展下去!其實現實並非這樣子的,在下從事.NET及JAVA方面的開發的也有10年的時間了,在這裏在下想憑藉本身的親身經歷,與你們一塊兒探討一下。程序員

  明確入行的目的數據庫

  不少人幹IT這一行都衝着「收入高」這一點的,由於只要學會一點HTML, DIV+CSS,要作一個頁面開發人員並非一件難事,並且作一個頁面開發人員更容易找到工做,收入比普通的工做還要高一些,因此成爲了不少高校畢業生的選擇。若是您只是抱着這樣一個心態來入行的話,那閣下可真的要當心了。由於幹IT這一行競爭原本就比較激烈,特別是頁面設計這方面,可以開發的人不少,因此爲了節省成本,大部分公司都會在須要的時候才招聘這類人員;在沒有訂單的時候,一些小公司還可能找各種的藉口或者以降薪的手段去開除這類員工。而在招聘信息上經常會看到「招聘頁面設計師,條件:30歲如下……歡迎應屆畢業生前來應聘」這樣一條,由於這一類工員對技術上的要求並不高,找應屆生能夠節約成本。因此在下以爲「IT行業是吃青春飯的」這句話只是對着以上這類人所說的,若是閣下缺少「進取之心」,而只抱着「收入高,容易找工做」這樣的態度而入行,那「IT行業是吃青春飯」將會應驗了。 編程

  選擇合適的工具c#

  JAVA、C#、PHP、C++、VB……10多種熱門的開發語言,哪種最有發展潛力呢?其實開發語言只不過是一個工具,「與其分散進攻,不如全力一擊」,不管是哪種開發語言,只要您全力地去學習,到有了必定的熟悉程度的時候,要學習另外一種的語言也是垂手可得的事情。開發語言主要分爲三大類:設計模式

  1. 網絡開發 安全

  如今網絡已經成爲世界通信的一座橋樑,好像Javascript、PHP、Ruby這幾類開發語言大部分是用做網絡開發方面。網絡

  2. 企業軟件開發架構

  JAVA、C#、VB這幾類開發語言都實現了面向對象開發的目標,更多時候用於企業系統的開發。編程語言

  3. 系統軟件分佈式

  C語言、C++、Objective-C這些軟件更可能是用在系統軟件開發,嵌入式開發的方面。

  固然,這分類不是絕對,像JAVA、C#、VB不少時候也用於動態網站的開發。在很開發項目都會使用集成開發的方式,同一個項目裏面使用多種開發語言,各展所長,同步開發。但因此在剛入門的時候,建議您先爲本身選擇一種合適的開發工具,「專一地投入學習,全力一擊」。

  明確發展方向

  當您對某種開發語言已經有了必定的瞭解,開始以爲本身如同「行屍走肉」,成爲一個開發工具的時候,那您就應該要明確一下本身的發展方向了。

  日常在公司,您能夠看到作UI層的開發人員大多數都有20多歲,他們充滿幹勁,並且沒有家庭負擔,在兩年前ASP.NET MVC 、Silverlight等剛出現的時候,他們能夠在晚上回家的時候買幾本書或者直接上網看看,研究三五個星期之後,對須要用到的技術就已經有必定的瞭解了。而年過30的人多數是已經成家了,他們天天9:00點上班惟一的但願就是快些到6:00點,能回家吃飯。吃完飯只想陪孩子玩一下,看看孩子的功課,對新增的技術缺少了學習的慾望。因此不少接近30歲的程序員都有着一種逼迫感(包括30歲時候的我本身),再過幾年應該怎麼辦?這時候,您就更應該明確一下目標,努力向本身的發展方向前進了。概括一下,可從下面幾項裏選擇適合本身的一條道路:

  1. 從技術向業務過渡

  在國外,不少發達國家都很重視人才,一個高級的程序員與一個Project Manager收入相差通常不超過15%。但中國是世界上人口最多的國家,國內人才衆多,因此人才濫用的狀況常常能夠看到。一個小公司的開發部裏面常常會見到新面孔,但PM卻不會常換。由於作老闆的對技術是一竅不通,依他們看來只到拉住PM的心,那技術方面方面就能搞得定,至於技術部要換人,他們根本不須要費力氣去管。因此從一個技術員過渡到一個PM是向前發展的一個選擇,但開發人員也須要知道,要成爲一個PM不僅僅是使用技術,而更重要的是對管理方面的認識。一個PM主要的工做是組織團隊,控制成本,管理業務,控制項目進度,與客戶進行溝通,協調工做,按期進行工做報告等。因此要成爲一個成功的PM更要重視組織能力,PM必須能提升團隊的積極性,發揮團隊所長,在有限的開發資源前提下爲公司獲得最大程度上的利潤。成爲一個PM後,一般不須要直接接觸技術開發,而着重管理的是業務發展,但PM對技術也須要有必定的瞭解(在下曾經爲PM對技術瞭解的必要性寫過一篇文章,獲得不少支持但也惹來很多的爭議)。在這裏我仍是要強調本身的觀點:要成爲一個成功的PM最重視的是管理能力,但對技術也應該有足夠的瞭解,由於這是與團隊成員溝通的橋樑,只有這樣才能與整個團隊的成員有着緊密的結合,讓團隊成員感受到他們本身存在的意義,從而調動團隊的積極性,而不是漠視技術人員的存在。技術並不是成爲一個成功PM的充分條件但倒是必要條件!

  2. 從程序員向技術管理髮展

  其實一個Team Leader的職責與Project Manager相像,但Team Leader更着重於技術開發方面,一般一個大型項目都會有一兩個開發團隊由Team Leader帶領,負責開發核心部分,而其它部分分派給不一樣開發小組或者分派給外包公司。在網上常看到幾句話,貼切地形容了PM與TL的區別:「技術人員樂於被領導;但他們不喜歡被管理,不喜歡像牛同樣被驅趕或指揮。管理者強迫人們服從他們的命令,而領導者則會帶領他們一塊兒工做。管理是客觀的,沒有我的感情因素,它假定被管理者沒有思想和感覺,被告知要作什麼和該如何作。領導是引領、引導,它激勵人們達成目標。領導力是帶有強烈我的感情色彩的,它不是你能命令的,也不是你能測量評估和測試的。」

  不管是PM與TL,對業務與技術都要有深刻的瞭解,只是PM更側重於業務的管理,盈利的多少,風險的大小等等,而TL則側重於項目的成本,開發的難度,軟件的架構等技術方面的問題。在某些人眼中,技術與管理就像魚與熊掌,不可兼得,但依在下看來,二者倒是秤不離砣,密不可分。只要及時提高本身對技術與管理的認識,不斷地向深一層發展,要從程序員提高到技術管理人員只是時間的問題。打個比方,一個普通的.NET程序員,開始可能限制於ASP.NET的頁面開發,但一旦他有了發展之心,他天然會對ASP.NET MVC、Silverlight、WinForm、WPF這些UI的開發手法感到興趣,學習不須要多少時間,他可能就會認識這些UI開發只不過是一些工具,其實在開發原理上沒什麼區別。接着他就會向深一層的通信模式進行了解,認識TCP/IP、Web Service、WCF、Remoting這些經常使用到的通信方式,這時候他可能已經感受到本身對開發技術有了進一步的瞭解。進而向工做流、設計模式、面向對象設計、領域驅動設計、面向服務開發等高層次進發,最後成爲技術的領導者。上面只是一個比喻,但要注意的是,在學習的時期必須注意的是與同事之間溝通,不少的開發人員喜歡獨來獨往,開發的項目總想一我的搞定,不受外界的干擾。但要明白,就算你有天大的本事,一項大型的項目也不可能由你一我的全扛着。因此團隊的合做性與同事間的溝通是必要的,這也是成功一個TL的必要條件。

  3. 單方面向技術發展

  能成功進行技術開發的尖端人才,這是在下最嚮往的工做,卻也沒本事登上這個位置。不少從事開發的人都會認爲,業務總會帶着「金錢的味道」,老闆歷來無論開發是否合符開發原則,是否通過必要測試,他們只會在客戶面前無盡地吹噓,項目到期能成功交貨,只要不出什麼大問題那這個項目就算成功了。其實咱們也要明白:開發項目最終目標是爲了賺錢,在開發過程當中對項目成本的限制和效率的控制這也是必須,因此這才須要管理人員對項目進行管理。但開發人員也很想避開這「金錢的塵囂」,全心投入到技術的世界當中。因此對技術有着濃厚興趣的人,每每會深刻地研究某一項技術,成爲技術上的精英。但在這裏說一句使人心淡的話:中國已經屬因而世界上第二大經濟體同盟國,但國民生產總值主要來源於第三方加工產業方面。中國能夠說是人才輩出,但卻在高新產業上卻比發達國家落後。這幾年的確看到咱們國家在高新科技上有着質的飛躍,但跟歐美髮達國家還有着一段距離。因此想在中國成爲尖端技術的人才,無能否定比在國外要難。依在下看來,要想成爲尖端的開發者,必須對C、C++、彙編語言、嵌入式開發、Windows API、Linux API這些底層技術有着深刻的瞭解。要知道解JAVA、.NET……等這些之因此稱爲高級開發語言,並非指它們比C、C++、彙編語言更高級,而是指它們封裝了C、C++等等的功能,更適合用於企業軟件的開發,使開發變得簡單。但若是要開發一些底層的軟件,大型的系統的時候,就必須用到C、C++、彙編等開發語言,這是成功尖端人才的一個條件。

  肯定將來的目標

  人是從歷練中成長的,古人云:三十而立,形容的不是一我的的社會地位,經濟來源,而是形容一我的對將來的目標,對人生的意向。要成爲一個成功人,就應該早日爲本身定下長期的發展目標,做爲一個開發者也當如此。隨着人的性格,取向各有不一樣,你們爲本身所選擇的路也有不一樣:

  1. 自立門戶,勇敢創業

  快30歲了,不少人會認爲要想真正賺得了錢,就應該自立門戶,爲本身創業創建一個基礎。像北京、上海、廣州這些一級城市,要買房子,一手樓基本要在2萬~4萬元/平方米左右,而在一家普通的IT公司當上一個項目經理,基本收入通常都在1.5萬~3萬之間(除非在大型的跨國企業內工做,那另當別論),要買一間100平方米左右的房子,就算不吃不喝也幾乎要10年的年薪,因此選擇自主創業,是不少IT開發人員的一個將來目標,想要達到這個目標,就應該更多地把業務做爲重點。不能否認的一件事,在中國社會裏不少時候講的是「關係」,即便這30年的改革開放使中國的經濟蓬勃地發展起來,但幾千年來留下的歪風仍是不能徹底的磨滅。因此想要創業的人事建議你要多跟客戶打好關係,與合做夥伴保持互利互動的模式,這將有利於往後事業的發展。

  2. 急流勇退,退居二線

  這也是很多人的選擇。不少人在有了家庭之後,感受到壓力太大,人的一輩子並不是只有事業,他們想把更多時間用於對親人的照顧,對孩子的關心上。因此不少人會選擇一份像系統分析、系統維護、高校教師、專業學院講師這一類的工做。收入穩定,並且每每沒有一線開發人員那麼大的壓力。

  3. 不懈努力,更進一步

  不管你是一個Project Manager或者是Team Leader,若是你想繼續晉升一級,那仍是會兩極分化的。從一個PM到一間公司的管理層,那所面對的事件會有不少變化。一個公司的總經理,要管理的再也不是一到兩個項目的成本,而是整個部門的運做,整間公司的業務流程,因此要肩負的任務會更重。在下曾經有一位上司彭博士,他是企業的最高領導人,年薪超過三百萬,並且在報紙雜誌上也曾經亮過相。日常只會在某些會議上輕輕地亮下相,說兩句講詞,日常的公司運做與業務管理都不須要他直接執行。這並非說一個做爲管理層很悠閒,由於他們要面對的是更多的社會關係,與公司合做企業的聯繫上。這跟一個PM的工做有很大的區別,因此要從一個PM晉升到管理層,那但是要付出更多的努力與汗水。

  若是要從Team Leader上升爲一個技術總監,那工做的方向也有所改變。像以前所說:一個TL可能更重視的是技術層面,講求與團隊之間的互動合做性,更注重的是開發的完善。而一個技術總監就無須要直接參加某個項目的開發,而注意的是開發的效率與成果,如何合理使用有限的開發資源,控制開發的風險和可能帶來的效果。

  發展感覺

  經歷了8年多時間,在下從一個程序員到一個項目經理,之間通過不少的曲折,但由於每個人的際遇都有所不一樣,所走的路也有不一樣,正所謂條條大路通羅馬,成功的路不止一條,在下也不想令各位誤解,而只想爲你們說一下個人發展方向。若是您是一位開發人員,「程序員->架構師->Team Leader(Project Manager)->技術總監」是一條不錯路,這也是在下選擇的路。在我國,想要進一步提高本身,不管你想是以技術爲重點仍是以業務爲重點,都離不開管理二字。在一些大型的企業,一個團隊每每會配備一個PM與一個架構師,儘管兩我的負責的任務各有不一樣,但你會看到一個架構師的收入每每不如一個PM,PM每每是這個團隊的核心領導者,是關鍵人物。由於公司可否賺錢,PM有着重要的做用。PM與TL並無絕對的區別,並且在一些中小型企業,一個開發團隊只有3~5人,一個TL每每會兼備業務處理、成本控件、架構設計、開發管理等多項任務。因此在下會把Team Leader與Project Manager定於同一層次,一個公司的老闆每每不會知道團隊的架構師、程序員是何人,而只會向PM詢問項目的進度,因此只有晉升到這個層次,纔有機會進一步提高管理能力,讓本身有上升的空間。至於要成爲一個技術總監,那要求就再也不單單是對單個項目的管理,而應該更則重於新興技術的引用,開發資源的合理利用,對開發項目敏捷性的處理等等,對此在下也在試探當中,未敢多言。

與編程牽手 和代碼共眠 從程序員到技術總監

從業IT十年,從程序員成爲技術總監,如今回頭看一看,這條路也伴隨國內的IT一塊兒風雨兼程10年,對IT技術由其是IT的純軟件開發這一塊,向即將要從事軟件技術研發的朋友談一談個人見解:
    
    一.認清當前IT形勢,選擇合適的技術方向和技術起點
    
    估計你們都多多少少知道,這個IT行業知識的更新很快,競爭很急烈.
    
    若是你對本身之後發展的方向在從業前有一個清析的計劃或認識,相信你會比別人走得更好,走得更遠,賺的錢也更多...呵呵
    
    IT軟件從業的方向,通常都會有這些機會:產品售前(市場,業務),產品開發(編碼,設計,測試),產品售後(支持,實施),產品管理(項目管理等)
    
    A.產品售前(市場,業務)
    
    要從事這一塊的工做,主要是在軟件開發的前期(無產品),或者合同簽定前期(有產品).
    通常要求對相關的業務和技術都要求很高,這可不只僅是要求人際關係,交際能力.
    要想別人買你的產品,你得以專業的產品品質爲後臺,以專業的談吐,專業的技術和專業的業務理解能力來取勝.
    
    從業者要求:
    要求從業者要有必定的社會經驗,技術經驗或業務經歷,或必定的社會圈子和交際能力.
    
    建議:
    剛剛從學校畢業的朋友或不符合上面條件的朋友最好要考慮清楚了.固然這世上沒有什麼絕對的東西,就看你本身了.
    
    現實狀況:
    據我所瞭解的,做這一塊的都會是公司一些高層(有關係,有經驗)和業務專家或特殊背景的人員等.
    
    B.產品開發(編碼,設計,測試)
    
    這一塊的工做,固然是IT從業大軍的主力了,但也得要考慮清楚.
    若是你要做設計師,或測試,最好先做一段時間的編碼,
    一個好的設計師是不可能不精通相關技術平臺的!
    國外好的測試人員也幾乎是從開發人員中選出來的,基至是軟件開發高手.
    
    a.代碼編寫
    在這一個職業選擇範圍內最好是從代碼編寫開始.固然你也能夠先做測試,看看人家是怎麼寫代碼的是如何來做這個軟件的,
    借用人家的測試經驗也能夠,之後有機會再來編一段時間的代碼也行.
    有時本身去寫一個軟件也能夠,因此做編碼和測試都是一個雙向交互的.而不是編碼在前測試在後的.
    
    做代碼的編寫最好本身先看看別人的軟件,或由一些高手帶着指導一下,如今技術的學習都不成問題,關健是要連成一條線來學習和思考就會有必定的侷限了.
    因此要熟悉整個的項目流程或業務流程不是靠我的編碼或在培訓班學一下就能解決的,我的的技術學習和培訓班大部分只能解決技術的學習問題,但做軟件不只是要技術呀
    三分技術七分業務說得不爲過,業務的學習也是一個開發人員所要必備的,若是你在不熟悉業務細節以前建議你不要急着去寫代碼,那樣確定會是對之後軟件的影響很大.先要熟悉一下業務.
    
    因此軟件開發人員掌握一門技術平臺和語言是必備條件但同時也必需要有必定的業務知識,這樣纔是一個合格的軟件開發人員.固然精通軟件編碼,懂設計,熟悉業務,熟悉軟件項目開發流程的軟件開發人員是優秀的,那是高級研發人員的必備條件.
    
    若是你才入門或轉行或剛畢業,建議從基礎的代碼編寫開始,跟着高手或找一些成熟的項目多學習,
    
    b.軟件設計
    固然這個職業要求行業的經驗,技術經驗都要有必定的基礎,薪水通常也會高不少,因此也是一些開發人員熱烈追逐的目標.但一個好的設計師不是一二年所能練就的,精通編碼,熟練設計模式和公司所採用的技術平臺,熟練一些設計理論並實際多運用,熟練公司業務,其實這個層面的壓力也最大,一個好的軟件在設計上的比重幾乎要佔到七成.
    
    建議剛畢業的朋友或軟件初學者不要在這一塊來湊熱鬧,即便你做成了設計師,但在我眼中看來你也不是一個合格的設計師...固然你有這個能力來做設計師就要恭喜你了.
    
    
    
    c.軟件測試
    
    熟練軟件測試的各類理論或實際運用,也要熟悉編碼技術及相關的技術平臺,熟練掌握業務.
    軟件測試中通常都會有:
    單元測試,要求你熟練開發技術進行跟蹤調試,也就是白盒測試了
    集成測試,對整個項目流程的測試,要求掌握業務知識,對設計的軟件能做功能上的測試或壓力測試等 ,屬黑盒測試
    確認測試,對業務要很熟悉,測試軟件是否徹底知足了客戶的業務需求.
    
    整體建議:
    1.熟練一種技術平臺,熟悉一種業務
    剛入門的朋友很容易犯的一個毛病是,熟練:VB,VC,.NET,JAVA,C++,C,Dephi,PB,幾乎市場上要用的他所有會,唉,若是我看到他的簡歷上有這麼一句話,這我的確定不會在我考慮的範圍了.
    如今全球用得最廣最多的技術平臺體系也就三大致系:
    
    sun的J2EE技術體系(JAVA):在高安全性,高性能上更勝一步,中高端市場上用得多
    
    微軟件的技術體系(C++,.NET,c#,VB):在中,低端市場佔絕對優點,也是全球我的電腦操做平臺用戶最多的.
    
    CORBA技術體系統(一種分佈式技術體系和標準),
    全稱:Common Object Request Broker Architecture:公共對象請求代理結構,能夠用不一樣的編程語言寫成,運行在不一樣的操做系統上,存在於不一樣的機器上。
    通常介於底層和上層管理軟件之間,
    
    
    其餘的還會包括底層開發:C,彙編,屬純底層的開發,固然要求技術的起點和業務背景更強,最好是學的專業:電子電氣,嵌入式行業,機械製造,數據採集等...
    
    
    看中你想要從事的技術體系,選好一門語言工具,好好上路吧...:)
    永遠要記住:你什麼都想學,你什麼都學不精
    
    
    2.從基礎入手,不要好高鶩遠,眼高手低,要與實際結合
    
    
    B.產品售後(支持,實施)
    這一塊對於開發技術的要求來說不是那麼明顯,主要工做會在軟件開發後的工做,跟客戶打交道多,但更多要求體如今對業務的把握和客戶的交際上.
    有些軟件產品業務比較成熟,若是參與這一階段的工做,能夠快速學習不少的業務知識,積累客戶交往的經驗
    
    建議:剛入門或剛畢業的朋友,能夠在這個工做上多選擇,等待時機成熟,立馬殺入軟件的開發或設計階段,固然,這一塊的工做做得好也不容易,若是適合你做,
    工做環境或工資都不錯你就大可沒必要多想了...
    
    
    
    C.產品管理(項目管理等)
    
    這一塊的工做主要體如今管理上,固然適合有必定經驗或管理能力的人員來擔當,

最後的技術從業方向總結:
    
    技術型:先選擇好一種技術平臺,熟練一種開發語言和數據庫...專業專一的搞幾年再說
    
    技術+管理型:若是你有必定的技術經驗了,而且人際交往,管理能力不錯,你就能夠向這個方向發展
    
    技術+業務型:精通一種技術平臺,精通一種業務,好好搞,這種人才最受歡迎...
    
    管理型: 若是你有必定的社會經驗,從業經驗,若是人際交往,管理能力還能夠,老闆也喜歡,就搞這個
    
    業務型(市場):若是你對業務很感興趣,跟客戶的交往等也不錯,你能夠選擇了,有適合的專業技術就更能錦上添花了
    
    技術+市場+管理:老大的位置....:)

相關文章
相關標籤/搜索