如何自學編程?

      這篇文章我將以我自學編程的經歷、本身遇到的坑、如何解決問題等方面,給初學者朋友們分享本身的經驗,但願對正在自學編程的你有幫助。若是哪裏說的不對,也望獲得您的批評指正!前端

1.爲何要學習編程?

(1)由於愛好:java

      若是你對信息技術充滿激情與愛好,平常喜歡研究電腦、智能手機等,想要掌握計算機更多的知識,想讓本身學會開發出本身的桌面軟件、網站、APP。 (2)想要得到高薪資的工做:程序員

      IT行業的工資相對於傳統行業來講工資是比較高的,IT行業適用領域很廣闊,餐飲、交通、物流、醫療、金融、教育等各大行業都離不開IT行業的支持,若是掌握這個行業的一門技術,那吃飯是不成問題的,能不能吃好飯就看本身了。web

      固然,你最好本身喜歡這個行業,喜歡信息技術,而後堅持往這個方向發展。若是僅僅是想要賺錢,也許編程不適合你。若是能把本身的對信息技術的熱愛投身到本身的工做職業中,這是最好的。接下來的文章中,我假設以求職爲目標,來給你們分享自學編程的經驗。編程

2.怎麼通俗易懂地理解軟件開發

(1)什麼是編程?

      簡單的理解就是經過某種編程語言,編寫特定代碼指令、執行代碼,讓計算機幫助咱們作一些計算、執行一些任務,等等。 (2)編程的最終目的是什麼?後端

      更通俗的說編寫代碼的大多數終目的是開發一套完整的軟件系統,咱們知道軟件能夠幫咱們作不少事,好比說咱們使用QQ軟件和朋友聊天、使用百度網站搜索資料、在論壇網站上問問題、使用WPS軟件編寫文檔、使用PS軟件處理圖片,等等。這些都是軟件,經過開發者編寫代碼、打包、上線等多個步驟,最後造成一套完整的程序,供用戶使用。 (3)B/S架構和C/S架構瀏覽器

      如今市面上的軟件若是按照某種特定分類方法可分爲兩種: B(Browser)/S(Server)架構(瀏覽器/服務器)和C(Client)/S(Server)架構(客戶端/服務器)。固然,還有單機軟件,如今還有部分軟件是不須要聯網就能夠爲人們提供服務的,好比說不少人手機上計算器APP。簡單的說,使用瀏覽器打開的網站是B/S架構的軟件,而直接打開客戶端使用的是C/S架構的軟件。 (4)那什麼編程語言?服務器

      編程語言是用來定義計算機程序的形式語言。人與人交流使用的是漢語、英語、阿拉伯語等等,而人與計算機交流使用的就是計算機編程語言,經過編寫特定的代碼片斷讓計算機理解咱們的意圖。因而後來有了不少種計算機編程語言,如C++、C#、Java、JavaScript、PHP、Kotlin,彙編語言等等。微信

3.認識程序員(軟件開發者)這個工做職務

(1)軟件開發者應至少應該具有什麼能力?

      就如今的社會需求來講,做爲軟件開發者,咱們應該至少懂得一門編程語言,而且能利用軟件開發使用這種編程語言在實際工做中完成相應的工做,至少這樣纔是一個合格軟件開發者。 如今不少軟件開發項目中都是由多我的來完成的,那麼一定由一個開發者負責開發環節中特定的任務,如java後端工程師編寫與數據交互的代碼邏輯,Android工程師負責編寫Android APP,IOS工程師負責編寫iPhone APP,等等。 (2)軟件開發者應該長期具有什麼能力?網絡

      首先:不斷學習。在軟件開發這個領域中,開發技術不斷的更新與變化,若是想要具有競爭能力,那就必須不斷的學習,而不是長期以原有的技術混飯吃,若是真是這樣,最終是要被淘汰的。這個行業不適合想要一勞永逸的人。在這個行業必須不斷學習、創新,你必須具有不怕苦不怕累的創業精神。 其次:作一個有計劃的人:你應該時時有危機感,那麼就給本身制定計劃,無論是短時間計劃仍是長期計劃,朝着那個目標努力,你會愈來愈優秀。你是一個初級程序員,你應該朝着高級程序員的目標努力;你一個高級程序員,你應該朝着架構師的目標努力;而當你成爲了架構師,你應該朝着管理者的目標努力。只有作好計劃,並隨着時間的改變而改變,朝着目標努力,你才能不斷實現本身的價值。

