公司技術管理角度看C++游戲程序員發展

公司技術管理角度看C++游戲程序員發展

H3D

這是我多年來招聘培訓游戲程序員的一點想法。一直想匯總一下。主要目的是為了更好的對公司新進C++程序員進行培訓,并且建立起游戲程序員培訓,發展,成才,成為核心骨干,管理層,期權收益人等一整套體系。因為對于MMO游戲制作來講,解決好C++技術隊伍,是保證合格軟件的基礎之一。

????? 我在的H3D?Studio核心技術人員和游戲制作管理人員全部是SMTH?BBS游戲制作版成員。從99年開始截止BEGINER的歷任版主都在H3D?STUDIO里工作過。在這里我把具體的培訓以及技術隊伍組建的內容去掉,只和大家聊聊關于游戲程序員切身利益相關的事。

????? 另外這不是居高臨下來評判什么事情。我本人也不是多么高級的技術人員或者管理人員。只是堅持做一件事情年頭很長教訓很多而已。所以有些體驗。文中所有評判其他結構或人水平低,并不是說我本人水平有多高。不要誤會。

?????1 ,C++游戲程序員現狀

????? 中國C++程序員100%都是自學的。因為中國幾乎沒有象樣的C++培訓機構。大家都知道社會培訓是賺錢為主要目的。能在那里成才是個大運氣。也不象JAVA有SUN公司一手推行。中國大學教育里也根本沒有C++教學。關于C/C++基礎課的知識,只是讓學生入門。但對于實際的C++軟件工程應用,大學課本知識實踐意義不大。最重要的是,大學里沒有合格的C++老師。編程是門技術,叫手藝也行。而大學是搞科研的,多的是科學家,靠出PAPER教科憑職稱為生。并不是技術員。沒有10萬行以上代碼經驗和成功軟件項目經驗的人,很難教出中高級C++程序員。

????? 游戲制作業對C++程序員的要求是比較高的。比一般行業軟件高很多。因為任何一個MMO都是個中大型軟件項目。日使用人次達到幾十萬上百萬,同時使用人數幾十萬在線的大型網絡多人交互軟件,集成了超過十幾項專業領域編程技術的軟件,想不大都不行。

????? 另外,中高級C++程序員能力一般都很強。因為都是自學成才,這需要較高智商,很強的自學能力,解決問題能力,和克服困難的毅力。但是這種人才在游戲行業里人數并不多。拋開鳳毛麟角具備整體大型軟件架構能力的高級人才不談。能夠承擔獨立模塊開發,具備獨立解決問題的能力,寫出在空間,性能,可維護性等幾個方面達到要求的C++程序員,也是很難找到的。而具備這些能力,同時又具備一些專業領域技術的人(圖形引擎,網絡引擎,等),更加稀少。

????? 所以,即便是大游戲公司,對于C++游戲程序員的需求,也是永遠不能夠得到滿足。而已經在公司工作的C++程序員,不經過短則3個月,長達1年的鍛煉,也無法真正勝任獨當一面的C++游戲程序開發工作。

2 ,MMO游戲開發對C++游戲程序員要求

????? 前面提到,所有MMO游戲都是中大型軟件。軟件占用空間,穩定性,性能,可維護性等各項衡量軟件質量的指標,對MMO游戲軟件的要求都非常嚴格。遠大于普通行業軟件。這種規模和銀行系統類似。而客戶端和軟件邏輯比一般的商業軟件又要復雜很多倍。這就要求軟件編寫人員具備較高的程序編寫素質。

????? 游戲軟件中,解決好軟件工程部分,只是項目的1/3。另外兩部分是策劃和美術/音頻。從經驗來看,需求變更對于MMO游戲軟件,不是偶然事件,而是一種MMO游戲軟件開發的基本屬性。游戲軟件投入大,周期長,風險高。MMO市場變化也大,交互電子游戲發展迅速。游戲軟件必須面對外界變動。又因為開發周期長,所以軟件需求變動成為了軟件開發的一種基本屬性。猶如復雜性是軟件工程的一項基本屬性一樣。

????? 這導致游戲軟件的開發充滿了不確定性。交互娛樂不同于商業應用。娛樂是屬于理性和感性之間的領域。而C++開發面對就是0和1的二元世界邏輯。這兩個領域存在著不可調和的矛盾。這種情況,對C++游戲程序員提出了更高的要求。

