1. 程式人生 > >非計算機專業如何轉行做程式設計師:我的經驗

非計算機專業如何轉行做程式設計師:我的經驗

伯樂線上注:3月27日,我們在微博釋出了@老碼農的自留地 的《有關“非計算機專業如何轉行做程式設計師”的一點思考》後,也看到了@lvjian700 轉發時說他以前是學包裝工程的,也是非科班出身的程式設計師。故而私信問@lvjian700 是否有興趣來分享他的入行經歷。以下是@lvjian700 今天凌晨寫完的博文(原文連結)。

討論中一篇學生的來信,勾起我寫一篇博文的衝動:

XXXX:員員好,我是12屆的大學生,讀了一所還可以的大學,但所學專業我很不喜歡,我因為性格較內向同時又感嘆程式設計的神奇,所以很想進入這一行,但 我去面試幾家後發現就算是實習崗位也需要一些基礎,雖說大學學過C語言但感覺也基本不會用,那些面試單位是建議我去學習這方面知識再去找他,但我又對這些 培訓機構不太放心,怕花費了一大筆學費結果卻不好,現在我有些迷茫不知道該去找找其它工作(人才市場很多都是些銷售和工廠的一些崗位)還是去學習,希望廣 大的員員們給我些指導,非常感謝。

希望我的經驗能影響他,影響徘徊在計算機行業外想進來的人。

先做個自我介紹,讓這篇博文比較有參考價值:

大學: 2004 ~ 2008 西安工業大學 包裝工程

現在公司: 中科大洋 -上海研發部

職位: Java軟體工程

工作年限:4年

工作內容: B/S 架構的企業軟體開發, 技術涉及Java、Javscript、 iOS

已掌握的語言: Java、Javascript、SQL、 C、 Objective C、Ruby

1. 程式設計師這個職業並不是為計算機專業學生專設的

我現在所在的公司,上海這邊就有3個大學非計算機專業的同事。除了我之外,一個是09年畢業學建築的,一個是11年畢業學法律的。如果你想,這條路可行。

2. 興趣是最大的老師

2002年高一暑假,暴雪推出了war3(魔獸爭霸3)。我想學程式設計的想法就從這個遊戲開始。

由於暴雪的關係,當時讓我覺得做遊戲是一件非常酷的事情。03年的一期大眾軟體,介紹瞭如何使用war3中的地圖編輯器做RPG遊戲,從此便迷上了地圖編輯器,開始泡各種地圖編輯器的論壇。

在當時我只知道照著論壇的帖子改地形,寫觸發器,寫判斷語句,後來才知道地圖編輯器中使用的語言Jass(war3中的指令碼語言)。

從那時起就立下一個目標,“學程式設計,做遊戲。酷!”。

後來高考我並沒有考上計算機專業,志願被調劑西安工業大學的包裝工程。不過依然堅定自己的目標:“上了大學自學程式設計, C語言->C++-> VC -> 做遊戲”。

現在想想當時的想法非常天真,就是這個天真的想法讓我一頭扎進了計算機的世界。

如果你對程式設計世界充滿好奇,恭喜你,他將會是你最好的老師。在整個過程中請牢記:“一切為了興趣”。在學習過程中碰到不感興趣的東西,可以先放放,讓興趣指引你去學你想學的東西,那些讓你感覺很頭疼的東西(比如編譯原理,演算法等),以後你會因為興趣將他們拾起來。

3. 學習是一個迴圈的過程

發現 -> 感興趣 -> 學習 -> 實踐 -> 成就感 -> 發現 -> … 請時刻記住這個迴圈過程。當然你可以總結出自己的一套迴圈理論。

4. 如何開始?

如果你現在很幸運的只知道一門程式語言,恭喜你,直接上手學吧。現在就開始是最好的開始。程式 語言的邏輯都很像,只要學會一個其他的都很容易。我在學程式設計的時候只知道C語言->C++->VC這條路,進入大學後整天泡在圖書館,在沒有 電腦的情況下手寫程式碼。這段學習經歷讓我意識到,即刻開始是最好的開始。

如果你不幸知道了很多程式語言,並且不知道如何選擇,這裡我可以給你一些建議:

  • C語言永遠是值得學習的一門語言。在猶豫不決的時候不妨先學C語言。如果你能很輕鬆寫出氣泡排序,寫出函式的遞迴呼叫。恭喜你,程式邏輯方面你已經很優秀了。
  • 如果你對做網站感興趣,PHP是一個不錯的開始。當然還有Ruby、 Python。
  • 如果你希望按照傳統套路來,Java是個不錯的選擇,之後可以選擇企業開發,Android開發等。
  • 如果你對移動感興趣並且資金充足,Objective C 覺得很好的選擇。iOS開發難點在Mac, iPhone等裝置購買上(貴,你懂得)。
  • 最後不要忘了身邊的有當程式設計師的人,他們的意見很值得參考,如果按照他們的路子入門,你將得到一個很好的導師。這將會是一件非常棒的事情。