4.沒有編程基礎,我該怎麼入門?

      我相信這是大多初學者困惑的問題,也是阻礙不少初學者學習進度的問題。你不知道從哪裏開始學習,或者不知道從何開始,接下來我以本身的學習經歷,給你們提供一些建議,但願對你有幫助。

(1)你應該具有什麼基礎:

      自學你至少得有一臺本身電腦,這臺電腦不須要配置有多高,除非你學習的是開發大型3D遊戲。傳統的開發學習,普通筆記本、臺式機均可以的,可是必須得有網絡,由於你須要從網絡上獲取這種學習資料,何況咱們是在學習信息技術,沒有網絡怎麼可能,想想多可怕,最重要的是,你要喜歡它再去學它,若是不喜歡它,學了又有什麼意義。 (2)數學、英語很差,能學好編程嗎?

      就這麼說吧,若是你感受本身數學很差,可是你喜歡信息技術方面,你就好好學吧,你是能學好編程的。個人數學和英語真的是超級很差,緣由是我不喜歡它們。編程的邏輯性挺強的,可是不表明你的數學很差你的編程就學的差,它們本就不是一個回事,雖然編程不少時候用於科學計算方面,可是若是咱們學習編程是爲了開發應用軟件,爲的是找工做,編程本就沒有那麼別人說的那麼難。

      英語很差呢?那也能夠學好的。計算機發展技術源自西方,西方人在這方面作的比咱們多,固然這些計算機語言幾乎全是英語字母組合的。我想,若是咱們能趕在西方以前發展信息技術,如今外國人估計就使用中文來編程了。可是我英語很差,句子都讀不通順,怎麼辦?不要緊的,讀代碼與讀英語文章徹底不同,雖然大多數代碼使用的是英文字母來編寫,而理解代碼更多的是理解它的邏輯。可是,若是你的英語很差,你最好提升一下的英語水平,由於不少開發文檔、教程,是使用英文來寫的。不是說你英語很差你就不能寫代碼,可是你不能連「hello」、「how are you」這些簡單的英文單詞都不認識,也就是說,你具備初中畢業生的英語水平就能夠學習編程了。 (3)選擇本身喜歡的方面入門:

      軟件開發過程當中根據不一樣的須要,包含了多個工做任務和多種工做流程,所以也產生了不一樣的工做崗位,前端工程師:Android工程師、IOS工程師、Web前端工程師,後端工程師:Java後端工程師、Python後端工程師、PHP工程師,Linux運維工程師,如今還流行着大數據工程師、AI(人工智能)工程師,等等。固然,在人員缺乏的狀況下有的人卻擔任了好幾種身份,可是在大公司裏面,分工通常是明確的。

      那怎麼開始入門學習呢?首先,選擇本身喜歡的語言,選擇本身方向,朝着那麼目標學習。但是我都沒了解過,我怎麼知道什麼編程語言適合我?這就須要你事先了解一下了,既然打算自學編程,那你應該查閱一些資料瞭解一下,什麼語言適合來作什麼,本身又應該學習什麼語言。固然,咱們的長遠的目標是精通一個技術方向,可是其餘方向最好是什麼都要會。

      因此,我建議你選擇本身喜歡的方向,容易的入門的方向進行入門學習。但是有的人說如今很火的不是大數據、人工智能嗎?月薪兩三萬、四五萬的。可是你要知道,對於一個任何基礎都沒有的普通初學者,須要花多少功夫才能達到大數據工程師、AI工程師的水平,因此學習基礎是十分重要的,至少得保證你有同樣技能了,能保證本身能勝任某項工做以後,再朝着更高得層次努力,也許那樣會更好。

      我當年選擇Android做爲入門學習的方向,緣由是我挺喜歡Android。我開學習Android的時候是在2015年,那時候不少人說Android如今飽和了,學習Android會找不到工做。可是我並無放棄學習Android,我想,若是有時間去擔憂之後找不到工做,爲何不靜下心來好好學,只要學好了爲何還要怕找不到工做,爲何本身不能夠做爲那些學習Android中的佼佼者,你能夠比別人笨,可是你也能夠比別人努力,何況,又有多少人真正的認可本身比別人笨呢?如今再回想本身當年學習Android的時候,天天晚上堅持觀看視頻,記筆記,先學Java基礎,後是Android基礎,就這樣堅持好幾個月。挺辛苦,但是後來收穫的是開心的。

      固然,你有不少選擇。若是你喜歡APP開發,那麼就是Android和IOS了,而Android學習成本比IOS學習成本低,緣由就是若是你要作IOS開發你須要mac電腦,Android開發使用普通的Windows就能夠,進一步學習的話你能夠安裝一個Linux操做系統,再加上一個幾百元的Android手機就能夠學習了,等你掌握Android開發後再學習IOS也不遲。若是你喜歡後端開發,我建議你選擇Java、Python、PHP這些語言。假如你以前沒有接觸過編程,只要認真學,這些語言挺容易入門的,若是有一點C語言基礎那更好。而若是你喜歡Web 前端,那你就好好學習H5+CSS3+JavaScript,一個合格web前端工程師除了能把網站作出漂亮的特效,還要懂得後端的知識,這時能夠學一學Node.js。雖然開發技術分類不少,可是這些技術都是相通的,有了一門技術的基礎以後,再學習其它技術就垂手可得了。而在初學者階段,你須要選擇一門技術進行系統的學習,同時不要忘記多瞭解一些其餘的技術。

