想成爲程序員,這些技能不能少

對於剛開始學習軟件開發的新人來講,「必備技能」每每意味着一個長長的、標有重要度的學習列表,可是過長的列表一般會致使新人不知如何開始學習,壓力倍增。程序員

本文嘗試列舉出最重要的幾個技能,也指望經過此列表能給新人一個比較明確的學習重點和路徑。面試

深刻學習一門編程語言

沒有掌握任何一門編程語言,就不可能成爲一名編程人員。算法

許多程序員試圖在學習之初一次學習幾種編程語言,以便應對他們第一份軟件開發工做的須要。雖然我認爲開發人員最終會學習多種編程語言, 但建議不要在開始時這樣作。 由於同時學習多種語言只會致使混亂,也會分散學習其它技能的精力。相反,我建議深刻的學習一種編程語言,這樣也會對使用這種語言編寫代碼感到很是有自信。數據庫

如何組織代碼

圖片描述

新手程序員在完成編程語言的學習以後,或者最好在學習編程語言的同時,須要掌握的是如何正確的組織代碼。編程

經過Steven McConnell所著的《Code Complete》,能夠幫助學習這個寶貴的技能。數組

組織代碼意味着編寫良好的、清晰可理解的、不須要大量註釋的代碼,由於代碼自己是可自注釋的。許多軟件開發人員究其整個職業生涯都未曾具有這樣的技巧,可是這個技能倒是判斷一個軟件開發人員的技術和能力的首要標準。良好的代碼結構表明的不只僅是完成了編碼工做,而是對編碼事業的熱衷奉獻。網絡

對於新手程序員來講,簡潔清晰且含義明確的代碼,能讓你輕鬆地經過面試。數據結構

提高代碼結構已經成爲了軟件開發的重要部分,可是提高的過程倒是十分嚴格的。在這個過程當中,雖然不須要編寫新的代碼,可是卻須要和團隊成員一塊兒花費大量時間來維護現有的代碼。框架

面向對象設計

圖片描述

爲了應對軟件開發中的面向對象設計思想,開發人員也須要學習一種面向對象的語言。數據結構和算法

面向對象設計是一種設計複雜程序的方法,它將代碼分紅了單獨的類和對象(類的實例),這些類和對象封裝了一些特定的功能。

咱們一直試圖在軟件開發中管理複雜性,用對象的方式思考就能幫助咱們作到這點。面向對象容許咱們跳出一堆關係繁雜的組件,來清晰的定義和設計一個複雜的系統。

如今已經有大量的功能性編程語言,可是在軟件開發過程當中,你會發現那些最受歡迎的語言和模型都深受面向對象設計的影響。因此就須要深刻的理解類、繼承以及如何使用,還有多態和封裝。

數據結構和算法

圖片描述

軟件開發人員應該熟悉如下的數據結構:

  • 數組或向量

  • 鏈表

  • 堆棧

  • 隊列

  • 樹結構

  • 哈希

  • 集合

掌握並熟練運用以上的數據結構,能幫助開發人員清晰的定義、存取、管理數據。經過合理的數據結構和算法,許多困難的編程問題就能迎刃而解。

常見的算法有如下幾種:

  • 排序算法

  • 查找算法

  • 圖搜索算法

  • 動態規劃算法

  • 模式匹配算法

善於利用好的算法,能起到事半功倍的效果。若是你對算法不夠熟悉的話,就很難提出一個好的解決方案,這也就是須要咱們掌握算法的緣由。

事實上, 數據結構和算法也是軟件開發中最有趣的領域之一。利用數據結構和算法來開發一個乾淨、簡潔的解決方案,效果會很是好。

Gayle Laakmann McDowell的「Cracking the Coding Interview」書中介紹了有關算法和數據結構的全部知識。

學習這些知識是一個挑戰,但倒是很是值得的。掌握其中的任何一個技能,都能讓你遠遠超過其餘人。這些知識也正是其它軟件開發人員所不具有的。

開發平臺及相關技術

圖片描述

應該至少對一個開發平臺以及與之相關的技術或框架有必定的經驗。

平臺一般意味着操做系統(OS),但它也適用於與操做系統相似的其餘抽象系統。例如,你多是專一於Mac或Windows操做系統的Mac開發人員或Windows開發人員,同時你也能夠是專一於特定Web平臺的Web開發人員。