????? 首先,基本C++知識,C/C++運用技能,必須極其扎實。并不是游戲軟件開發用到什么平時書本上很難得到的知識點或者技能點。游戲C++開發的知識體系和技能體系,利用現有C++書籍就可以滿足。比如《C++?PAORGRAMMING?LANGUAGE》《C++?PRIMER》《EFFECT?C++》《MORE?EFFECT?C++》等。但是在開始游戲編程之前,把這些書本吃透并且實踐熟練的人,非常難遇到。當然能夠真做到這點的人,已經是個中高級C++程序員了。我曾經遇到過一個,畢業工作不久就去了GOOGLE

????? 其次,對于面向對象的深入理解。是非常重要的。熟練掌握C/C++語法,編程技巧,只是滿足了C++游戲程序員一部分要求。而面向對象觀念的深刻理解,會為大型C++項目開發帶來翻天覆地的變化。?有時候,在一個10人以上并行開發的C++游戲項目中,面向對象方法會成為救命稻草。《設計模式》以及《設計模式解析》相關的書籍,也是必修課。

????? 最后,好技術人員的本質是自大的。這屬于正常。但是如果這種習性影響了自身繼續提高和團隊合作。以及影響了其成為技術管理者和項目技術核心時,那么這種技術人員的自身價值會大打折扣。?如果早日越過自命不凡這一關,擴大眼界,繼續在綜合素質上提高。在技術管理能力,架構能力上提高,其自身價值才會繼續增長。落到實處,就是待遇和身家增長。

????? 由于游戲開發的本質是團隊開發。任何時候,只有對一個團隊有價值的技術人員,其本身的價值才有可能得以體現。

3 ,成長和技術發展路線

一般技術人員發展有幾個階段

1 ,具備獨立開發局部功能的能力

比如為某個UI編寫邏輯接口函數。為某個LOGIN對話框編寫自繪制控件等。

2 ,具備獨立開發和攻關某個功能模塊的能力

比如為游戲增加一個小型邏輯功能模塊。

3 ,具備獨立設計并開發某個系統的能力

比如設計和開發AUTOPATCH?系統

4 ,具備解決技術難題,設計架構的能力

比如開發網絡同步仿真系統,開發一個中大型游戲制作工具

5 ,具備整體架構,管理,協調其他人共同開發一個大系統的能力

客戶端主程,服務器主程,引擎主程等

6 ,技術director

制定技術發展方向,技術團隊建立,技術管理等

????? 在邁向每個階段的過程中,伴隨的都是巨大的工作量和工程壓力。有時候是跨越1年的失敗等等。在公司項目不成功時轉換單位,重新開始,或者繼續做為核心團隊留在公司繼續從新的機會做起,都是好的辦法。但關鍵是吸取經驗教訓,盡量多學多練。并且結合自身長處發展。當然,游戲制作人員,最好還是依靠一個核心團隊。成為核心團隊的一員。

????? 能夠達到第三檔的程序,已經是公司不可缺少的人才了。但往往程序員自身對自己的認識,和公司對其的認識,有時候會有差異。我碰到過一些人,腦子好用,寫東西很快。各種技術都有涉獵。但總是不放心讓他獨立開發設計某個系統。哪怕是相對獨立的工具。也會被搞得一塌糊涂。要后面人不停擦屁股。可自己還覺著自己水平很高。這種人浮躁,眼高手低,不愿意細致周全的做好一件完整的事。所以就可以看到他不停的跳來跳去,可在新公司的職位也沒有見多么提高。公司非常重視交給一個程序員一件事,他是否能完整,考慮周全的把事情做完。哪怕時間長一點,也不能不做完。這會給工程帶來致命的后果。

4 ,發展待遇

????? 從自身經驗出發談一下公司是怎么考慮技術員工待遇的。

????? 前面提到的6檔,粗略了劃分了待遇水平。其實到了第三檔,你的待遇已經是這個行業所決定的了。而不是某個公司決定的。因為游戲業大量缺乏這樣的C++程序員。如果具備這個水平,在幾個大城市游戲公司找到工作并不難。大公司提升慢,還有我這種不到百人規模的公司要。所以行業價格才是公司要考慮的。如果給少了,軟件項目的C++程序員流失會帶來較大影響。但給的多,其實是C++程序員自己的價值增長瓶頸。如果幾年下來一直以為自己水平就該拿這么高,結果到了一家整體技術水平比較高的企業,就會徹底傻眼。這個時候再放低心態去重新開始,對技術員來講就是件很艱難的事了。

