想成為程式設計師,這些技能不能少

2021-09-05 08:38:32 字數 3615 閱讀 6058

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

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

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

許多程式設計師試圖在學習之初一次學習幾種程式語言,以便應對他們第乙份軟體開發工作的需要。雖然我認為開發人員最終會學習多種程式語言,  但建議不要在開始時這樣做。  因為同時學習多種語言只會導致混亂,也會分散學習其它技能的精力。相反,我建議深入的學習一種程式語言,這樣也會對使用這種語言編寫**感到非常有自信。

新手程式設計師在完成程式語言的學習之後,或者最好在學習程式語言的同時,需要掌握的是如何正確的組織**。

通過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平台開發人員提供高品質的開發工具產品。

想成為程式設計師,這些技能不能少

對於剛開始學習軟體開發的新人來說,必備技能 往往意味著乙個長長的 標有重要度的學習列表,但是過長的列表通常會導致新人不知如何開始學習,壓力倍增。本文嘗試列舉出最重要的幾個技能,也期望通過此列表能給新人乙個比較明確的學習重點和路徑。沒有掌握任何一門程式語言,就不可能成為一名程式設計人員。許多程式設計師...

想成為程式設計師,這些技能不能少

對於剛開始學習軟體開發的新人來說,必備技能 往往意味著乙個長長的 標有重要度的學習列表,但是過長的列表通常會導致新人不知如何開始學習,壓力倍增。本文嘗試列舉出最重要的幾個技能,也期望通過此列表能給新人乙個比較明確的學習重點和路徑。沒有掌握任何一門程式語言,就不可能成為一名程式設計人員。許多程式設計師...

程式設計師如何判斷自己能不能做管理

有很多程式設計師,幹了幾年之後,看到別人做領導,做管理,特別眼紅,眼氣,羨慕嫉妒恨,五味雜陳。其實呢,幹什麼有什麼的難處,別的人幹得了的,你未必幹的了。下文我剖析一下,程式設計師如何判斷自己能不能做管理。首先,不管在哪個行業,人們就分為兩類人,專業人才和管理專業人才的人才。管理人才的人才,要求更嚴格...