具有某個特定平臺的專業知識,不只僅意味着須要熟悉平臺自己,還須要掌握開發平臺經常使用的開發工具、模式和通用框架。

框架與技術棧

除了學習特定的編程語言和平臺外,學習並掌握一個框架和技術棧也是很是重要的。

框架是一組用於在特定平臺或多個平臺上開發代碼的庫,它一般會使該平臺上的常見編程任務更加容易。例如,大多數C#開發人員使用.NET Framework編寫C#應用程序。.NET Framework由許多庫和類組成,容許C#開發人員在更高層次的抽象中工做。

技術棧則與框架有點不一樣,技術棧是一組一般包括框架的技術,一般一塊兒用於建立完整的應用程序。技術棧使得建立應用程序變得更加容易, 由於它們提供了許多開發人員用於開發應用程序的常見範例,所以能夠輕鬆共享知識。學習技術棧是很是有價值的,由於這意味着你擁有開發完整應用程序所需的全部技能。許多使用特定技術棧開發應用程序的公司,也在尋找熟悉該技術棧的軟件開發人員。

數據庫基礎知識

圖片描述

目前, 主要有兩種數據庫技術:關係數據庫和文檔數據庫。

如今的開發人員應該很熟悉關係數據庫,但同時也應該對文檔數據庫有所瞭解。

在軟件開發中,數據庫一般用於存儲應用程序的數據。

對於數據庫,開發人員至少應該瞭解如下方面:

  • 數據庫的工做原理

  • 如何執行基本查詢來獲取數據

  • 如何插入、更新和刪除數據

  • 如何添加數據集

源代碼管理

管理源代碼是任何軟件開發項目不可或缺的組成部分。在使用源代碼以前,應該有一個網絡來共享項目的全部文件。

源代碼管理工具最基本的功能,是保留軟件項目中對文件所作更改的歷史記錄。它還容許多個開發人員同時處理相同的代碼, 並將這些處理代碼融合在一塊兒。

全部的開發人員都應該知道如何使用源代碼管理工具,以便可以檢查代碼並從多個來源融合代碼。

構建和部署

目前,大多數軟件開發項目都有一些自動化的構建和部署系統。同時也有許多不一樣的軟件應用程序,來幫助團隊自動化構建和部署任務。

構建

當你編寫代碼並將其合入到源代碼管理系統中後,你想經過一些方法瞭解你合入的代碼是否運行的很好,這就須要進行構建。構建會編譯系統中的全部代碼,並確保沒有編譯錯誤。一個複雜的構建系統還能夠運行單元測試和用戶測試,或者代碼質量檢查,並提供一些有關代碼庫當前狀態的報告。

部署

部署系統負責將代碼部署到產品機器上,或者將其部署到某種測試環境中。

雖然開發人員不必定要成爲部署方面的專家,可是瞭解系統的基礎知識以及構建和部署代碼的過程也是很是的重要。

測試

圖片描述

如今,不少的軟件項目都採用了所謂的敏捷流程,軟件開發人員和測試人員合做的更加密切。代碼質量成爲了整個開發團隊的責任,因此開發人員也須要對測試知識有必定了解。

對於開發人員來講,至少應該熟悉如下的基本術語:

  • 白盒測試

  • 黑盒測試

  • 單元測試

  • 邊界條件

  • 測試自動化

  • 驗收測試

調試

對於軟件開發人員來講,常常會花費90%左右的時間,來弄清楚本身的代碼爲何不起做用了。不論你從事任何語言的代碼開發,代碼調試都是開發過程當中不可缺乏的一部分。

因此開發人員應該下定決心,認真的學習如何作到高效的調試代碼。

方法論

一些軟件開發團隊在編寫代碼並完成他們的項目時,都遵循着一些方法論。因此開發人員至少應該熟悉諸多最多見的軟件開發方法論中的基本幾種,這裏要說的就是瀑布開發和敏捷開發。

總結

儘管本文中列舉的軟件開發人員應該瞭解的知識不少,其中不少知識也許正是你所不瞭解,可是請不要沮喪。咱們要作的就是認真的補充這些知識,不斷的提升本身。

開發技能可以保證咱們開發任務的順利進行,開發工具則能很好的提升開發效率。葡萄城控件一直致力於爲廣大.NET平臺開發人員提供高品質的開發工具產品。

原文連接:https://dzone.com/articles/th...

轉載請註明出自:葡萄城控件

相關文章
相關標籤/搜索