????? 在目前游戲行業技術水平普遍較低的情況下,哄抬程序員工資水平對程序員自身好處也不會很大。就算一個新手本來拿幾千的水平,給他1萬。他根本就不會知道自己到底有多少水。一年下來也就多拿了3-4萬人民幣。可耽誤的是學習,影響了心態。而那些心態好,知道努力方向的技術人員,干個3-5年后如果有拿期權和股權的機會,比那些一開始虛高的人,身家就不知道高多少倍了。

????? 下面再談談我個人在招聘C++程序的體會。

?????1? 做為C++程序員,成長周期比較長。如果是新手(代碼量少于2萬,沒有做過大型項目的),會考察3點。是否踏實肯鉆研,有無責任心,以及是否夠聰明。如今,滿足這三點的人其實不多。

????? 責任心是人品,決定了是否對公司有貢獻。這是最重要的。有些人其實很自私。這種人對公司貢獻是負數。而且到頭來,自身價值也很難起來。因為技術是要靠游戲的商業成功體現價值的。要取得商業成功,就需要一個團隊為一件事付出。是否踏實決定了能學會多少技術知識。關于智商,我是最近2年才意識到人的智商確實有很大差別。干程序這行,智商必須越高越好。否則前途不大。

????2? 如果是有過2-3年C++程序經驗的人,應考察的是人品,是否自大,是否有合作意識,是否跳槽頻繁。

????? 首先還是責任心。太自私,太為自己著想,時刻把自己利益看成最重要的人,到哪里都不會受歡迎。無論他技術有多好。

????? 然后考察的是是否自大。人最容易自大的時候,往往是對一門技術已經入門,取得一定的小成就。但是眼界還沒有開闊,沒有領略到這個領域真正深入的技術知識。周圍缺少好技術的人。這個時候,技術人員都容易自大。適度的自信和自大是允許的。但是目空一切就完蛋了,說明這個技術人員的提升空間很小。?

????? 合作意識是游戲開發的關鍵。包括交流能力,思考和解決問題的思維方式。一個喜歡獨來獨往的技術人員,在游戲團隊里是個很可怕的事情。因為游戲軟件不是一個人能夠完成的事情。由于邏輯復雜,需要各種專業技術領域知識,需求變動頻繁。每一步都需要團隊通力配合。缺乏這種意識,或者對團隊開發不適應有抵觸的技術人員,在游戲開發領域存活的希望不大。

????? 做為一個C++程序員,跳槽頻繁的履歷是很致命的。做C++時間長的人都知道。進入一個龐大的C++軟件工程本身就需要不少時間。經過培訓,項目熟悉,在為項目做貢獻,這個時間短不了。如果一個人經常跳槽,說明他一直沒有踏實在一個項目里深入做過核心的東西。或者做失敗一個馬上跑掉。這種人公司不敢要。

?????3? 對于有專項技能的程序員,比如圖形程序員。C++只要入門有培訓空間即可。但對專業要求比較高。應該是已經在某個技術領域鉆研比較深。?當然最后在公司還是得成為使用C++熟練的高級程序員。因為任何專業領域的技術如果要應用到工程中,還必須用C++做工具。

?????4? 好的C++游戲程序員,其實不容易找。如果他干得好,早就成為項目核心成員。如果項目不錯,自身待遇也會很好很穩定。不需要通過一般應聘渠道應聘。不是被拉到公司做核心技術拿期權,就是自己創業。

????? 這里我打個比方。網易有個云風。大家都知道他是大話西游2的客戶端主程。他是中國第一個做開源C++游戲引擎的人。開放了一整套C++游戲引擎代碼。這是他大學時做的。畢業后去網易。有了平臺,做成了中國歷史上最成功的MMO之一。做為游戲技術人員,他的價值可以說已經是很高的了。到底有多高,我們都不好瞎說什么具體數字。但可以這么刨析一下。