如下是編程語言在某個時間段的排行榜:

(4)怎麼獲取學習資源?

      你能夠買一本書。書有好有壞,有的書適合初學者,而有的書不適合初學者;有的書通俗易懂,也有一些書全是廢話,甚至錯誤一堆,這就須要你好好辨認了。有的書適合你,可是有的書雖好,卻不適合你,你應該到書店裏面,到圖書館裏面好好翻一翻,選擇合適本身的一本系統教學書籍。對於技術類型的書,儘可能選擇比較新的,對於同一種技術,儘可能避免好幾年的書籍,由於技術書籍不像文學書籍那樣,技術天天都在改變。

      你還能夠看一套系統的視頻教程。互聯網上免費的教程資源不少,若是好好利用,相信你必定能學好的。有的視頻里老師講課方式不適合你,而有的老師講課方式很適合你,我相信後者對你的進步更有幫助。如今教學網站也不少,也提供了大量的免費資源,如極客學院、慕課網,百度傳課、騰訊課堂等等都有大量的免費資源,建議你花一些時間去嘗試聽一下多套視頻的第一節課,最後選擇最適合本身的一套。 (5)要回利用互聯網解決問題:

      你在學習編程過程當中一定遇到不少問題,甚至有時出現的bug讓本身感到崩潰、無助,這時不要慌,這是不少初學者都是一定經歷的過程,只要一個一個問題的解決了,積累經驗,之後你才能解決實際開發中遇到的問題。在你遇到錯誤時,把你出現的錯誤百度一下,一定別人也遇到過,並有一堆的解決辦法。你還能夠到各大論壇尋求幫助,如國內的CSDN論壇,若是你英語閱讀能力比較好,還能夠到stackoverflow.com網站上尋求全球開發者的幫助。 (6)多讀別人的代碼,借鑑別人的長處:

      閱讀別人的代碼是本身提升編碼能力的一個方法,你能夠看到本身與大神的距離,而後努力朝着目標努力,一個合格的開發者,不只能本身寫代碼,還要有閱讀別人代碼的能力。 (7)多練習,孰能生巧: 學習中編程的過程當中,看懂和會作徹底是兩回事,不要以爲本身看視頻看懂了,或者看書看懂了就歷來不去編碼練習了。每每不少人看懂了,可是本身卻敲出一堆的錯誤,這階段你須要不斷的練習。網上說的「7天掌握PHP」、「5節課掌握java」,等等這些,以一個普通初學者的角度來講絕對是不可能的,做爲初學者,應該腳踏實地,天天堅持,積累上幾萬行代碼,甚至幾十萬行代碼,也許那樣纔是真正的入門。這世上沒有坐享其成的,全部的收穫,一定經歷付出,知識也同樣,加油!

5.總結:

      上一個世紀的前輩們在學習的時候,他們沒有網絡,沒有那麼多學習資料,而他們卻能給後人創造了不少有價值的東西,他們都那麼堅持,咱們就沒有理由不努力了。 無論怎麼說,學習編程不容易,必定要真正的喜歡它再去學,腳踏實地,堅持不懈,往既定的目標努力。入門學習的付出是辛苦的,甚至是乏味的,可是拼一拼,努力奮鬥,相比最後獲得的,是值得的。加油!

      我也會利用業餘時間分享一些開發技術視頻,歡迎訂閱咱們的嗶哩嗶哩視頻分享頻道極客開發者:space.bilibili.com/172353353/

也能夠訂閱咱們的微信公衆號(jkdev_cn),交流與提問、接收最新分享內容。

相關文章
相關標籤/搜索