首頁>Club>
現在還在學C++Primer(第五版),不知學完了是否有能力寫個小遊戲看看成果。順便問下各位大佬,作為一個合格的程式設計師需要什麼技能
8
回覆列表
  • 1 # 技術同胞

    只會了C++可能還不夠,還需要學習基於C++的遊戲引擎,或是直接使用DirectX SDK來編寫遊戲。當然這主要跟什麼遊戲有關。如果是3D類的略為麻煩,如果是2D的話,需要掌握圖片相關的處理技術,比如:怎麼縮放圖片?怎麼Copy圖片?等等。

    一個合格的程式需要什麼技能

    Linux系統

    很多人的開發機器是windows,所以平時也基本都是圖形化開發介面。但是,這並不意味著你就不需要基本的Linux技巧。

    因為,你開發出來的應用可能部署在一臺Linux機器上,很多時候你要和這臺線上的Linux伺服器打交道,所以,Linux系統的安裝、開發環境的搭建、Linux常用命令以及Linux環境下專案的部署啟動和除錯等都是必備技能。

    否則,一旦線上出點什麼問題,你就會束手無策了。

    單元測試

    我在《單元測試的重要性》中說過,單元測試是很重要的,而且,好的單元測試可以幫助我們節省很多開發時間。單元測試是保證軟體可以更好的持續整合和持續交付的一個基本前提。

    單元測試也涉及到很多技巧等,比如使用Mock進行單測、使用記憶體資料庫進行單測等。

    一個開發人員,要有寫單測的習慣,也要掌握基本的單測寫法技巧。這樣可以儘早的發現問題。

    版本管理

    我相信基本上所有的公司的程式碼都會透過版本管理工具進行託管的,不管是Git還是SVN。

    而且,現在很多技術都透過GitHub進行開源和共建的,版本管理工具的使用也是一個Java開發必備的基本技能。

    版本管理也有很多學問在的,比如到底什麼時候應該提交、提交的時候 Commit message 應該如何書寫,如何解決程式碼衝突等都需要熟練掌握的。

    構建工具

    和版本管理一樣,企業級開發的依賴管理也不再是那種原始的進行Jar包的匯入匯出。而是藉助於像maven或者gradle等工具。

    構建工具的使用同樣重要,而且一個合格的開發人員,要掌握如何進行依賴衝突的檢查、如何進行依賴仲裁等。

    程式碼除錯

    有人調侃程式設計師,一半的時間在寫bug,另外一半的時間在debug。這句話聽起來挺扎心的,但是也恰恰說明了debug的重要性。

    雖然說程式設計師花費一半的時間在寫bug是有點過分的,但是,任何程式設計師的程式碼也不可能一氣呵成,越大型的專案bug可能就會越多,線上下開發的時候,debug是最有效的問題發現和解決的手段。

    程式碼除錯其實比較簡單,只要設定好端點,跟著程式一步一步的執行看效果就好了。只要學會運用IDE提供的工具就可以了。可以參考《Eclipse的Debug技巧》

    問題排查與解決

    關於問題排查,這個能力真的是非常非常重要的。

    發生問題的時候,就是檢驗程式設計師能力的時候。這是最能區分程式設計師的水平的技能了。一個問題往往可能會涉及到很多個方面的知識。

    阿里有一個神級人物,花名多隆。在淘寶初期,不管遇到什麼問題,他基本都能解決。他之所以被稱之為神,就是因為他的問題排查和解決能力。如果你能在兩天內解決一個組兩週都沒解決的問題,那麼你也會被稱之為神。

    很多時候,解決問題並不難,難的是定位問題。這會涉及到很多知識,知識儲備很重要,但是,在知識儲備還不夠的情況下,至少可以從以下幾個方面來提升自己的能力。

    1、日誌的檢視

    2、分析Java的堆疊資訊

    3、叢集監控指標的檢視

    非開發技能

    還有一類技能,可能就和開發完全沒有關係的,我稱之為非開發技能。這些技能往往決定著一個開發人員到底能夠走多高。

    目標導向

    我把目標導向稱之為一種能力,是一種一個人應該具備的基本能力。而且,也是可以鍛鍊和培養出來的。

    目標導向型的人,就是做事之前先明確目標,再尋找實現目標的方法,最後動用一切可以利用的資源透過各種方法來實現目標。

    目標導向型的人,目標是明確的。

    目標明確的人,做事的時候,不會輕易動搖或者放棄,為了目標能克服困難堅持到最後。

    目標明確的人,做事的時候,會去思考、嘗試實現目標的各種方法。

    目標明確的人,做事的時候,會去發現、創造、借用一切能夠實現目標的資源。

    不斷給自己設定目標,做一個目標導向的程式設計師吧。如果,你非要把目標導向理解為KPI導向我也不攔著。主要是有目標,為之而努力,我覺得就是OK的。

    時間管理

    對於任何人來說,時間管理都是很重要的,對於程式設計師來說,尤其重要,因為我們可支配的時間並不多。

    如何正確的管理自己的時間,是一門很深的學問。有些人加班加點,甚至996的工作方式。但是最終還是得不到一個好的結果,這很大程度上是由於時間管理的不夠好,大部分時間都在“瞎忙”。

    很多時候,苦勞在功勞面前會略顯滄桑。

    一個程式設計師的一天會有很多事情要忙,在工作上,一天可能排了幾個需求評審、設計評審、互動評審、TC評審等,還要排查問題,還要寫程式碼,有的時候還要充當產品、運營、甚至客服的角色。在生活中,還要陪伴家人、充實自己,鍛鍊身體等。如何安排好自己的時間是十分重要的。

    關於時間管理,我有個建議,那就是把自己的手上的事情排列好,一段時間只做一件事。

    快速學習

    在這個技術高速發展的時代,每天都有新技術在推出。一個好的開發人員要保證自己永遠不會被淘汰,就需要不斷的去學習。

    而學習無疑是要花費很多的時間的。那麼,快速的學習能力對於一個時間本就不多的程式設計師來說也是至關重要的。

    英語能力

    首先,我們的日常開發的程式碼都是基於英文的,目前很多技術也都是外華人發明的。也就是說很多技術剛出來的文件都是英文的。

    拿最近最火的區塊鏈舉例,不管中本聰是不是日本人,他釋出的區塊鏈白皮書也是英文的,英語能力好的人可以馬上學習到新的知識,英語能力不好的,可能看到的都是二手翻譯資料了。

    英語好的技術人員,靠翻譯書籍也能賺很多錢。而英語不好的程式設計師,給變數命名都費勁。

    科學上網

    這一點我覺得對於開發人員來說是至關重要的。就像前面那條英語能力一樣。很多資料都是釋出在國外的網站上的。

    無論是Google、維基百科這些都需要科學上網。而且很多國外的網站,如StackOverflow、GitHub等科學上網也能更快的訪問到。

    專案管理

    每一個程式設計師,都有做PM的那一天,不管負責的是大專案還是小專案。都需要很好的專案管理能力才行。

    要知道如何預估風險、如何預估成本、如何保證專案按時上線、如何管理專案團隊,這都是有很多學問在的。

    任何一點掌握不好,都有可能導致專案風險甚至專案失敗。

    專案管理這種事情,專案如期釋出可能並沒有功勞,但是一旦專案delay,那就有罪過了。

    不會專案管理的程式設計師,最多也就是一個高階程式設計師,無法晉升為專家及以上級別。

    協調溝通

    在一個專案中,除了專案經理角色外,開發人員之間也並不是獨立的。很多時候都需要跨團隊、跨部門甚至跨公司之間合作。

    在專案中,你和其他參與的同學是同一個角色的,大家之間的關係在層級上可以算是平級,那麼如何很好的橫向管理會很重要了。

    為什麼很多人解決一件事情很快,有些人卻要繞很多彎子。因為有些人懂得協調溝通的技巧,說白了就是出去辦事有時候光靠“刷臉”就可以解決問題了。那麼,之所以可以“刷臉”,就是因為平時的協調溝通能力強。

    理解能力

    理解能力不好,就不能很好的理解需求。不能很好的理解需求,就可能浪費很多時間。很多時候,PD給的需求文件並不都是合理的,這種情況下,如果開發的理解能力再差一些,無法在需求評審階段正確的理解需求,那麼這個專案的結果可想而知。

    理解能力不好,就沒辦法快速的學習新的知識,同樣也要比別人多花費一些時間。同樣是學習Java 9的Jigsaw,有些人就能很快的理解模組化的原理,有些人就怎麼都想不通。這就是因為理解能力的不同。

    表達能力

    前面說的幾項能力,都或多或少的要依賴表達能力。如果表達能力不好,協調溝通肯定出問題,更別提專案管理了。

    除了日常工作需要表達能力和別人溝通外,很多公司要寫日報、週報或者月報等。表達能力好的就可以很清楚的寫明白自己做了什麼,有什麼貢獻,這樣領導看的也舒服。工作成果自然不會很差。

    還有,就是很多公司的晉升制度是靠答辯的。那麼如何很好的把自己過去一段時間的工作成果和收穫表達的清楚很大程度上決定著晉升的結果。

    還有些時候,開發人員也要參與演講,無論是團隊內部、公司內部還是參與業內會議。表達能力都至關重要。很多時候,別人瞭解一個人,首先就是透過他的表達能力。

    新木桶理論

    前面說了這麼多,細數下來,好像一個程式設計師就是全能了一樣。不過,我想說,程式設計師就應該是全能的,因為我們是要改變世界的啊。

    話說回來了,如果你有能力,最好可以把上面的所以能力都鍛煉出來。但是,如果你就是某方面不是很擅長,那麼,你也應該清楚的認識到自己哪裡不足。

    不知道自己不知道才是最可怕的。這篇文章,有一個小目的,就是先讓你知道你自己不知道。

    我們知道的木桶定律——桶裝水的多少,取決於最短的一塊板子。

    傳統的木桶定律是把木桶放在平面上來衡量的。但是,如果把木桶放置在一個斜面上的時候,木桶裝水的多少就取決於最長的一塊板子的長度。

    當然這要求長與長要正相對,並且長木塊的周圍要有相應長度的木塊作為她的輔助。

    也就是說當我們比別人在某一塊短一大節時,不但要選擇合適的斜度。更重要的是把其他木塊合理排列起來,使它們發揮應有的作用。這樣才可以最大限度的利用現有的木塊

  • 2 # 春風攜暖入屠蘇

    冒昧回答一下,我不是大佬,也是個新手。我沒學過c++,但是c++peimer這本書大致粗略的看過,我覺得學完了寫個推箱子、貪吃蛇或者俄羅斯方塊之類的小遊戲應該不是很大的問題。寫這些都不會涉及到一些高階資料結構和演算法。資料結構一般用到的也就是線性錶鏈表hashmap之類的,唯一涉及到的演算法的話也就是最普通的碰撞檢測了吧。當然你也可以嘗試加入一些設計模式,比如備忘錄、簡單工廠之類的。如果想要個好看的介面的話,建議使用三方庫,你可以嘗試瞭解一下qt,這個需要你看官方文件。

  • 中秋節和大豐收的關聯?
  • 《知否》中明蘭母親只是不得寵的妾,林噙霜為何要置她於死地?