當前位置:
首頁 > 知識 > IT程序員如何披荊斬棘?教你幾招可好

IT程序員如何披荊斬棘?教你幾招可好

對於剛開始進入IT的新人來說,「必備技能」往往意味著一個長長的、標有重要度的學習列表,但是過長的列表通常會導致新人不知如何開始學習,壓力倍增。

正文

我們在工作的過程中,有時候很迷茫和不知所措, 特別是剛步入職場的小猿猿們,有時候需要大神帶領一下,或者需要自己摸索。如何正確的提高自己的能力,我這裡給出了一個比較明確的學習重點和路徑。


深入學習一門編程語言

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

許多程序員試圖在學習之初一次學習幾種編程語言,以便應對他們第一份軟體開發工作的需要。雖然我認為開發人員最終會學習多種編程語言, 但建議不要在開始時這樣做。

因為同時學習多種語言只會導致混亂,也會分散學習其它技能的精力。相反,我建議深入的學習一種編程語言,這樣也會對使用這種語言編寫代碼感到非常有自信。


如何組織代碼

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

通過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%左右的時間,來弄清楚自己的代碼為什麼不起作用了。不論你從事任何語言的代碼開發,代碼調試都是開發過程中不可缺少的一部分。

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


方法論

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


總結

儘管本文中列舉的軟體開發人員應該了解的知識很多,其中很多知識也許正是你所不了解,但是請不要沮喪。我們要做的就是認真的補充這些知識,不斷的提高自己。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員之家 的精彩文章:

面霸可以練成,程序員如何成功面試
IT人為什麼難以拿高薪?

TAG:程序員之家 |