學編程到底難不難?看完這一篇再無疑慮!

本人作爲一名軟件工程師和培訓師,曾經被很多人問到過“編程到底難不難學?”“我作爲一名非計算機專業的學生,能不能學會編程?”“我能不能通過自學編程找到一份程序員的工作?”這樣的問題。毫不誇張的說,這樣的問題在我的職業生涯當中被問過不下100次。我深深的感覺到,很多學員對這個問題確實是很關心的。在網上搜索,可以看到類似問題的答案五花八門,我覺得有必要針對這個問題寫一篇文章專門來闡述一下我的個人觀點。

我這篇文章重點闡述4個問題:

一、非計算機專業的學生能不能學會編程

二、學編程需要什麼基礎

三、報班學還是自學

四、學習要避免哪些錯誤想法

 

一、非計算機專業的學生能不能學會編程?

我的觀點非常明確:只要你想學,肯定能學會!我在培訓學員的過程中,遇到過很多非計算機專業的學生通過學習轉型爲軟件工程師拿到高薪的例子。可能有人會說,那都是別人成功的例子,放到我身上未必可以。而我認爲:只要你的智商能夠達到正常人水平,你肯定也能學會!爲了說服你,那麼我們來做個小實驗。

我們找一段英文文章,不用太長,300個單詞左右就可以,然後隨意用一款翻譯軟件,或者是從網上找一個在線翻譯的服務,把英文文章粘貼進去進行翻譯操作。你會發現,通過計算機翻譯出來的文章可以說是“狗屁不通”!這說明什麼?其實說明至少目前來看,計算機對我們人類的語言理解程度極低!那麼我們再來思考一個問題:計算機能不能理解編程語言呢?答案是肯定的:能!那麼,計算機能夠準確的理解編程語言,但不能理解我們人類的語言,說明了什麼?說明我們人類的語言遠比編程語言要難!而我們可以反問自己:我們既然能夠掌握很難的人類語言,爲什麼不能掌握相對簡單的編程語言呢?所以我的結論非常肯定:只要智商達到正常人的水平,誰都可以學會編程!區別只是有的人學的快一點,有的人學的慢一點,但經過一定時間的訓練,最終都能掌握這項技能。

有人表示不服,會說:我曾經學習過編程,我認爲編程語言比人類語言更難!你憑一個小小的實驗就能證明人類語言比編程語言更難,豈不是很荒唐?我們可以來對比一下兩種語言的難易程度。人類語言所表達的不僅僅是“我們想幹什麼”,還包括我們的思想和感情,比如喜怒哀樂這些情緒,並且,同樣的一句話,放在不同的背景下,所表達的意思也不盡相同。比如說,你考試得了滿分,有人對你說:“你太棒啦!”這顯然是在誇獎你。但是,如果你把一件非常簡單的事情辦砸了,有人對你說:“你太棒啦!”這顯然是在諷刺挖苦你。同樣的一句話放在不同的環境中,其意義也大不相同。

我們再來對比一下編程語言:編程語言根本沒有感情因素在裏面,也不涉及到什麼“一語雙關”這樣的語言技巧。編程語言的功能只是用來描述“我們想讓計算機幹什麼”。說的更直白一點,編程語言其實就是各種指令的集合。我們只需要把這些指令正確的組合在一起,計算機就會乖乖的按照我們的指令給我們辦事,你也完全不必要擔心計算機會把我們的意思理解錯了。當然,想要準確的掌握編程語言,是需要經過一定時間的訓練的。

從專業角度來講,目前非常火的“人工智能”技術領域,有一個非常熱門的探索方向就是計算機對人類語言的識別,稱之爲“自然語言處理”,簡稱NLP。這是在最近十多年纔開始被各國專家大力研究的一個高難度課題,並且研究纔剛剛取得初步成果。而讓計算機識別編程語言,早在四五十年前就已經實現了,並且已經做的非常完美,這足可以證明人類語言遠遠比編程語言更難。

