自學C++、數據結構與演算法、DirectX 9.0,快畢業了卻很迷茫,是不是不適合做程序員?

1、專業是電子信息工程,但是對編程感興趣,但是一直是自學的,看什麼書學什麼東西都是自己網上看別人的建議,沒有一個引路人,身邊沒有人可以請教,現在大四快畢業了,一直想從事遊戲開發相關的職業,也看了網上遊戲公司的招聘要求,覺得自己對著招聘要求也符合,但是心裡就是很虛,自己也就是一個很普通的二本生,也不是計算機專業的,覺得自己不知道拿什麼和那些211、985畢業的計算機專業的學生比。

2、看著知乎里這麼多牛人,自學編程能做出各種自己聽都沒聽說過的東西,而自己自學了兩年卻做不出像樣的東西,比如學DirectX9.0時也只能勉強的看著書才能實現書中的實例,官網下載下來的Sample看不懂,學了c++和數據結構,也就能看懂書中的例子,自己也只能參照著書寫點黑框框的小程序。

3、現在一直想著是不是不適合走程序員這條路?覺得學了這些東西以後是不是找不到相關的工作了?

4、我覺得自己也很能吃苦,大二暑假時兼職了兩個月的酒店服務員也能堅持下來,也能虛心求教,工資對自己來說能在上海解決溫飽問題也就夠了(想著畢業去上海找工作,而且是應屆生,對工資的要求不高),不知道我這樣的水平能在上海找到合適的工作嗎?

5、請各位知乎大大們在有空閑暇之餘給予建議,在此萬分感謝……

(PS:文筆爛,歡迎修改……)


謝謝邀請:)

先不要沮喪。我來說幾件事。

  1. 即使我是計算機科學專業,我的絕大部分遊戲開發的知識都是和你一樣在課外學到的。學校的教學,對我來說更多的是開拓眼界,了解一下計算機的其他領域。

  2. 即使是計算機專業,很多學生的求職意向並不在這個行業,所以並不是每個計算機學生都有強大的開發、研究能力。

  3. Ludum Dare Game Jam有1 / 3左右的參與者在20歲以下,正在讀高中[1]。他們的知識面可能還沒我們多。

  4. IGF 2014學生組的最佳作品《Risk of Rain》是一名機械工程學生和商學院學生用Game Maker合作完成的。

說上面的話我是想表達,計算機,至少遊戲,是一個很field specific的行業。開發者不需要有相關的文憑來加入這個行業,只要你足夠出色。

關於題主的疑惑,我認為是方法不合適導致的——題主從c++、數據結構、DirectX開始學習遊戲編程,這是一條艱苦的由下至上的學習路線。然而在軟體開發里,比較好的學習路線應該是由上到下的。

首先是因為軟體里的下層大都是對上層抽象的,也就是說你不需要完全了解下層的細節來使用上層。舉一個例子,Unity遊戲引擎在渲染的底層用了DirectX [2],但Unity的用戶在開發過程中根本不用接觸到DirectX,就能完成開發任務。

其次,上層往往比下層更容易理解,更容易掌握,也更有效率。因為上層就是因為下層難用、不方便而開發出來的。一個極端的例子是,計算機最底層的邏輯是焊接在cpu上的電子元件,但我們開發軟體(本質是教計算機怎麼計算)時,我們不會直接去焊,而是選擇用c++這些高級語言來寫邏輯。[4]

再次,遊戲行業從來都是以解決問題為目的的 [3]。既然題主發現DirectX並不能有效地讓你開發出一個遊戲,那麼就應該用其他技術。如果說目的是學習,那麼請參看上一段——既然DirectX現在不能make sense,那可以從上層開始學起。

最後總結一下,題主需要的是一條更加有趣更有效率的學習路線,而由上而下會是一個很好的方法。具體做法是,從一款遊戲引擎開始學起,做一些小demo小遊戲,了解遊戲開發的大致過程後,再選擇自己感興趣的領域探索。

Reference

[1] Ludum Dare Survey 2014: Survey 2014 | Ludum Dare

[2] 準確地說,graphic library不同平台不同。

[3] 其實每一個行業都一樣。

[4] 了解底層的確對上層開發有好處,但如果底層包裝得好,信息足夠的話,那並不是必需。


嗯,不要臉的自己蹭過來回答了。題主的話題讓我有點感慨,先大概說一下自己的情況吧。

大學專業是鋼鐵冶煉,現在在一家手游公司做程序,中間經歷了什麼就不說了,總之現在想起來覺得自己的堅持是對的。

選擇這條路是因為對冶煉沒什麼興趣,喜歡玩遊戲,大學的時候自學程序,然後就自然而然想去遊戲公司做程序了,後來就進了這個門,先是端游,後來是手游。這樣。

對題主要說的是。

遊戲程序並不是全都是211,985畢業的,甚至於連計算機專業也不一定,我的同事(僅說程序)里有學中醫的,以前做自由職業的,有以前當兵的,反而計算機專業占很小的比例。

對自己要有信心,這個是最重要的。

不要想著自己學到什麼程度再去找工作,應該是在工作中學習,因為你現在沒有進入這個行業,你對遊戲開發的很多核心的環節處於猜想的狀態,很可能你學的東西在真正開發的時候用不到,而找工作的時候面試官不認可你的這些努力。

也許找工作的時候很辛苦,但你一定要記住,只要你爭取,就一定會有機會,我的理解是,你想不想去做這件事,關鍵在於你自己覺得是不是不做就會後悔一輩子,繼而你的人生是否會因此變得毫無意義,也就是說,做遊戲,對於你來說是不是必須要去完成的一步,這個你要想清楚,想清楚你就不會覺得虛了。

遊戲公司真的是那種你行你就上的地方,所以,別為學歷的事情自卑或者自責。

因個人經歷所給出的建議,不喜勿噴,

題主加油。


@伍一峰 伍老師給的答案很明確,題主我幾個月前就如同你,很迷茫,今年畢業,你的學習經歷跟我很類似,但是現在我隱約找到學習路線,就是伍老師說的,先了解引擎,做點東西,有兩個好處如果覺得自己沒有精力繼續深入底層,那麼也可以就引擎繼續學習下做客戶端,如果對底層有興趣研究,那麼可以自己深入學習,去研究如何開發引擎。如果可以最好去了解幾個C++的框架,當然要看你個人的選擇了。具體多的細節我無法為你提供,本人自己也在尋路中,很多東西需要去不斷的嘗試、實踐。另外補充一點常識:遊戲開發分客戶端和服務端,這點需要明確,我也是因為這個不清楚導致走了幾年彎路,祝題主好運,上班了~


推薦閱讀:

當潛在銷量達到多少時,遊戲廠商才會考慮為某個平台移植遊戲?
Unity3D 學習路線?
假如光榮做個西方歷史的策略遊戲,選哪個國家哪段歷史比較好?
如何評價 Unity 5 的正式發布?
虛幻引擎的前景?

TAG:程序員 | 遊戲開發 | C | 畢業生 |