????? 一個經驗豐富的C/C++程序員。有過中國自主研發在線過百萬游戲的成功項目經驗。目前有網易出錢讓其獨立領導隊伍搞引擎和游戲產品已經快3年。這樣的一個履歷,經驗,本身就價值很高。他在任何公司都可以找到年薪幾十萬的工作。如果他具備管理才能。哪怕就是項目管理,或者技術管理能力。對于一個上市公司,他能做出的貢獻,應該用百萬/年量級來衡量。如果他能找到一個商業人士,負責舵手,并且自己具備一定商業能力,獨立創業。吸引的天使風險投資也得幾千萬(否則做不了事,當然)。如果產品能做成,身家到達幾千萬是很自然的事。

????? 我相信中國游戲程序員水平,運氣,發展空間比他高的人不多。那么我們可以拿他做個標桿。

????? 我知道很多人不服他。不過這里說的問題并不是關于他本人的。也不需要對他本人做什么服不服的評判。做為一個社會的人,不是靠能寫多少行代碼,代碼多么優雅水平多么高來衡量身家的。從這點說,技術沒有轉化為成功商業產品之前,它的價值為0。做為技術人員,社會衡量他價值的標準,并不是要去閱讀代碼是否質量優越速度飛快。而是看他能為一個成功商業產品或者公司發展做出多少貢獻。這個道理,幾年前我還不太明白。而且我做為一個技術人員,相信多數技術員同胞們都不太可能從根兒上理解和認同這個看法。這里不是評判水平,而是評判價值。你的價值代表了你能夠拿到的待遇。這個不是某個老總說了算,某個公司說了算,而是取決于人均GDP和當前行業發展水平,行業銷售額的。我想這個道理也適用于所有游戲制作相關人員。搞制作的都是技術人員。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454326.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454326.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454326.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

android生命周期_Android開發 View的生命周期結合代碼詳解