說到這裏,可能有人會問:“爲什麼我總覺得學編程比學人類語言更難?”問題出在哪裏呢?是你的心態發生了變化!想想你當初學說話是什麼樣的心態?用一句俗語概括就是“無知者無畏!”你當初學說話的時候,是在1-2歲左右,你根本不擔心能不能學會,你只管大膽的表達,你不怕別人笑話你吐字不清,你不怕別人笑話你詞不達意...總之,你當時不懂得懼怕,你只是努力的表達你心裏想說的話。而現在呢?你害怕學不會,害怕投入了大量時間和精力卻無所收穫。你顧慮太多,瞻前顧後,失去了那種“無所畏懼”的精神,從而導致你遇到點困難就退縮了!因此我建議你,想學就大膽的嘗試,遇到困難勇往直前,一遍學不會再來一遍!經過一段時間的努力,你肯定能掌握一門編程語言。

 

學編程需要什麼基礎

弄清楚爲“什麼非計算機專業的學生也能夠學會編程”這個問題之後,很多人都要問:如果我現在開始學習編程,需要哪些基礎知識?網上有很多人在回答這個問題的時候,提到要學習計算機基本原理、計算機網絡基礎知識、二進制計數法等相關知識。我個人認爲,只要有高中學歷作爲基礎,就可以開始學習編程,至於網上提到的那些基礎知識,可以在學習過程中慢慢補足。

爲什麼要強調高中學歷作爲基礎呢?我個人認爲:學習編程需要一定的邏輯思維能力,還需要一定的數學和英語的底子,而高中學歷者所具備的思維能力和掌握的知識,就已經具備了學習編程的基本條件。只要具備了這個基本條件,就完全可以開始學習編程了。至於網上有人提到的“計算機基本原理、計算機網絡基礎知識、二進制計數法”這些基礎知識,其實也可以看作編程技能的一部分,等需要用到這些知識的時候,有針對性的補習一下這部分內容也爲時不晚。

 

三、報班學還是自學

關於怎樣學習編程,其實無外乎有兩種選擇:1、報培訓班2、自學。我個人建議在有時間又有錢的基礎上儘量選擇報培訓班學習。爲了避免做廣告的嫌疑,我在這裏不提任何一個培訓班的名稱,只是簡單的說說爲什麼報培訓學習效果更好。

首先,培訓班一般都有成熟、明確學習路線,這樣你不用在學哪些課程上花太多的時間進行篩選。其次,培訓班有專門的任課老師教學,有問題能及時問老師,這樣也能減少你搜索問題答案的時間。第三,捨得花錢報培訓班的學生往往都是真心實意的想學編程,所以同學們相聚在一個班級裏通常都有一種比較好的學習氣氛,大家在一起有問題也能互相討論,你會感覺到“不是一個人在戰鬥”,這樣的學習氛圍會讓你在遇到困難的情況下堅持下去,同時,同一羣人一起學習也能擴大你視野,你通過與同學的交流能學習到一些你所不知道的技能和知識點。第四,在培訓班多認識一些人,積累一些人脈關係也有利於將來在職場互相幫助,萬一當年你所在培訓班的某個同入職了一家不錯的企業,可能還會把你也推薦給這家公司,要知道:公司內部員工的推薦比自己從網上投簡歷能獲得更大的面試機會。

當然了,培訓班也不是白上的,畢竟需要金錢和大塊的學習時間。如果實在沒有條件報班學習,也可以選擇自學。那麼應該如何自學呢?我的建議是:前期以看視頻爲主看書爲輔,後期正相反,以看書爲主看視頻爲輔。爲什麼是這樣的思路呢?前期建議大家以看視頻爲主,是因爲一般視頻課程講解的比較淺顯易懂,我們很快就能入門和上手,容易產生成就感,從而能讓我們更好的堅持下來。反過來,而一開始就買一本厚厚的專業書開始啃,一則是容易讓我們感覺到學習壓力很大,二則是有些專業性的術語會讓初學者難以理解,導致學一段時間就想放棄。

當學到自我感覺已經入門的水平,可以選擇以看書爲主,以看視頻作爲輔助。這是因爲已經入門的情況下,我們應該提高學習效率,而書本上對理論知識的講述往往更加精煉,不會參雜題外話,單純的講述知識點,所以看書學習效率更高。