如何選擇書:

  • 選書之前現在豆瓣讀書看看書評。
  • 首選圖靈出版社的書。
  • 書越薄越好,快速入門是目的。那種跟磚一樣厚的書,請忽略掉,除非你有自虐傾向。

一些值得推薦的網站:

  • 程式設計中國: www.bccn.cn  很適合初學者的網站。我剛開是學程式設計的是時候,在這裡得到很多幫助。
  • ITEye: www.iteye.net 前身JavaEye,我常年混跡的網站。建議工作後來這裡混。

5. 是否上培訓?

我們3個都有上過培訓。我是先自學了C、C++、MFC,之後感覺不知道再學什麼,機緣巧合選擇了培訓學校這條路。

在培訓學校,我遇見不少優秀的老師,也結識了一幫朋友,這段經歷是我最終走上程式設計師這個職業。

能不能不選培訓培訓?

除非你能找到一個很好的學習環境,比如開源社群,程式設計論壇。一個好的環境能讓你進步很快,在學習過程中結識朋友也會讓你很有成就感。

如果你還沒有一個環境,或者對自己適應這些社群的能力沒有自信,建議選擇培訓學校。具體能學到什麼那就看你的個人主動性。

強烈建議有一定基礎後在選擇培訓

培訓能帶來的東西:

  • 一個適應當前潮流的學習計劃,比如我06年上培訓,當時Java SSH框架很火。培訓的流程就是Java -> Java Web -> SSH 框架,中間伴隨專案實戰。
  • 有人指導,在學習中碰到障礙,很快能得到解決。這樣不會使學習過程有很強的挫敗感。
  • 結識朋友,相互交流,這種學習環境會讓人感到很快樂。
  • 就業指導,現在培訓基本都以工作為目的,就業指導會給你找工作帶來不小的幫助。(培訓學校目的讓你找到工作,好壞看個人想法和能力)

培訓中的不足:

  • 培訓學校本質是盈利,並不像普通學校有一定義務性,這會導致有些做事方法可能會讓人不爽。在去之前自己需要做心態上的調整,一個賣服務,一個買服務,各取所需。
  • 培訓比較急功近利,課程設定方面以實戰為主,僅僅按培訓學校的課程學出來,基礎一般都很薄弱。基礎方面需要自己補,例如資料結構,演算法,OOP原理等等。

上培訓需要注意的事情:

  • 課程時間,如果求職壓力較大建議選較短時間的,先工作,之後在充電。如果時間充裕建議選擇時間較長的,你可以有很長的時間學習。
  • 課程設定,注重專案實戰。一般每一階段學習都會有一個實戰專案,專案實戰越多越好。
  • 學習期間做專案,儘量不要選擇培訓教材中的專案,這樣不會因為思維惰性去copy書本上或者老師提供的程式碼。
  • 如果分學習小組,請力爭做小組組長。組長做實踐專案時會充當Team Leader的角色,這方面的鍛鍊對成長很有幫助。

6. 如何找工作?

  • 用心做一份簡歷,樸實,不要弄虛作假。弄虛作假是應聘大忌,一旦發現絕對忽略掉。(至少我在看別人簡歷的時候會這麼做。)
  • 請忽略招聘中“計算機或者相關專業”條件,那些都是很死板的,模板式的招聘要求,大膽的把簡歷發過去,是否邀請你面試是他們的事情。
  • 保持耐心,由於是非計算機專業的緣故,你需要比計算機專業的學生付出更多的努力。
  • 用專案說話,面試時請帶上你的專案。我當時找工作的時候就是這麼幹的,結果就是:我輕鬆找到了工作。
  • 如果實在找不到工作,可以先找實習職位。找實習職位需要多泡論壇,招聘網站上的個人感覺不靠譜。(有很多人都再搶,你懂得。)

7. 工作後該如何繼續學習。

  • 不要將Google作為IDE的一部分。如果沒有Google你不知道如何解決問題,你的水平可能只停留在初級的水平。多思考,多總結,開一個部落格很有必要。
  • 申請一個Evernote賬號。時刻記筆記,知識積累很重要。
  • 我以前寫過一個《構建網路工具箱》的PPT,希望能對你有所啟發。
  • 優酷上有很多視訊教程,如果你只拿它來看電影,那實在太非專業了。