1. 想問下程序員工作內容有哪些分類啊
碼農工種一般就是研究開發、開發、開發測試,運維開發,開發根據負責的內容一般分前端和後端,像界面就是前端,伺服器和資料庫就是後端開發。AI系統一般是研究開發。
但碼農的工作一般是按照階段性的項目中負責的模塊分的,所以可能一個人一段時間是前端,一段時間就變成後端了,當然裡面的技術差別很大,不是每個人都可以隨便轉。
但其實這些分類並不嚴格,比如世界最大的社交網站fb,他們的程序員必須從前端後端、研究開發測試維護一攬子全包。
軟體工程中相配套的,除了程序員以外,還有產品經理、測試(和開發測試不一樣)、行政等等崗位。
2. 程序員怎麼分類,分幾種
一般不這么分吧,都按初級程序員,高級程序員什麼的這個分法。
3. 大公司和小公司的程序員差別在哪
大公司崗位職責比較明確,分工很細,小公司一個人可能要做幾個人的工作,福利待遇可能沒有大公司好,但是成長的會比較快。
4. 游戲行業的程序員一般有哪幾類分工
游戲程序員也是有分工的,比如說圖形程序、邏輯程序、工具程序等等
圖形程序主要負責游戲畫面的顯示,對於3D游戲來說,圖形渲染包括模型、材質、貼圖的顯示,光照和陰影的效果等等,這可以說是游戲編程中技術含量最高的部分。從事圖形程序需要良好的3D數學訓練,線性代數、圖形學是需要主要攻克的課程,現在業界主流使用DirectX作為底層庫,這也是比較基礎的技能。
邏輯程序員對於外行人來說其實是個比較抽象的概念,其實就是控制游戲世界的規則,我舉個簡單的例子,比如說俄羅斯方塊里,一個規則是如果一個方塊落下之後發現有行滿了,就會消掉這些行,然後上面沒有被消掉的行會按位置下降。在游戲世界中,你能看到的一切gameplay都要依賴邏輯程序來控制,在絕大多數情況下,邏輯程序在代碼數量上占據了游戲程序的主體。
業界主流的發展越來越傾向於這樣一個認識,策劃創造游戲的玩法,美術創造游戲的畫面,而程序的職責是為他們提供幫助。這種幫助主要就是提供給他們工具,在游戲開發流水線越來越進化的今天,工具的好壞對游戲的質量起著決定性的作用。一些典型的工具包括地形編輯器、場景編輯器、腳本編輯器、粒子編輯器等等。對程序員來說,編寫工具程序往往需要掌握Windows(或其他操作系統)編程的能力。
當然還有很多很多其他的分工,比如AI程序員負責編寫怪物和BOSS的行為,角色的尋路,UI程序員負責編寫游戲的界面,比如各種菜單、狀態的顯示,服務端程序員負責編寫伺服器端的邏輯程序等等。鑒於答者的工作,這種分類其實主要是按照3D網游來講的,其他不同平台不同類型的游戲當然會有不同的分工,不過大體上差不多。而且這些分工很多都是有交集的,並沒有選了其中一種就不會做別的這種事,分開來講只是希望能有個大概的印象。
5. 程序員如何創業開公司
一、買幾本經典的編程書,把書上所有常式全部重新寫一遍,逐個比較和書上範例的差距,一步一步改善自己編程的風格和技巧。時間長了,自然就能寫出象書上常式一樣的代碼,甚至可以比書上寫得好。
二、基礎扎實後,多看看Linux 等系統級的源代碼,看看高手是如何寫的,就有感覺了。
三、通讀一下MSDN中所有的資料,這樣,「讀書破萬卷,下筆如有神」。
還有,一定要牢記軟體工程的鐵律:可能出錯的地方一定會出錯。每個變數都做初始化,引用每個參數都會做有效性檢查,在可能出錯的每個地方都會做邊界條件檢查,這樣開發出來的程序一定會穩固很多,就是出錯也會很容易修改。野路子出來的高手,一般開發速度很快,但做完後bug很多,經常需要很長時間修改。而真正的高手,追求的境界是 bugfree code(零缺陷代碼)
建議三:必須寫夠十萬行代碼,不要心存僥幸
程序員象木工一樣,熟能生巧。程序員必須寫足夠代碼量的程序,才會有感覺,這是一個苦力活,沒有任何捷徑可走。
計算機是一門實踐性的科學,沒有動手能力做支撐,很難做出好的科研成果。我的一個學長是美國卡內基梅隆大學的博士,卡內基梅隆大學計算機系在全世界非常出名,他說每個博士生必須寫十萬行代碼才能畢業,卡內基梅隆大學博士進任何一個大企業基本不用面試。而國內培養的大部分研究生、博士生,動手能力都偏弱。
沒有寫過足夠代碼量的,想成為高手是不可能的,只能紙上談兵!
建議四:時刻保持好奇心
計算機技術更新換代非常快,每年都有各種各樣的新技術出現。在我過去的職業生涯中,僅編程語言,我就用過 basic、masm、pascal、c++、vba、Delphi、java 等。需要時刻保持好奇心,不斷學習各種新的東西,才能在未來的幾十年職業生涯中不落伍。你要理解為什麼 iPhone 出來很多高手用iPhone,現在一天到晚惦記著換部 gPhone 玩玩。
人的精力有限,高手往往工作壓力也比較大,如何在有限的時間內掌握整個行業動態,的確是一個不簡單的事情。我的經驗是經常看業內的各種技術雜志,參加各種聚會,可以節約很多時間。最重要的是,交幾個博學的技術高手,多和他們交流,一定獲益匪淺!
建議五:不要局限在技術本身,多花點精力關注用戶
做到前面幾條,就已經是千金難求的高手了。但一個真正的高手需要知道用戶需要什麼,如何做出讓用戶滿意的產品。
現在的軟體研發越來越強烈團隊協作,不少團隊都配置了專門的需求分析的工程師、用戶界面及用戶體驗的設計師,軟體研發的分工越來越細。很多程序員以為只要把技術搞好,不用管用戶需求和用戶體驗。實際上,需求方案及界面方案不可能寫得非常細,具體的實施還是程序員自己來實現的。這個時候,好壞的差距很快就體現出來了。
6. 程序員35歲,是一個大限日期么
不是,但肯定年輕有優勢,精力旺盛,接受新知識快。
其實程序員分工也很細,如果是單純的寫代碼的話,35歲確實有點大了。
不知道你看過「凌波微步」這本書沒有,雲風的「我的程序生涯」也有意思,至於DOOM傳奇,Borland夜未眠,過河卒等書都傳達了程序員的發展方向,對你可能有幫助。
7. 程序員未來會成為非常內卷的職業嗎
個人看法會,程序員這個職業確實非常符合內卷化的特點。至少我認為隨著互聯網的持續發展,程序員這個職業會越來越內化的。
如果我們程序員想在 IT 行業中擺脫內卷化帶來的影響,必須要做到:一是,讓自己不要成為工具人,要做 T 字型人才;二是,要挑選門檻要求比較高的編程工作才行。
要想做到上面兩點,好像給人的感覺是內卷化導致我們程序員越來越累了。其實,不然,我們主要突破了自己的上限之後,以前感覺難的事情,就像現在做的普通事情一樣簡單。之所以現在感覺難,是陌生不熟悉帶來的恐懼。
程序員確實是靠手藝吃飯的
之所以可以定義為手藝人是手藝這種東西就跟編程一樣,需要一點技術含量,也不是說要求非常高,努力練習也能達到,而且我們也確實是靠手敲鍵盤來吃飯的。
而且,我相信大家也發現了,隨著 IT 行業的發展,很多工具都是越來越細化了,對於程序員的分工也越來越細化了,就像是工廠流水線上的工人一樣。
大家都只做自己崗位上的工作即可,產品,設計師,後端工程師,前端工程師,演算法工程師,測試工程師,運維工程師,然後各自還有細分的,比如:前端又分為移動端工程師,Web 端工程師等等。真的就如流水線上的工人一樣去組裝完成一個產品。
8. 成為游戲開發程序員,要學些什麼
1.圖形引擎 2.聲音引擎 3.物理引擎 4.游戲引擎 5.人工智慧或游戲邏輯 6.游戲GUI界面(菜單) 7.游戲開發工具 8.支持區域網對戰的網路引擎開發 9.支持互聯網對戰的網路引擎開發 下面逐一介紹每個部分: 1.圖形引擎主要包含游戲中的場景(室內或室外)管理與渲染,角色的動作管理繪制,特效管理與渲染(粒子系統,自然模擬(如水紋,植物等模擬)),光照和材質處理,LOD(Level Object Detail)管理等,另外還有圖形數據轉換工具開發,這些工具主要用於把美工用DCC軟體(如3DS Max,Maya,Soft XSI,Soft Image3D等)軟體製作的模型和動作數據以及用Photo shop或painter等工具製作的貼圖,轉化成游戲程序中用的資源文件。 2.聲音引擎主要包含音效(Sound Effect簡稱SE),語音(VOICE),背景音樂(Background music簡稱BGM)的播放。SE是指那些在游戲中頻繁播放,而且播放時間比較短,但要求能及時無延遲的播放,VOICE是指游戲中的語音或人聲,這部分對聲音品質要求比較高,基本上用比較高的采樣率錄制和回放聲音,但和SE一樣要求能及時無延遲的播放,SE在有的時候因為內存容量的問題,在不影響效果的前提下,可能會降低采樣率,但VOICE由於降低采樣率對效果影響比較大,所以一般VOICE不採用降低采樣率的做法。BGM是指游戲中一長段循環播放(也有不循環,只播放一次)的背景音樂,正是由於BGM的這種特性,一般游戲的背景音樂是讀盤(光碟或硬碟)來播放。另外一些高級聲音特效,如EAX,數字影院系統(DTS5.1),數字杜比環繞等。 3.物理引擎主要包含游戲世界中的物體之間、物體和場景之間發生碰撞後的力學模擬, 以及發生碰撞後的物體骨骼運動的力學模擬(比較著名的物理引擎有havok公司的game dynamics sdk,還有open source 的ODE—Open Dynamics Engine)。 4.游戲引擎主要是把圖形引擎、聲音引擎、物理引擎整合起來,主要針對某個游戲製作一個游戲系統,其包含游戲關卡編輯器,主要用途是可以可視化的對場景進行調整,光照效果和霧化等效果調整,事件設置,道具擺放,NPC設置,另外還有角色編輯器,主要用於編輯角色的屬性和檢查動作數據的正確性。一般日本游戲公司的做法,他們會把關卡編輯器和角色編輯器直接做到游戲中,所有的參數調整都在游戲中通過調試菜單來進行編輯,所以一般他們把這部分調試菜單的功能做的很強大,同時在屏幕上實時的顯示一些重要的信息,這樣做的好處是關卡編輯器調整的效果直接就是游戲的效果,但是對於程序的重用性來說可能不是很好,比如說要用到另外一個游戲項目中就比較難,除非兩個游戲類型相同,只要把場景和角色數據換一下,還有做下一代產品也沒有問題,只要根據式樣增加調試菜單的功能就可以了。 5.人工智慧和游戲邏輯開發,這部分日本和歐美的游戲開發模式也有很大不同,在歐美游戲公司中運用腳本語言開發很普遍,所以這部分程序開發主要是用腳本語言編寫,而且腳本程序和游戲程序的耦合性很低,有單獨的編輯、編譯和調試環境,這樣比較利於游戲程序和關卡設計開發分開,同時並行開發,所以一般他們都會有專門做關卡設計的程序員崗位。而日本游戲公司腳本語言一般和游戲的耦合性比較高,一般通過一些語言的宏功能和一些編譯器的特定功能來完成一個簡單的腳本系統,所以一般這些腳本程序只能在游戲程序中進行調試,而不能在一個單獨的腳本編輯,編譯環境中進行開發。 6.游戲GUI界面(菜單),主要是指那些游戲中用戶界面設計,有做的復雜,有簡單的,做的簡單就是2D GUI界面,做的復雜有3D GUI界面。 7.游戲開發工具主要包含關卡編輯器,角色編輯器,資源打包管理,DCC軟體的插件工具等開發。 8.支持區域網對戰的網路引擎開發,主要解決區域網網路發包和延遲處理,通訊同步的問題,有同步通訊和非同步通訊兩種做法,非同步通訊用於那些對運行幀速要求比較高的游戲,同步通訊相對非同步通訊來說效率相對低,但是同步通訊的編程模型相對非同步通訊來得簡單一些。 9.支持互聯網對戰的網路引擎開發,目前大部分網游都是C/S結構的,伺服器端軟體配置管理,伺服器程序的最優化,還有游戲大廳、組隊、游戲邏輯處理、道具管理、收費系統等。另外還有一些網路系統是C/S和P2P兩種結構混合的,如XBOX Live等。 程序員在游戲公司中的崗位在日本游戲公司和歐美的游戲公司有些不同,日本游戲公司中程序員的崗位主要有技術監督(Director),主程序員(Main Programmer),程序員(Programmer),在日本游戲公司里負責游戲項目開發的程序員,一般不會專門根據工作內容劃分程序員,除了獨立的系統研究室和聲音系統製作部門(這兩個部門是比較獨立的,往往同時給好幾個項目服務),負責每個游戲項目開發的程序員,隨時都可能一人多職,比如說主程序員除了負責整個游戲系統以外,可能還要負責圖形或聲音引擎開發等,程序員除了人工智慧以外還有菜單製作等。這種情況在歐美的游戲公司比較少見,他們分工的比較細,一般有圖形程序員,聲音程序員,人工智慧或游戲關卡程序員,物理程序員,每個組中可能還會有一個Leader。 這一點,日本公司和歐美公司也有些不同。日本公司一般喜歡從一些高校中招聘一些應屆優秀畢業生,一方面比招聘有經驗的人要來的成本低,另方面新人是一張白紙,容易培養,像SEGA、KONAMI等都是按這種原則招聘員工的,所以想進入日本游戲公司,你要學好你的軟體課程。而歐美公司希望招聘進來,能馬上進入項目的開發中去,所以他們一般希望招聘有工作經驗的人,即使不是行業中,在相關行業中工作2、3年的也可以,所以想進入歐美游戲公司你的工作經歷很重要。 我覺的一個游戲軟體程序員,最起碼的要求是熟練掌握計算機本科專業所學的知識,主要包括C語言或C++語言,數據結構,編譯原理,演算法等,另外線性代數、微積分、牛頓力學在圖形和物理引擎開發方面用途也很廣泛,如果要提高的話還有必要了解硬體相關的知識如計算機體系結構、匯編語言,這些對我們學習一個新的硬體平台、編寫最優化代碼、提高自己游戲的競爭力都是非常有益的。另外,保持有恆心、不怕苦(比如說通宵加班)的心態,對游戲的熱情也是非常重要的。對於那些想進入游戲行業,但缺乏軟體開發知識的人,可以通過參加游戲開發培訓來 現在有很多人,計算機本科畢業,學了很多軟體開發的知識,但是一旦要用到實際的項目開發時,感覺無從下手,這主要是在學校里運用知識的機會太少了。所以學習游戲編程最好的方法是能實際參與到一個好的游戲項目中和有豐富開發經驗的人一起開發游戲,可能學到很多你從書本上學不到知識和技能。但有時候你一時還沒有機會參與到一個好項目中,沒有機會進入一家好的游戲公司,但是你對游戲開發有一腔熱情,很希望學習游戲開發的技能,那你就應該去參加專門的游戲開發培訓,因為游戲開發培訓班中的老師都是一些有豐富開發經驗的老師,一般都有五年豐富的項目開發經驗,聽他們的課,實際上就是在和他一起分享這么多年的開發經驗,另外游戲開發培訓課程中會專門設計一些項目和課題,它們本身就是可以直接運用游戲開發中,這樣你可以不進入著名的游戲公司,但可以學到這些公司中一些常用的開發技能。�行┛�吹耐哦右膊皇撬奼閌裁慈司湍薌尤氳�.
9. 軟體開發分工
光製作層面來講的話,如果是面向對象的軟體,那麼,客戶端開發一名,服務端開發一名,軟體測試一名,系統美工一名,當然,四個人的團隊可以相互協作,相互配合,看完成的進度來調整輔助開發的任務。一個CS系統這樣的工作模式還是不錯的。當然如果是按照整個項目來分流程的化:
項目需求分析,用例圖編寫,工作計劃表,任務計劃表,程序員分工計劃表(一名:項目經理/組長)
項目開發模型:有多種開發模式,根據項目的大小進行選擇,然後在添加功能的時候及時跟客戶溝通交流,聽取客戶的意見。
項目開發:分工上面提到。
項目測試:可以多人測試,制定測試計劃進行測試。
項目文檔:項目經理編寫項目說明文檔,以及項目具體結構組成說明。