另外,如果學到了一定程度,就要動手做一個階段性項目。比如說:學了Java的JDBC以後,就可以做小的信息管理系統,實現對錶格數據的增刪改查。這種練手用的階段性小項目,還是建議大家跟着視頻去做,成功率更高。無論是報班學習還是自學,堅持是最主要的。很多人往往是開頭幾天興致高漲,甚至晚上也加班加點,但堅持不了幾天,就鬆懈了,這樣肯定不能學有所成。

另外,對於初學者而言,那些“上課認真聽講、做好筆記,下課勤練習,及時複習”之類的話就不多說了,那是你學習態度的體現。在這裏分享一條可操作性極強的學習技巧,那就是“加註釋”!具體做法是:在照着例子敲完一段程序,並且能正確運行的情況下,給代碼添加註釋。註釋加的越詳細越好,這麼做看起來似乎是有點多此一舉,但其實這種做法會在不知不覺中提高你閱讀程序的能力。因爲你所添加的註釋代表着你對程序的理解,所以加註釋會迫使你更認真的閱讀和思考程序,堅持這麼做一段時間之後,你會發現,你閱讀程序的能力會有顯著提高!

 

四、學習要避免哪些錯誤想法

在學習編程的過程中,任何人都難免走入一些誤區。下面就來說說學習過程中的一些典型誤區,以及如何避免走入到這些誤區當中。

首先,我認爲最典型的一個錯誤想法就是“項目結束就算完成任務”誤區。我們在學習過程中,爲了增強實戰能力,肯定會做一些軟件項目。當項目完成之後,誰都會有一些成就感,這是很正常的。但是,很多人錯誤的以爲:項目能夠成功運行了,自己的任務就算完成了。其實不然,多數人在做項目的過程中,爲了實現某個功能,上網查詢了大量資料,然後按照網上所說的方法一步步實現了這個功能。但是,爲什麼要按這樣的步驟去實現?其中的原理是什麼?有沒有更優化的解決方案?對於這些更深層次的問題沒有自己的思考,只是知道項目可以運行了。因此,如果真的想實實在在的提高自己的水平,就應該在完成項目之後,對項目中所涉及到的知識點進行一番仔細的研究和梳理,儘量做到對整個項目的每個細節都瞭如指掌。殊不知,很多成功的企業,在做完一個項目之後(不僅僅限於軟件項目)都會專門對這個項目進行“覆盤”,回顧項目中的每一個環節,總結成敗得失。那麼作爲一個學習編程的學員,更應該如此。

第二個典型錯誤想法就是“不注重底層知識”。很多人在學習過程中,都追求使用最先進的工具,包括一些第三方框架,而忽略了對底層知識的研究。追求好的工具和框架這本身並沒有錯,畢竟這些工具和框架能夠大幅度提高開發效率。但是,永遠都不能忽略對底層知識、基本算法的研究。如果只是單純的追求使用好的工具和框架,不注重底層知識和算法,無異於一個足球運動員只追求好的運動裝備而忽略了對球技的練習。久而久之,你會感覺到很疲憊也很茫然,因爲新的工具和框架層出不窮,其更新速度也堪稱日新月異。但如果你的基本功非常紮實,對軟件底層原理理解非常透徹,你對那些層出不窮的框架和工具就不會有那種“學不完”的壓力,甚至有一種拿來就能用的感覺。

第三個典型的錯誤想法就是“希望一勞永逸”。很多人把學習看作是一種壓力和負擔,這也不難理解,畢竟學習總比看電影、聽音樂、吃美食要累。如果你開始學習編程之前抱的想法就是“學習到一定程度,有能力拿到自己期望的薪水之後就再也不用學習了”,那我建議你乾脆不要學編程,因爲現在無論是哪個行業,技術、思維方式的更新都非常快。一旦停滯不前,肯定會被時代和行業所淘汰,軟件行業在這一點上體現的尤爲突出。千萬不要覺得從培訓班畢業,找到了一份不錯的工作就是你奮鬥的終點,其實,這只是你一個新的開始!

 

以上僅是我個人的一點淺見,希望本文對想學習編程的同學有所幫助。

 

如想系統學習Java編程,可以點擊這裏觀看我在本站的視頻課程,有問題也可以加入我的QQ羣291839907一起討論!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章