自學(xué)軟件開(kāi)發(fā)怎么入門(自己怎么學(xué)軟件開(kāi)發(fā))
今天給各位分享自學(xué)軟件開(kāi)發(fā)怎么入門的知識(shí),其中也會(huì)對(duì)自己怎么學(xué)軟件開(kāi)發(fā)進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問(wèn)題,別忘了關(guān)注本站,現(xiàn)在開(kāi)始吧!
本文目錄一覽:
- 1、軟件開(kāi)發(fā)如何開(kāi)始學(xué)習(xí)?
- 2、自學(xué)軟件開(kāi)發(fā),需要學(xué)習(xí)什么課程?
- 3、如何自學(xué)軟件開(kāi)發(fā)
- 4、軟件開(kāi)發(fā)如何開(kāi)始學(xué)習(xí)呢?
- 5、如何自學(xué)軟件編程
- 6、軟件開(kāi)發(fā)自學(xué)步驟
軟件開(kāi)發(fā)如何開(kāi)始學(xué)習(xí)?
首先一點(diǎn),那就是你需要學(xué)習(xí)很多東西才能成為軟件開(kāi)發(fā)人員。
不能詳盡說(shuō)明作為軟件開(kāi)發(fā)者你可能需要掌握的所有技術(shù)技能,但是我會(huì)列出最關(guān)鍵的一些技術(shù)技能。
選擇編程語(yǔ)言,這是最重要的。前端開(kāi)發(fā),是現(xiàn)如今最熱門的開(kāi)發(fā)崗位,高級(jí)的前端開(kāi)發(fā)工程師,在企業(yè)里面是非常欠缺的。成為前端開(kāi)發(fā)工程師,第一步應(yīng)該是學(xué)習(xí)HTML/CSS/JavaScript,這是基礎(chǔ),也是根本,JavaScript是根本里面的根本,叫根深蒂固。
許多新手程序員會(huì)試圖一次性或在第一份工作之前學(xué)習(xí)幾種編程語(yǔ)言,以便于有備無(wú)患。
雖然我認(rèn)為你最終應(yīng)該學(xué)會(huì)一種以上編程語(yǔ)言,但我不建議提前這樣做,因?yàn)檫@只會(huì)導(dǎo)致混亂,并且會(huì)分散你需要學(xué)習(xí)的其他技能的精力。
相反,我建議你應(yīng)該深入研究,重點(diǎn)學(xué)習(xí)單一編程語(yǔ)言的來(lái)龍去脈,這樣你才能對(duì)用這種編碼語(yǔ)言來(lái)寫(xiě)代碼信心十足。
構(gòu)造代碼
在學(xué)習(xí)了一門編程語(yǔ)言之后——或者最好是在學(xué)習(xí)的同時(shí)——我堅(jiān)信,你需要知道的下一件事就是如何正確地構(gòu)造你的代碼。
我所說(shuō)的構(gòu)造代碼是什么意思呢?
我的意思是,要寫(xiě)出好的,清晰的,易于理解的代碼,不需要大量注釋,因?yàn)榇a本身就是一種表達(dá)方式。
很多軟件開(kāi)發(fā)者在他們整個(gè)職業(yè)生涯都不曾去學(xué)習(xí)這個(gè)技能,這是不幸的,因?yàn)檫@是我——以及其他許多人——判斷一個(gè)軟件開(kāi)發(fā)人員技術(shù)和能力的主要方式。
良好的代碼結(jié)構(gòu)展示了對(duì)這種技藝的熱衷,而不僅僅是為了完成工作。
構(gòu)建代碼是軟件開(kāi)發(fā)真正的藝術(shù)部分,但它也是至關(guān)重要的,因?yàn)槟愫湍愕耐碌没ㄙM(fèi)相當(dāng)多的時(shí)間來(lái)維護(hù)現(xiàn)有的代碼,而不是編寫(xiě)新的代碼。
具體應(yīng)該如何正確地組織代碼我就不說(shuō)了,因?yàn)槲乙呀?jīng)給出了一個(gè)很好的資源,但是要努力學(xué)習(xí)如何從一開(kāi)始就寫(xiě)出好的、干凈的代碼,而不是事后學(xué)習(xí)這個(gè)技能。
我只能保證,即使你是個(gè)新手,如果你可以寫(xiě)出好的、干凈又簡(jiǎn)潔的、易懂的,本身就可以表達(dá)意思的代碼,那么任何面試官看到你的代碼都會(huì)覺(jué)得你是一個(gè)有經(jīng)驗(yàn)的專業(yè)人士。
并且在一定程度上,或者至少在這條道路上,因?yàn)槟銜?huì)將這個(gè)職業(yè)當(dāng)作一種專業(yè),而不是一份工作。
面向?qū)ο蟮脑O(shè)計(jì)
這有爭(zhēng)議的,特別是如果你正在學(xué)習(xí)的編程語(yǔ)言并不面向?qū)ο?,但是有大量的軟件開(kāi)發(fā)世界會(huì)按照面向?qū)ο笤O(shè)計(jì)的思維思考,所以你需要確保你了解它。
面向?qū)ο蟮脑O(shè)計(jì)是一種將復(fù)雜程序設(shè)計(jì)分解為單獨(dú)的類或?qū)ο螅惖膶?shí)例)的方法,其中封裝功能且具有特定的角色和責(zé)任。
在軟件開(kāi)發(fā)中,我們總是試圖管理復(fù)雜性。
從對(duì)象的角度思考可以幫助我們做到這一點(diǎn),因?yàn)樗茏屛覀儚囊欢呀换ソM件中定義并設(shè)計(jì)一個(gè)復(fù)雜的系統(tǒng),而不是作為一個(gè)整體的試圖解決整個(gè)復(fù)雜性。
現(xiàn)在的編程世界有著大量的函數(shù)式編程語(yǔ)言,但你在軟件開(kāi)發(fā)中找到的最流行的語(yǔ)言和模式,仍然深受面向?qū)ο笤O(shè)計(jì)和分析的影響。
你應(yīng)該好好理解什么是類,繼承的不同類型——何時(shí)使用它們——還有理解像多態(tài)性和封裝等術(shù)語(yǔ)。
算法和數(shù)據(jù)結(jié)構(gòu)
如果你上傳統(tǒng)院校學(xué)習(xí)并想獲得計(jì)算機(jī)科學(xué)學(xué)位的話,那么這是一個(gè)很大的考點(diǎn)。
算法是解決各種計(jì)算機(jī)科學(xué)/編程問(wèn)題的常用方法。
例如,有若干常見(jiàn)的在程序上用于排序的算法。每一種排序算法都有一系列關(guān)于速度,內(nèi)存大小要求,以及數(shù)據(jù)理想類型的不同屬性。
計(jì)算機(jī)科學(xué)領(lǐng)域有很多這樣的算法,并且理解如何變化這些算法來(lái)解決你可能遇到的棘手問(wèn)題也很重要,當(dāng)你解決現(xiàn)實(shí)編程問(wèn)題的時(shí)候。
通常情況下,擅長(zhǎng)這些算法可以讓一個(gè)開(kāi)發(fā)人員在1個(gè)小時(shí)之內(nèi)就能解決可能需要另一個(gè)開(kāi)發(fā)人員幾天時(shí)間才能搞清楚的問(wèn)題。
除非你熟悉和擅長(zhǎng)算法,否則你甚至不知道已經(jīng)有了優(yōu)雅的解決方案在那里。因此,僅僅只為這個(gè)原因,我認(rèn)為這也是一個(gè)值得掌握的寶貴技能。
數(shù)據(jù)結(jié)構(gòu)也是如此,并且可以與算法結(jié)合使用。
有幾個(gè)所有軟件開(kāi)發(fā)者都應(yīng)該熟悉數(shù)據(jù)結(jié)構(gòu)中的,包括:
數(shù)組或向量
鏈表
堆棧
隊(duì)列
樹(shù)
哈希
集合
通過(guò)熟練掌握數(shù)據(jù)結(jié)構(gòu)和算法,你可以輕松又優(yōu)雅地解決許多艱難的編程問(wèn)題。
當(dāng)我開(kāi)始編程的時(shí)候,我在數(shù)據(jù)結(jié)構(gòu)和算法方面非常糟糕,因?yàn)槲抑饕强孔詫W(xué)的。
我一直都沒(méi)有意識(shí)到它們的價(jià)值,很快,隨著我遇到了一些我不知道如何解決的問(wèn)題,我發(fā)現(xiàn)這些技能在真正的編程世界非常有用,而且解決起來(lái)相當(dāng)簡(jiǎn)單——和有趣。
事實(shí)上,我認(rèn)為這是軟件開(kāi)發(fā)最有趣的領(lǐng)域之一。解決難題并利用數(shù)據(jù)結(jié)構(gòu)和算法來(lái)開(kāi)發(fā)一個(gè)又干凈又優(yōu)雅的解決方案,真的很有意義。
學(xué)習(xí)這些東西是一個(gè)挑戰(zhàn),但非常值得。這是可以讓你超越眾多同行的技能之一。大多數(shù)軟件開(kāi)發(fā)人員都不擅長(zhǎng)這個(gè)領(lǐng)域。
如果你想通過(guò)如微軟或谷歌這樣的大公司的面試,那么你一定得掌握這個(gè)技能集。
開(kāi)發(fā)平臺(tái)及相關(guān)技術(shù)
你應(yīng)該具備一些經(jīng)驗(yàn),并至少掌握一個(gè)開(kāi)發(fā)平臺(tái)以及與之相關(guān)的技術(shù)或框架。
我所說(shuō)的平臺(tái)是什么意思呢?
好的,通常它的意思是操作系統(tǒng)(OS),但也適用于其他可以充當(dāng)類似于操作系統(tǒng)角色的抽象。
例如,你可以是專注于Mac或Windows操作系統(tǒng)得Mac開(kāi)發(fā)者或Windows開(kāi)發(fā)者,你也可以是一名專注于特定的web平臺(tái)的web開(kāi)發(fā)人員。
具體確切的關(guān)于平臺(tái)是什么就不討論了——不同的人會(huì)有不同的看法——但這里我要定義平臺(tái)為你開(kāi)發(fā)的特定環(huán)境,它有自己的生態(tài)系統(tǒng)和特殊性。
再者,這是另一個(gè)我認(rèn)為選擇并非那么重要的技術(shù)技能,只要你選擇了一個(gè)就好。
企業(yè)通常會(huì)聘請(qǐng)開(kāi)發(fā)人員針對(duì)特定的平臺(tái)或技術(shù)開(kāi)發(fā)軟件。
你作為iOS開(kāi)發(fā)者將更容易找到工作,如果你專業(yè)于那個(gè)特定平臺(tái)的話。
這意味著要熟悉平臺(tái)本身,以及開(kāi)發(fā)工具,慣用模式,還有大多數(shù)程序員在為那個(gè)平臺(tái)開(kāi)發(fā)時(shí)會(huì)使用的通用框架。
你可能會(huì)認(rèn)為編程語(yǔ)言的選擇決定了平臺(tái),但實(shí)際上事實(shí)情況很少是這樣的。
就拿C#舉例。如果你是一個(gè)C#開(kāi)發(fā)人員,那么你可以用這種編程語(yǔ)言為Windows,Mac,iOS,Android,Linux,甚至是嵌入式系統(tǒng)寫(xiě)代碼。
所以,不要僅僅只是選擇語(yǔ)言;還要選擇平臺(tái)。
框架或堆棧
除了學(xué)習(xí)特定的編程語(yǔ)言和平臺(tái),我高度建議去學(xué)習(xí)框架,或者更好的是,與之相配套的完整的開(kāi)發(fā)堆棧。
什么是框架?
什么是堆棧?
框架就是一系列被用于在特定平臺(tái)或多個(gè)平臺(tái)上開(kāi)發(fā)代碼的庫(kù)。它通??梢允沟迷谠撈脚_(tái)上的編程任務(wù)變得更加容易。
看這個(gè)C#的例子。大多數(shù)C#開(kāi)發(fā)人員使用.NET框架來(lái)編寫(xiě)C#應(yīng)用程序。 .NET框架包括許多庫(kù)和類,能夠讓C#開(kāi)發(fā)人員在更高的抽象級(jí)別上工作,因?yàn)槊慨?dāng)他想做什么事情的時(shí)候,沒(méi)有必要完全重新發(fā)明輪子。
例如,.NET框架的部分還包含了處理圖像的代碼。這類代碼從頭編寫(xiě)是極其困難的,所以框架極大地幫助了C#開(kāi)發(fā)人員去編寫(xiě)需要以某種方式處理圖像的代碼。
堆棧則有點(diǎn)不同。堆棧是一組技術(shù),通常包括一個(gè)框架,并且常一起用于創(chuàng)造一個(gè)完整的應(yīng)用程序。
例如,有一個(gè)常見(jiàn)的稱為MEAN的棧。它代表MongoDB,Express.js,AngularJS,和Node.js。
MongoDB是一個(gè)數(shù)據(jù)庫(kù)技術(shù)。
Express.js是一個(gè)用于創(chuàng)建web應(yīng)用程序的Node.js框架。
AngularJS是一個(gè)用于為web應(yīng)用程序創(chuàng)建用戶界面的前端JavaScript框架。
最后,Node.js是一個(gè)用JavaScript開(kāi)發(fā)基于web應(yīng)用程序的運(yùn)行時(shí)環(huán)境。
有沒(méi)有理解所有這些東西并不重要—— 除非你打算成為一個(gè)MEAN開(kāi)發(fā)者——重要的是要明白,如果你知道所有這些技術(shù)和框架,那么你就能夠開(kāi)發(fā)一個(gè)完整的web應(yīng)用程序。
棧使得創(chuàng)建應(yīng)用程序變得更容易,因?yàn)樗鼈兲峁┝艘环N許多開(kāi)發(fā)者用來(lái)開(kāi)發(fā)應(yīng)用程序的通用范式,因此知識(shí)可以很容易地共享,并且你也能確定哪些特定的技能集市可以一起工作的。
學(xué)習(xí)堆棧真的是非常有價(jià)值,因?yàn)檫@意味著你擁有開(kāi)發(fā)一個(gè)完整的應(yīng)用程序所有必要的技能。很多使用特定堆棧開(kāi)發(fā)應(yīng)用程序的企業(yè),更愿意雇用那些熟悉那類堆棧能夠立馬開(kāi)展工作的軟件開(kāi)發(fā)人員。
基礎(chǔ)數(shù)據(jù)庫(kù)知識(shí)
即使數(shù)據(jù)庫(kù)的景色在過(guò)去幾年時(shí)間里已經(jīng)改變了不少,但我不認(rèn)為數(shù)據(jù)庫(kù)會(huì)很快消失,因此對(duì)此了解一二總是不會(huì)錯(cuò)的,對(duì)吧?
當(dāng)前主要有兩種數(shù)據(jù)庫(kù)技術(shù):關(guān)系數(shù)據(jù)庫(kù)和文檔數(shù)據(jù)庫(kù)。
現(xiàn)在的開(kāi)發(fā)人員至少應(yīng)該熟悉關(guān)系數(shù)據(jù)庫(kù),并稍微了解文檔數(shù)據(jù)庫(kù)。
在軟件開(kāi)發(fā)中,數(shù)據(jù)庫(kù)經(jīng)常被用來(lái)存儲(chǔ)應(yīng)用程序的數(shù)據(jù)。
當(dāng)然,有些團(tuán)隊(duì)甚至有專門的數(shù)據(jù)庫(kù)開(kāi)發(fā)人員或數(shù)據(jù)庫(kù)管理員(DBA),但是這并不能真正允許你不懂至少是基本的數(shù)據(jù)庫(kù)知識(shí)。
最起碼,你應(yīng)該知道:
數(shù)據(jù)庫(kù)如何工作
如何執(zhí)行基本的查詢來(lái)獲取數(shù)據(jù)
如何插入、更新和刪除數(shù)據(jù)
如何連接數(shù)據(jù)集
此外,你可能會(huì)想知道如何以編程方式從你的代碼與你所選擇的平臺(tái)和/或框架檢索和存儲(chǔ)數(shù)據(jù)。
大多數(shù)開(kāi)發(fā)者被期待能夠編寫(xiě)與數(shù)據(jù)庫(kù)進(jìn)行交互代碼。
源代碼控制
源代碼控制是任何軟件開(kāi)發(fā)項(xiàng)目的組成部分。
在我們使用源代碼控制之前,我們必須在網(wǎng)絡(luò)上共享項(xiàng)目的所有文件,或者通過(guò)U盤來(lái)回查看存儲(chǔ)在上面的不同軟件版本。
雖然我很不想承認(rèn),但我的確不止一次地玩過(guò)這個(gè)把戲。
但是,我還年輕。我蠢。你卻沒(méi)必要像我這樣。
當(dāng)前,幾乎所有專業(yè)的開(kāi)發(fā)者人員都被期待懂得如何使用源代碼控制來(lái)反復(fù)檢查代碼,并希望懂得合并來(lái)自多個(gè)源的變化。
最基本層面的源代碼控制可以讓你保持在一個(gè)軟件項(xiàng)目中對(duì)不同的文件所做更改的歷史記錄。
它還允許多個(gè)開(kāi)發(fā)人員在同一時(shí)間工作于相同的代碼,然后合并這些更改。
具體就不細(xì)說(shuō)了,但你應(yīng)該知道如何熟練地使用至少一個(gè)源代碼控制系統(tǒng),并且你應(yīng)該熟悉大多數(shù)基本的源控制概念。
在當(dāng)今軟件開(kāi)發(fā)領(lǐng)域,幾乎所有專業(yè)的軟件開(kāi)發(fā)團(tuán)隊(duì)都會(huì)使用某種源代碼控制。
構(gòu)建和部署
現(xiàn)在,大多數(shù)軟件開(kāi)發(fā)項(xiàng)目都有著某種自動(dòng)化的構(gòu)建和部署系統(tǒng)。
有幾種不同的軟件應(yīng)用程序,可以幫助軟對(duì)自動(dòng)化這兩個(gè)任務(wù),曾經(jīng)是手動(dòng),當(dāng)然對(duì)于某些團(tuán)隊(duì)而言,現(xiàn)在仍然如此。
你問(wèn)什么是構(gòu)建和部署?
好問(wèn)題。
你知道如何寫(xiě)代碼,并檢入到源控制系統(tǒng)嗎?
擁有一些方法來(lái)確保代碼可在你檢入后真正能工作很不錯(cuò)。
這就是構(gòu)建系統(tǒng)的用武之地。
最起碼,構(gòu)建系統(tǒng)將編譯所有代碼,并確保沒(méi)有編譯錯(cuò)誤。
一個(gè)復(fù)雜的構(gòu)建系統(tǒng)可以運(yùn)行單元測(cè)試或用戶測(cè)試,運(yùn)行代碼質(zhì)量檢查,并提供關(guān)于代碼庫(kù)當(dāng)前狀態(tài)的一些報(bào)告。
部署系統(tǒng)將負(fù)責(zé)部署代碼要么到生產(chǎn)機(jī)器要么可能到某種測(cè)試環(huán)境。
你不必成為這些技術(shù)的絕對(duì)專家,但是了解至少這些系統(tǒng)如何工作的基礎(chǔ)知識(shí),以及構(gòu)建和部署代碼的過(guò)程,是非常重要的。
通常情況下,創(chuàng)建和維護(hù)構(gòu)建和部署系統(tǒng)的實(shí)際職責(zé)屬于所謂的DevOps(developer operations的簡(jiǎn)寫(xiě))——這個(gè)快速增長(zhǎng)的領(lǐng)域。
但是,這并不妨礙你至少了解關(guān)于這個(gè)過(guò)程如何工作的基礎(chǔ)知識(shí)。
測(cè)試
曾幾何時(shí)開(kāi)發(fā)者并沒(méi)有必要知道太多關(guān)于測(cè)試的內(nèi)容。
我們習(xí)慣于寫(xiě)一串代碼,然后扔給測(cè)試人員,讓他們?nèi)フ掖a中的各種bug,然后我們?cè)賮?lái)修復(fù)bug。
切不可再如此。
隨著越來(lái)越多的軟件項(xiàng)目開(kāi)始采用所謂的敏捷過(guò)程,(后面再方法這一點(diǎn)中我們?cè)偌?xì)談),軟件開(kāi)發(fā)人員和測(cè)試人員不得不更密切地一起合作。
質(zhì)量已真正成為了整個(gè)團(tuán)隊(duì)的責(zé)任——我倒是更想說(shuō),它一直都是。
隨之而來(lái)的是,你需要了解一些關(guān)于測(cè)試的東西。
你至少應(yīng)該熟悉如下基本術(shù)語(yǔ):
白盒測(cè)試
黑盒測(cè)試
單元測(cè)試(不是真的測(cè)試)
邊界條件測(cè)試
自動(dòng)化驗(yàn)收測(cè)試
一個(gè)優(yōu)秀的開(kāi)發(fā)人員——會(huì)在將代碼交給別人之前測(cè)試自己的代碼。
如果你真的想被認(rèn)為是專業(yè)的,并非浪者虛名,那么這一條沒(méi)有商量余地。
調(diào)試
很多新手軟件開(kāi)發(fā)人員在調(diào)試時(shí)都感覺(jué)自己像是在用雞蛋碰石頭。
每個(gè)人都希望寫(xiě)代碼,沒(méi)錯(cuò)吧?
但好像沒(méi)有人愿意調(diào)試自己的代碼?
這就是真相。
大約90%的時(shí)間軟件開(kāi)發(fā)人員是用來(lái)搞清楚到底為什么代碼不能正常工作。
我知道你只是想能夠整天寫(xiě)新的代碼,但是此路不通。
如果你采用如測(cè)試驅(qū)動(dòng)開(kāi)發(fā)這樣的方法,那么你可能會(huì)少花很多時(shí)間在調(diào)試上,但無(wú)論如何,不管你做什么,不管你如何努力,你都不得不學(xué)習(xí)如何調(diào)試代碼或其他人的代碼。
因此,與其采取一種隨意的方式來(lái)做一些你不得不做的事情,還不如咬緊牙關(guān)竭盡全力學(xué)會(huì)如何有效地做好這件事情。
方法
有沒(méi)有被我列出來(lái)的需要知道的事情清單嚇倒?
好吧,還有一個(gè)——但是我保證這是最后一個(gè)。
雖然一些軟件開(kāi)發(fā)團(tuán)隊(duì)才剛開(kāi)始寫(xiě)代碼,不擇手段只要完成任務(wù)即可,但是大多數(shù)團(tuán)隊(duì)還是至少遵循某種方法的。
出于這個(gè)原因,熟悉一些最常見(jiàn)的軟件開(kāi)發(fā)方法背后的基本理念至關(guān)重要。
今天,我要說(shuō)的是瀑布式開(kāi)發(fā)和敏捷開(kāi)發(fā)。
大多數(shù)團(tuán)隊(duì)會(huì)聲稱他們正在做敏捷。敏捷本身是一個(gè)非常松散的概念,但也有一些做法和——原諒我的措辭——固定程序是你應(yīng)該知道的,如果你不想只是紙上談兵,想要打造一支敏捷團(tuán)隊(duì)的話。
最后
我知道這些內(nèi)容通通要掌握的話,有點(diǎn)多,而且我僅僅觸及了大多數(shù)主題表面的東西。
現(xiàn)在,你可能會(huì)覺(jué)得有點(diǎn)不知所措,面對(duì)這些所謂的技術(shù)技能一片茫然。
程序員這條路,就是無(wú)止境的學(xué)習(xí),不斷提高!
自學(xué)軟件開(kāi)發(fā),需要學(xué)習(xí)什么課程?
對(duì)于初學(xué)者,想做簡(jiǎn)單的編程的話,建議從C語(yǔ)言開(kāi)始入門。C語(yǔ)言是最主流的基礎(chǔ)語(yǔ)言?,F(xiàn)在軟件開(kāi)發(fā)上所用的的主流的高級(jí)編程語(yǔ)言大多數(shù)都是以C語(yǔ)言為基礎(chǔ)演化而來(lái)的,掌握好C語(yǔ)言有助于學(xué)習(xí)其他的高級(jí)編程語(yǔ)言。在學(xué)習(xí)過(guò)程中推薦參考譚浩強(qiáng)的C語(yǔ)言教程,非常適合入門級(jí)別的教材,在學(xué)習(xí)中還要注重實(shí)際操作,技術(shù)的提高來(lái)與源于代碼量的積累。先從基礎(chǔ)學(xué)起:
1.學(xué)習(xí)計(jì)算機(jī)的使用;
2.常用軟件的使用;
3.以學(xué)習(xí)C程序來(lái)打基礎(chǔ).之后,根據(jù)愛(ài)好來(lái)精通一門語(yǔ)言,了解常用的OS原理及系統(tǒng)結(jié)構(gòu)等等.主要是要學(xué)C語(yǔ)言和C++的基礎(chǔ)在向后面發(fā)展。
如何自學(xué)軟件開(kāi)發(fā)
自學(xué)軟件開(kāi)發(fā)步驟是:
首先,了解軟件開(kāi)發(fā)的基本原理,如程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫(kù)、操作系統(tǒng)、網(wǎng)絡(luò)等;
其次,根據(jù)自己的興趣,選擇一門編程語(yǔ)言,如C++、Java、Python等,開(kāi)始學(xué)習(xí);
然后,學(xué)習(xí)相關(guān)的框架,如Spring、Struts等;
最后,通過(guò)實(shí)踐,結(jié)合所學(xué)知識(shí),開(kāi)發(fā)自己的軟件。
另外,自學(xué)軟件開(kāi)發(fā)還可以多看一些開(kāi)發(fā)技術(shù)書(shū)籍,多參加一些開(kāi)發(fā)社區(qū),學(xué)習(xí)大牛們的經(jīng)驗(yàn)等。
軟件開(kāi)發(fā)如何開(kāi)始學(xué)習(xí)呢?
1、首先,如果可以的話不建議自己一個(gè)人學(xué)習(xí)的方式,有錢還是要去報(bào)一個(gè)培訓(xùn)班。有老師指導(dǎo)可以快很多。
2、如果經(jīng)濟(jì)條件不夠,可以從網(wǎng)上找一套視頻資料?,F(xiàn)在網(wǎng)絡(luò)上資源共享做的不錯(cuò),可以從自學(xué)網(wǎng)找。
3、身邊看一下是否有做開(kāi)發(fā)的同事或者朋友,請(qǐng)他們給你指點(diǎn)。讓他們告訴你重點(diǎn)學(xué)習(xí)哪些知識(shí),這樣可以提升效率。
4、如果自己喜歡讀書(shū),可以不看視頻,采用讀書(shū)的方式自學(xué),只是這樣的話效率可能會(huì)很慢。但學(xué)出來(lái)效果會(huì)很好。
5、在自學(xué)的過(guò)程中要多動(dòng)手,自己去跟隨案例敲代碼,只有多動(dòng)手才會(huì)進(jìn)步的快。
6、給自己指定一套學(xué)習(xí)時(shí)間表,每天按照規(guī)定的時(shí)間養(yǎng)成自己學(xué)習(xí)的好習(xí)慣。
7、培養(yǎng)自己對(duì)軟件開(kāi)發(fā)的興趣,興趣是最好的老師。興趣有了,一切的學(xué)習(xí)都將變得主動(dòng),會(huì)起到事半功倍的作用
如何自學(xué)軟件編程
當(dāng)你已經(jīng)過(guò)了入門期之后,看書(shū)、看視頻、看博客就可以隨心所欲。
1、入門期守一個(gè)“熬”字決
自學(xué)編程難免遇到這種現(xiàn)象:學(xué)了一兩個(gè)月,發(fā)現(xiàn)自己會(huì)的不多。編程在一開(kāi)始不會(huì)有那么大的反饋,這種現(xiàn)象非常正常!關(guān)鍵是你要堅(jiān)持個(gè)三個(gè)月到半年的時(shí)間,熬過(guò)這個(gè)艱難的入門期。
2、初學(xué)者盡量不要鉆牛角尖
入門期遇到難題,耗了半天時(shí)間還是沒(méi)弄懂,可以暫時(shí)跳過(guò),知識(shí)積累到一定程度,回頭再進(jìn)行解決你會(huì)發(fā)現(xiàn)簡(jiǎn)單多了。
3、站在巨人的肩膀上
你遇到的那點(diǎn)小問(wèn)題,已經(jīng)有無(wú)數(shù)前輩也曾遇到過(guò),他們總結(jié)了并分享在互聯(lián)網(wǎng)上了,前人的經(jīng)驗(yàn)是你的寶貴資源,要善于利用StackOverFlow,Quora,谷歌等。
4、尋一個(gè)編程目的
有些程序員學(xué)習(xí)編程一上來(lái)就想著月薪1W+以上,這樣的學(xué)習(xí)過(guò)程會(huì)非常痛苦,很容易放棄。最好是奔著一個(gè)小項(xiàng)目而學(xué)習(xí)編程,當(dāng)你把作品做出來(lái)了,就有成就感,同時(shí)基本上具備找工作的能力,直接找個(gè)初級(jí)的開(kāi)發(fā)崗位,再進(jìn)階,你的自學(xué)之路功與名都有了。
5、反復(fù)練習(xí)
編程是一門手藝,需要反復(fù)練習(xí),脫離書(shū)本和視頻看是否能獨(dú)立實(shí)現(xiàn)?學(xué)到最后的境界無(wú)非就是:我亦無(wú)他,惟手熟爾。
軟件開(kāi)發(fā)自學(xué)步驟
軟件開(kāi)發(fā)自學(xué)步驟包括:基礎(chǔ)學(xué)習(xí)、編程學(xué)習(xí)、理論實(shí)踐。
1、基礎(chǔ)學(xué)習(xí)
計(jì)算機(jī)學(xué)習(xí)過(guò)程往往是由硬件開(kāi)始,走向軟件,但最終又會(huì)走向硬件。學(xué)軟件開(kāi)發(fā)往往要與數(shù)學(xué),英語(yǔ)打交道,因?yàn)槟壳暗挠?jì)算機(jī)程序設(shè)計(jì)語(yǔ)言主要是外國(guó)開(kāi)發(fā)的,編代碼的主要語(yǔ)句往往是英文,中文通常是做解釋和說(shuō)明用。有一定的英文基礎(chǔ),在計(jì)算機(jī)學(xué)習(xí)上可以事半功倍。
2、編程學(xué)習(xí)
如果把計(jì)算機(jī)看成一個(gè)人,編程語(yǔ)言就是你和計(jì)算機(jī)對(duì)話的語(yǔ)言,你需要用計(jì)算機(jī)能聽(tīng)懂的語(yǔ)言才能和計(jì)算機(jī)對(duì)話,就像你需要用當(dāng)?shù)氐恼Z(yǔ)言才能和老外溝通一個(gè)道理。不過(guò)由于發(fā)明一種新的編程語(yǔ)言的成本相當(dāng)?shù)?,而成就感相?dāng)高,因此目前已經(jīng)出現(xiàn)了太多的編程語(yǔ)言。
即有針對(duì)娃娃的圖形化編程語(yǔ)言,也有中文的編程語(yǔ)言,更有針對(duì)不同計(jì)算平臺(tái)的編程語(yǔ)言,試圖學(xué)習(xí)所有的編程語(yǔ)言是不明智的,也是毫無(wú)必要的,因?yàn)榫幊套钪匾氖撬季S,語(yǔ)言只是向計(jì)算機(jī)表達(dá)你的思維的一個(gè)手段而言。
3、理論實(shí)踐
學(xué)習(xí)編寫(xiě)程序,不僅要領(lǐng)悟老師的各種知識(shí)點(diǎn),多看教材,還要結(jié)合課程重視上機(jī)的練習(xí)。上機(jī)前要計(jì)劃一下上機(jī)做些什么,要有一些新思路來(lái)設(shè)計(jì)和調(diào)試程序。
只有在上機(jī)過(guò)程中不斷發(fā)現(xiàn)問(wèn)題,解決問(wèn)題,才能逐步邁向程序員之路。因此,實(shí)操要與理論同步,緊密結(jié)合,方可為編程打下扎實(shí)的基礎(chǔ)。
關(guān)于自學(xué)軟件開(kāi)發(fā)怎么入門和自己怎么學(xué)軟件開(kāi)發(fā)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。