13、敢問路在何方
由于寫了這個《三五個人十來條槍》系列,受到了許多網友的歡迎,所以也每天接到了很多網友們的問題請教。
我整理了一下,大部分網友有以下四類:
正在上大一或大二。問最多的問題就是學什么語言好。
正在著急找工作,但不知道如何才能找到工作的應屆畢業生已經做了3-4年的開發,但感覺自己已經沒有上升出路了的仍然原地踏步的程序員做了1-2年的項目經理,大小也算個頭兒。但整天沒完沒了和客戶和手下和老板溝通推進,每天很忙,每天很累,但總覺得自己很空,沒有什么真本事,就覺得自己到處竄騰,客戶逼著趕快出功能,老板逼著怎么還不結束到底問題在哪兒,手下素質太低,好幾天搞不定問題還帶著耳機邊開發邊聽歌。
開發語言大戰,論壇中一堆堆的口水帖,每次都極為壯觀。雖然大家都說開發語言并不重要,整天盯著開發語言層次太低,但每次這樣的爭論帖子發出,都跟帖無數。
我也曾有過選擇開發語言的經歷。
我過去學的是C。但是我在校期間出去打工的時候,發現社會需要的是dbase、Foxbase、Foxpro。于是我就改學了開發語言。但是現在,會這些開發語言,想去找工作,勢必登天難。
大家爭論各種開發語言,其根源就在于此。尤其準備兩年后畢業工作的大學生。如果現在選擇了一門開發語言,自己在學校努力學習了兩年,一畢業發現這門語言根本社會很少有公司用,那么找工作就困難了。所以很多學生朋友問我該學什么語言。
我在我的另一篇帖子中也寫過流行技術我到底該學哪一樣。我大致給大家在這里總結一下:
現在社會,主要的開發應用是互聯網網站。主要是asp、asp.net、JSP、PHP、Python、Ruby、Perl。
網絡游戲。主要是嵌入開發、硬件開發、通信與網絡開發,主要是C/C++。中國大量的家電、數碼、手機、電信設備都屬于這類。
外包。主要是JAVA和.NET。
企業管理類軟件。WEB開發,主要是JAVA和.NET。C/S開發,主要是DELPHI、VB、VB.NET、C#、PB、VFP。
所以,你選擇了什么開發語言,那么你應聘的公司就有了區別。所幸,我上述所說的五類開發應用,現在都有許多公司。所以,選擇其中的開發語言,學扎實,有實際案例經驗,人品端正,做人踏實努力積極主動,應聘應該是沒有問題的。
不過,工資是有高有低。互聯網網站公司,大公司薪資福利好,就看你的畢業學校和你的聰明勁了。如果你感覺自己一般,能選擇的就是無數的互聯網創業小公司。這類公司倒閉風險大,薪資福利和工作條件可能艱苦,要的人也可能是熟練手,而不是新手。還有一些中不溜的互聯網公司,比較偏向偽互聯網。主要做廣告推廣或網站制作或電子商務線下買賣,做了5-6年了,可能需要一些剛畢業的學生做維護開發工作。
現在熱門的網絡游戲和嵌入開發,工資高、未來發展潛力大,但技術門檻也高。如果你學技術中不溜沒有快速成長天分,也不愿意深鉆,總想著機會主義,這個流行就學這個那個有興起了趕快轉移學習目光。這種思路,別說這些熱門行業,就是那些傳統行業也難找到工作。
對于外包,外語是第一位置,而開發技術反而是其次。因為外包都是大規模作戰,分工很細,每個程序員能做的都是熟練工種,人海戰術。尤其一些對日外包的項目,人家日本人連偽代碼,函數名,參數名,參數類型都給起好了。
對于企業管理類軟件,和外包很類似。技術普遍要求不高,常見都是增刪改數據庫的應用。也是人海戰術。不過工資就比外包要低了,因為外包是老外掏錢,而面向國內銷售的企業管理軟件售價就低了。而且國內很多公司都是從事企業管理類軟件。因為只要有客戶關系,就可以做,沒有多少技術難度。找工作是好找,但打一槍換一炮,反復需求修改,一個人搗鼓一個項目身攬數職,讓人感覺沒多少發展。
你覺得依你的畢業學校和你的人品和你的技術學習能力,你覺得你能達到哪個你喜歡做哪個,你就選擇定不斷努力,不要還在晃來晃去,最后什么都不精什么都看了點,這類人什么工作也找不到。
我過去上學的時候,網游、嵌入、外包都還不流行,很難找到工作。互聯網剛大家知道,新浪SOHU剛出來,外國互聯網發展成啥樣都還不知道。所以主要熱門的就是企業管理類軟件開發。用的最多的就是VB、PB、DELPHI、VFP。DOS下就是dbase、Foxpro之類。當時DOS應用還非常多,街面上還有許多培訓打字和WPS的培訓班,WINDOWS剛開始普及,Foxpro和VB的書還賣的非常好。我一邊學了foxpro打工賺錢,一邊學了DELPHI。大部分同學什么都不學,跟著老師聽課做作業,準備畢業了回家鄉讓家長找個好工作,進個電廠或銀行或公安局。我那時候已經有了不少打工工作經驗,而且我訂閱的《計算機世界》給了我許多看業界前沿技術和業界最新消息的啟示。那時候好多同學都不看報,少數的訂閱《電腦報》,整天在琢磨那些小技巧。我就是得益于《計算機世界》,讓我在省城看到了中國的IT發展,世界的IT發展。因為當時熱門的主要就是企業管理軟件,所以我選擇了組件技術和數據庫技術作為主攻學習的方向,這都是開發企業管理軟件的核心。當時由于感覺VB、PB在語言嚴謹性、技術先進性、代碼開放性、控件多樣性、底層控制性上都不如DELPHI,所以我選擇了DELPHI,放棄了我心愛的VC++4.0(由于從高中就自學C和匯編,所以對C很有感情,雖然當時沒有什么C的應用讓我很茫然到底學習C有什么用,而且VC++4當時的版本向導和可視化弱,都靠手敲代碼,敲個400多行代碼,才能運行一個什么都沒有的普通窗口。而DELPHI能很快就出一個普通窗口,讓我驚喜萬分。但是,如今JAVA和.NET的雄起,DELPHI的隕落,讓現在學習DELPHI的大學生不知道如何出來找工作,只能趕快換開發語言)。
對于正在著急找工作的應屆畢業生。和他們交流過程中發現了一些共同的特點。按說他們現在有互聯網,有BLOG,有論壇,有電子書,有搜索引擎,大量開源代碼,而且學校里電腦幾乎普及。但是他們的學習狀態,和我10多年前上學的時候還是一樣。像我的同學一樣除了畢業證什么也不會。就連畢業設計,還是圖書館管理系統之類的畢業設計。我過去在上學的時候,互聯網極其資源匱乏,而且上網牛慢費用巨貴,而且沒有搜索引擎。我是到處買書,到處找源代碼進行閱讀。我當時閱讀了DELPHI的源代碼,從學校老師那里找來的UNIX的源代碼,嚴援朝的CCDOS源代碼,WINDOWS API庫SDK幫助說明。我做的本科畢業論文就是《從單機到C/S到B/S》。我收集了大量的資料來寫來論證。記得前幾天,我指導一個網友去下載一些源代碼閱讀。幾天后,給我又發求助,說找不到啊。讓我幫他找一個給他。我無語了。看來,這不是搜索能力不行,這類員工我是不會要的。居然讓我幫他找一個。虧他能想的出來。
我也面試過許多應屆畢業生。他們老給我展示他們在學校的干部職位,拿了多少優秀學生和獎學金,參加了多少社會活動。這不是我所關注的。這是HR關注的。他們會在收到你的簡歷篩選第一輪的時候就看這些。到我這里,我只關注技術問題。
一個應屆的畢業生,當然實踐工作經驗有限,技術也有限。當熟練手來問問題是顯然招不到一個合格的畢業生的。我一般會考察他的技術理解思路和技術理解速度和他的表達思路是否清晰有重點。我還會問他看過哪些源代碼,平時看什么技術類的書籍,參加過哪些打工開發工作。一個不主動努力,不勤于思考鉆研的人,工作中也會如此。一個說話思路都不清晰沒有重點的人,寫出程序也是一片混亂。他看什么樣層次的書籍和報紙雜志,就能知道他的眼界有多寬發展有多少發展后勁。如果他做的畢業設計很獨特,很有思考力,我就會比較贊許。因為他是在真心思考和努力,而不是混畢業設計。
我一般建議應屆畢業生,先不要著急找工作。很多人跟我說:怎么找工作啊。再找不到工作就餓死了。我看到不少手下的80后員工,現在自己賺錢了還和老媽要錢花,也沒餓死,反而每月工資打車、吃飯、買ipod、買PSP。所以,餓不死。你既然在學校什么都沒學到,現在要找工作,就拿點東西出來看。否則,你什么優點也沒有,沒有一壺可以提起的,怎么能讓人家要你呢。到網上下載一個源代碼,進行修改。其實修改并不是目的,也不是讓你去跟招聘者去說這個系統是我做的。我讓大家修改源代碼,是為了讓大家動手去分析源代碼,學習人家的模塊分割,架構,編碼規范,編碼方法。你在修改的過程中,你就會遇到問題,你就會被迫去尋找如何解決技術問題。這是一種有明確目的的學習,所以學習非常快,而且學到的東西都是非常實用的。在學校為什么無法做呢?就是由于你沒有壓力,到了臨畢業才有壓力。有壓力才會去主動思考和主動解決。沒有主動性的人在這個世界上還是占大多數。所以到了企業才需要管理。
對于已經做了3-4年的開發人員,仍然原地踏步。我非常關注這類程序員。因為作為一個畢業了3-4年的人,畢業前兩年是拼命工作和學習的兩年,第三年是發揮和做事的一年。第四年,因為第三年做事和發揮,發現遇到了不少阻礙,卻搞不清楚問題到底出在哪里了,就很懷疑是不是過去三年的學習和努力到底對不對,哪里不對了。但眼界又決定了他們不能想清這個問題的答案。于是他們對未來該怎么發展都覺得迷茫。想跳槽,又不知道自己能干什么,正處于灰心期。想學習,又不知道學習什么有前途,于是什么都學,新技術層出不群,反而弄的更心慌了。有的同學自己創業了有了自己的小攤子,在國企和公務員的同學也高升了,有的同學也升做了項目經理,自己還是個程序員。想開發個什么網站,嘗試后發現自己都是瞎搗鼓,想開發個什么軟件,卻發現現在什么軟件都不好賣,自己又沒有客戶關系。唉,怎么混的這么慘。有些程序員,就是在干了5年程序員后,不是轉行了,就是拋棄了企業管理軟件開發,從頭做起,改做互聯網網站了。發現思路格格不入,技術也是新學,比不上人家一開始就做互聯網的。尷尬自知。
我自己也經歷過這個階段。我深入研究了許多技術,發現并不能很好解決軟件開發中遇到的問題。該如何解決,我也不知道。
大家看我的經歷,就會發現,我研究技術,是為了解決軟件制造和實施和服務中的問題,而不是純粹因為感興趣而學習技術,為了顯示自己是公司技術最厲害的人而學習技術的。這在商業軟件公司根本吃不開。商業軟件公司,賺錢為主。如果你的技術無法給公司賺錢帶來幫助,就根本沒有用。
有些做了3-4年的程序員,做到這個階段,新技術看了一大堆也不明就里,仍然在學習hibernate怎么配置怎么用,structs怎么配置怎么安裝怎么調試。說明這類程序員缺乏開發天分,無法在技術上成長為優秀的程序員或技術專家了。
不過有些技術很牛的人現在也很困惑,工資就是不漲。我建議他從幫助產品提高銷售額的角度去把自己的技術應用到產品中。我過去有個手下,做行業信息化管理軟件,卻不愿意深入了解這個行業。自認自己要成為技術專家,要做最好的軟件架構,于是拼命學習了N多框架,對比分析,做源代碼閱讀,做實驗嘗試新技術,整天熬夜。做出來的架構卻是并不能減輕業務功能開發人員的工作量。老需要注意N個地方,配置多個選項。配置錯誤就運行錯誤。這類架構還不如沒有。我們是在開發行業信息化管理軟件,不是在做變型金剛。我們不希望一個能制造汽車,也能制造輪船的東西。我們就需要制造小轎車的平臺架構,連制造卡車的平臺架構都不需要。但你制造的卻是一個個的螺絲和鋼管。
如果有的技術牛人,技術也能很有效的幫助產品提升。但工資還是不漲。可能跟公司摳門有關。可以建議去發表一些博客來提高江湖的知名度,這樣請你去做技術咨詢方案的人也有可能找到你。
在企業管理軟件開發公司,一般有以下這些職位可供發展:
實施人員、實施經理、咨詢經理、售前、市場、銷售服務人員、服務經理開發人員、高級開發、客戶化定制開發、技術專家、開發經理、技術總監、如果你善于組織和調度人,善于推動項目和控制項目,善于和客戶溝通理解客戶,那么你可以往項目經理職位轉變。實施經理、服務經理、開發項目經理,都可以選擇。開發經理,未必是技術最好的那個人。
如果你不善于和人打交道,技術也不行。那么做一個踏實穩定勤懇的客戶化定制人員或技術服務支持人員。并且在工作中不斷小改進,讓自己的工作更有效率更有效果。
如果你不善于和人打交道,技術也不行,但對客戶業務比較熟悉,那么建議你踏實工作,做好實施(做好實施的人未必會與人打交道。我發現很多性格內向的人,提升自己的職業化工作細節,公事公辦也達到了很好的實施效果)。從實施,可以轉向咨詢、售前。但咨詢、售前都是很需要結構性思考和細致觀察的工作。
如果你技術無望、不善于和人打交道,也不善于組織控制,也不善于細致觀察思考,也不想踏實勤懇,卻想到處跳槽漲工資。我想你恰恰什么都得不到。你是最容易被裁掉的那個人。選一樣,你必須選一樣。即使你一無是處踏實努力干活保證質量和進度也好啊,現在,踏實努力干活的員工在每個IT公司都是寶。
我有個朋友,過去是做開發的,最后做了實施項目經理。老覺得自己的工作很空,混了幾年代碼也忘了,就會跟人扯皮了。自己也不會結構化思考,當不了咨詢顧問。也不想做市場和銷售。問我該怎么職業發展。
我給他講了一個故事,我問他:你覺得,西游記師徒四人,你要開除,首先開除誰。
我的朋友說:當然開除豬八戒。他又自私又貪心又好色,誠懇不如沙和尚,武功不如孫悟空。
我又問他:哪第二個應該開除誰?
我的朋友回答:當然是唐僧。他沒啥本事,還老誤解人,什么本事都沒有老拖后腿,每次得解救他。
我說:那好。如果就讓孫悟空和沙和尚兩個人去取經,他們能取到嗎?不過他們不能一個跟頭駕云去,那就沒什么討論了。
我的朋友說:他們倆怎么能取來經呢?在公司里,如果把一個牛人和一個踏實老實的員工,讓他們倆去完成任務,多半會半路鬧崩了。
我說:那如何不讓他們鬧崩了呢?
我的朋友說:需要有一個項目經理領導他們倆。
我說:OK。這就是項目經理。公司里已經有一個唐僧了,他就是你的老板。唐僧既然已經有了,牛人也有,踏實的員工也有,但還是完不成目標,就是需要有項目經理。你就是那個項目經理。這種職位永遠需要,但總是不那么突出,但老板明白誰才是最重要的。你看看歷史:劉邦封功,韓信張良蕭何。蕭何就是那個項目經理到處串線搭橋。明朝,徐達劉伯溫李善長。李善長就是那個項目經理。項目經理就是主板上的CPU,用來協調各個其他計算部件的。所以,你很有價值。
我的朋友現在已經是很好的項目經理,老板也放心將歷時一年價格500萬需要牽扯多個部門幾十號人的大單項目交給他來負責。
我問他:過去你怎么當不了一個好的項目經理呢?
他說:觀念轉變不過來。是工作強奸你還是你享受工作,就看你怎么看。
敢問路在何方,路就在腳下。