咱們以TextView控件為例:/*** Created by SunshineBoy on 2020/9/23.*/public class TestTextView extends android.support.v7.widget.AppCompatTextView {public TestTextView(Context context) {super(context);Log.e("TestTextView","TestTextVi…

salt

安裝服務端和客戶端服務端(marster)yum install salt-master -y客戶端(slave)yum install salt-minion -ymarster192.168.11.17/etc/init.d/salt-master start配置文件: vi /etc/salt/mastercat master|egrep -v ;|#|^$auto_accept:True #設置自動接受日志: /var/log/salt/mas…

python | 查看pip支持的文件名和版本

python | 查看pip支持的文件名和版本win下查詢大哥推薦已經解決win下查詢 import pip._internalprint(pip._internal.pep425tags.get_supported())64位的需要在pip后面加個_internal 如果不行試試下邊的 大哥推薦已經解決 import wheel.pep425tags as w print(w.get_suppor…

機器學習算法之支持向量機 SVM

距離知識 點到直線/平面的距離公式: 1、假定點p(x0,y0),平面方程為f(x,y)AxByC,那么點p到平面f(x)的距離為: 2、從三維空間擴展到多維空間中,如果存在一個超平面f(X)θXb; 那么某一個點X0到這個超平面的距離為: 參考…

set IDENTITY_INSERT on 和 off 的設置

批量插入記錄時,對有標識列的字段要設置 set IDENTITY_INSERT 表名 on,然后再執行插入記錄操作;插入完畢后恢復為 off 設置 轉載于:https://www.cnblogs.com/TTonly/p/10349931.html

VMware Horizon虛擬桌面工具箱2.0-審計,遠程協助,控制臺,電源

各位朋友,大家好,VMware Horizon 虛擬桌面工具箱2.0版本,已經面世啦!在2.0 版本中我們添加了vSphere虛擬機控制臺訪問、開機策略和圖形化安裝這三個新功能,并改進了部分老的功能。老版本即1.5版本的相關知識可以參考我的博文VMware Horizon虛擬桌面工具箱之審計與遠…

python詞云改顏色_一種用Python生成詞云

一種用Python生成詞云 我們在閱讀一篇很長的文章時,總先看看文章的關鍵詞來獲知文章的大概內容。今天我們就來制作一個詞云程序,將文章中出現次數較多的詞語提取出來,生成一張詞云圖。詞云圖的生成原理: 程序會將這篇文章中的所有…

什么是程序員正確的職場心態?

(本文為《程序員羊皮卷》最新公布的第七章的一部分,下載地址:http://download.csdn.net/source/1868065 或者http://zhaopinpro.com/wordpress/wp-content/uploads/2009/12/《程序員羊皮卷》第7章-程序員職場心態.doc 歡迎大家購買作者簽名…

git第一次提交代碼至遠程倉庫步驟

git第一次提交代碼至遠程倉庫步驟在將要提交的文件目錄下打開Git Bash Here1.git init git add . 提交該目錄下的所有文件 3.git commit -am “qiantai”(提交到本地倉庫) 4.git remote add origin *** (***git地址) 5.git push -u -f origin master(提交到遠程倉庫&#x…

機器學習之 樸素貝葉斯、貝葉斯網絡

目錄 貝葉斯定理 樸素貝葉斯算法 高斯樸素貝葉斯 伯努利樸素貝葉斯 多項式樸素貝葉斯 貝葉斯網絡 最簡單的貝葉斯網絡 全連接貝葉斯網絡 一般化的貝葉斯網絡 引子 參賽者會看見三扇關閉了的門,其中一扇的后面有一輛汽車,選中后面有車的那扇門可…

liunx -bash:ls:command not found,執行命令總是報找不到

解決辦法: 使用絕對命令vi打開profile /bin/vi /etc/profile 添加: export PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 簡便方法: 直接執行 export PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin export PA…

Nginx的Web管理界面收集

Nginx實在是太強大了!灰度發布、金絲雀發布、負載均衡就只需要簡單的幾行配置就可以實現,這些特性嗾使微軟無法比擬的。 原來Nginx除了使用ngx_http_stub_status_module模塊(http://127.0.0.1/ngx_status)實現Web頁面上的監控外&a…

attention機制_簡析Attention機制—優缺點,實現,應用

什么是Attention機制?Attention機制的本質來自于人類視覺注意力機制。人們在看東西的時候一般不會從到頭看到尾全部都看,往往只會根據需求觀察注意特定的一部分。簡單來說,就是一種權重參數的分配機制,目標是協助模型捕捉重要信息…

高級程序員如何面對職場壓力?(2)--受傷的總是我

版權聲明:原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章原始出版、作者信息和本聲明。否則將追究法律責任。本文地址:http://tech.it168.com/a2008/0911/204/000000204752.shtml 課程上線消息:Leo講的《初入公司…

pycharm Debug問題

pycharm Debug問題 參考鏈接:https://blog.csdn.net/weixin_43472408/article/details/85072640 Debug的調試方式如下所示: 1.show execution point (F10) 顯示當前所有斷點 2.step over(F8) 單步調試。 若函數A內存在子函數a時,不會進入子函數a內執…

vue表單的用法

你可以用 v-model 指令在表單控件元素上創建雙向數據綁定。它會根據控件類型自動選取正確的方法來更新元素。盡管有些神奇,但 v-model 本質上不過是語法糖,它負責監聽用戶的輸入事件以更新數據,并特別處理一些極端的例子。 v-model 會忽略所有…

php執行npm命令_npm系列之命令執行

當我想使用vue的腳手架來創建一個項目的時候,我應該怎么做?執行命令 npm install -g vue/cli 全局安裝,之后就可以在控制臺中使用vue create programName 來創建一個項目。為什么可以直接使用vue命令?這類支持命令的依賴會在項目中…

模擬產品展示 Flash無法展示的追蹤過程

鼠標滑過小圖時,左側前四張大圖可以,但是最后那張大圖無法展示: falsh產品展示需要通過參數傳遞,把關聯產品id的圖片get出來,如: http://192.168.8.166:90/category/prod_img.aspx?prodid101 結果&#xf…

git提交 本地分支和遠程分支斷開連接

1級標題 當 git push origin branch_name時遇到報錯如下: fatal:‘origin’ does not appear to be a git repository fatal:Could not read from remote repository 原因: 本地分支和遠程分支斷開連接 解決方法: cd 本地分支里 1、git…

編程高手箴言

本書是作者十余年編程生涯中的技術和經驗的總結。內容涵蓋了從認識CPU、Windows運行機理、 編程語言的運行機理,到代碼的規范和風格、分析方法、調試方法和內核優化,內有作者對許多問題 的認知過程和透徹的分析,以及優秀和精彩的編程經驗。…