新手如何自學(xué)編程?
總是會遇到同學(xué)問一個這樣的問題:如何自學(xué)編程?那么今天趁此機會,就給大家分享一下吧!

1. 自學(xué)編程需經(jīng)歷什么樣的過程呢?
大多數(shù)學(xué)習編程的新人,也包括曾經(jīng)的我,其實都不具備學(xué)習編程的天分,對我來說學(xué)習一門新的編程語言,是很艱難的,但是我敢說在 Java 和面向?qū)ο缶幊填I(lǐng)域,目前我的編程水準是一流的,至少我作為開發(fā)者所待過的公司里是這樣子。因此要對自己有信心!
你可能認為我是吹牛逼,但是沒關(guān)系,先聽我講,然后再看我講地對不對!
自學(xué)編程從入門到掌握的過程,我總結(jié)分為了四個階段:枯燥、混沌、開悟、解惑。

新人拿到的第一本編程入門書往往是從最基礎(chǔ)的類型、語法結(jié)構(gòu)、函數(shù)方法、類對象等等開始的,但是當你根本就不了解你所學(xué)的內(nèi)容到底是想干什么的時候,就如同沙漠里吃干餅,學(xué)習內(nèi)容又硬、又干、又無味,我估計一半以上的學(xué)習者就在這個階段從入門到放棄了!
這里沒有捷徑,厲害的程序員之所以學(xué)習一門新的編程語言很快,就是因為這個階段是相通的。而作為新人是不行的,這是不僅基礎(chǔ),也是最耗時間精力的階段,要苦熬,盡管你可以投機取巧,找一些速成班,但是請相信,走不遠。
當你對基礎(chǔ)掌握的七七八八,記住不是百分百,就需要開始系統(tǒng)的理解一個真實的開發(fā)工程,往往這個過程會發(fā)生在培訓(xùn)班的高級階段或者進入公司的頭半年,這個階段,難的不是語法問題,而是面對工程框架和大量的程序庫,都能干什么,你會一臉懵逼!這個階段要做強行軍,花上十分的努力去面對,這個過程就是在重塑你的系統(tǒng)化思維!
突然有一天 Leader 給你安排的任務(wù)運行起來,你也看明白道理了;或者 Leader 聽了你糊里糊涂的邏輯,輕輕的指點迷津;又或者你進入到了源代碼作者的思路當中,理解了他們的用意,這個時候你開悟了,如同在干渴的日子飲下沁人心脾的泉水,每天求知若饑,虛心若愚,這其實是程序人生第一次美妙的時光。
但事情還沒完,對于你只是領(lǐng)悟了編程系統(tǒng)化的思維,距離靈活運用和掌握還需要一段很長的時間,但是這個階段來了一個曾經(jīng)和你一樣的小白,記好,一定要多教教他。的確你也是個半瓶子,但那不重要,將你所知的內(nèi)容都分享給他,一起解惑他所遇到的問題,一定要以教促學(xué),因為這是學(xué)習編程最與眾不同的地方,慢慢很多人就會發(fā)現(xiàn)你很樂于助人,總會有人請教你困惑的問題,每一次問題的發(fā)現(xiàn)、解決,本質(zhì)上都是對解決問題者從多維角度的一次經(jīng)驗積累的正反饋,而愈發(fā)增益你其所不能。
如果看到這里,發(fā)現(xiàn)自己已經(jīng)走完了這些過程,那么恭喜你,在程序人生的技術(shù)發(fā)展上,你的前景無限光明。
2. 自學(xué)編程有哪些技巧?
不少同學(xué)在學(xué)習編程的過程都會訴苦,“編程好難學(xué)啊,自己沒有一點方向”?!熬W(wǎng)上一大堆資料視頻,人都看麻木啦!”自學(xué)編程不僅僅靠的是毅力,還有方法和技巧,記好:編程學(xué)習不是死啃書,要去做!
編程的技巧這次我總結(jié)了五點:別問去做、保持正確、剝洋蔥、多用日志,善用搜索。

很多同學(xué)從十幾年的應(yīng)試教育中走出來,特別容易陷入一種追求大而全的系統(tǒng)化思維體系后,然后才動手去做的慣性,這是編程入門的毒藥,此毒必除!
編程特別注重逆向思維方法,先照貓畫虎,不要先問為什么,例如:Java 程序必須使用 Jdbc 驅(qū)動包才能連接數(shù)據(jù)庫,你作為初學(xué)者對此刨根問底,解決問題嗎?要在邊做邊學(xué)的過程中,逐漸領(lǐng)悟系統(tǒng)的運行機制。
開發(fā)的第一原則是什么?讓代碼始終保持正確,這是永遠要銘記在心的準則,當代碼的復(fù)雜度讓你理解起來很迷茫的時候,你一定先要讓它們編譯不要報錯,讓編譯好的程序運行不要報錯。只有正確可運行的代碼,才能給與你解決問題的定力!任何錯誤都可能會干擾你對問題的正確判斷。
那么我們怎么才能做到始終保持代碼是正確呢?那就是學(xué)會剝洋蔥方法,例如:你從網(wǎng)上扒拉下來一大堆代碼,但是在你的 IDE 里面都是紅色,你都懵了,怎么辦?記好,精簡是保持正確的不二法則,不斷剔除錯誤代碼,直到,哪怕就剩下一段代碼,再一點點恢復(fù),就會非常容易發(fā)現(xiàn)哪里是錯誤的根源。
還有很多初學(xué)者,一上來就是 IDE,運行程序出錯就是調(diào)試工具排查錯誤,久而久之離不開調(diào)試工具了!真正復(fù)雜的生產(chǎn)環(huán)境,沒有 IDE 你怎么辦?你根本就駕馭不了,因此必須一開始就要習慣使用日志來調(diào)試,你能相信嗎,我編程二十年,調(diào)試工具至今都不熟。
最后要說的就是出現(xiàn)了自己無法解決的 bug,怎么辦?要善用搜索引擎,很多初學(xué)者遇到問題就慌,到處求人,而我這么多年的開發(fā)經(jīng)驗,大部分的 bug,Baidu 都能搜到,只有少量需要 Google 搜索,而真正需要 Google 和 Stackoverflow 解決的問題,大部分初學(xué)者還碰不到,這樣效率高還不求人!
那么如何善用搜索呢?就是抓住關(guān)鍵詞組合,別上去就是一個句子,搜索不是 Siri,這會給出歧義。異常中最能代表問題的關(guān)鍵字加上領(lǐng)域詞,例如你操作 MySQL,終端拋出了 ClassNotFoundException 異常,這兩個英文單詞的組合就是搜索的重點,搜索引擎一定會搜出來很多 Jdbc 驅(qū)動包缺失相關(guān)踩過坑的大佬文章。因此善用搜索是編程學(xué)習最好的老師。
3. 即將找工作,下一步怎么辦
我做過幾年某 985 名牌大學(xué)的研究生實踐導(dǎo)師,這些研究生一畢業(yè),不存在找不到工作,而且還一個比一個找的好。但是面對大多數(shù)的學(xué)校一般的本科生、專科生來講,找信息技術(shù)尤其是軟件開發(fā)工作實際上是人生一大難題。
核心難題是什么?這是每一位畢業(yè)的同學(xué)們不得不面對現(xiàn)實問題,記住,如果把大學(xué)比作處處行走都舒服的沙灘,那么社會就是鋪滿石子的山丘溝壑,核心難題是:你還一直光著腳。

這就是為什么很多學(xué)生不好找工作的原因,因為你要走的每一步都會讓你疼。直到你懂得了怎么穿上一雙靴子來保護自己。
什么是靴子?名牌傍身是、家庭出身也是、含著金鑰匙更是。但唯獨你不是。那么你的靴子是什么呢?對于大多數(shù)人來說——那就是扎扎實實的技術(shù)。
可問題來了,你可以去埋怨大學(xué)沒教好,同樣也可以懊惱自己的虛度時光??蛇@都是過去時,現(xiàn)在你該怎么辦呢?扎扎實實的技術(shù)從而何來。
自學(xué),就從現(xiàn)在開始自學(xué),做一個終身的學(xué)習者。
我一直認為,學(xué)習編程,學(xué)習操作系統(tǒng),具有開發(fā)能力,是大多數(shù)寒門最好的敲門磚。當你進了科技公司以后,你會發(fā)現(xiàn),其實大多數(shù)人只是掌握了一部分比較普通的技術(shù),實際上 40%的時間做技術(shù),60%的時間各種團隊事務(wù),甚至一部分人又從技術(shù)轉(zhuǎn)向了管理、銷售、產(chǎn)品等崗位,找到自己的真正所長。但是難就難在進門前的過程是極為困難的。
這一切都來自于你們現(xiàn)在這個時間,這并不是學(xué)習的結(jié)束,而是真正學(xué)習的開始,你現(xiàn)在最需要打下堅實的基礎(chǔ),給自己做一雙好靴子,在社會前行之路不那么艱難痛苦,這對你的未來發(fā)展很重要。
那么下一步到底怎么辦?如果你必須強調(diào)自己找工作,獲得一份薪水,彌補十幾年的教育投入,那么我建議你從銷售開始,你需要錢,也適合做生意。如果你的家人還能撐住你一些時日,那就從現(xiàn)在開始自學(xué)吧,邊自學(xué)邊找工作,從面試中發(fā)現(xiàn)不足,但不要成為面霸,給自己靜下心的時間和自學(xué)的空間。

自學(xué)第一選項是什么?
那就是一定要掌握一門主流的編程技術(shù),這個我說過無數(shù)次了,耐心掌握一門編程技術(shù)并開發(fā)實踐,參與培訓(xùn)機構(gòu)的項目或者直接參與開源項目,為自己的簡歷上色。
我再聊一個技巧:掌握哪種技術(shù)有一個隱藏的參考,那就是你身邊的氛圍是什么?例如你有個大哥是 Java 方面的高手,或者你有個舍友是個 C++方面的熱愛者,當然人家也愿意指導(dǎo)你的問題。
若有貴人相助,可作為技術(shù)學(xué)習的第一選擇!若沒有貴人相助,勤看技術(shù)博客,這里都是貴人。
本文由「守護石」公眾號出品,轉(zhuǎn)載請聯(lián)系作者
寫在最后:另外,對于準備學(xué)習C/C++編程的小伙伴,如果你想更好的提升你的編程核心能力(內(nèi)功)不妨從現(xiàn)在開始!
微信公眾號:C語言編程學(xué)習基地
整理分享(多年學(xué)習的源碼、項目實戰(zhàn)視頻、項目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習編程的伙伴,利用更多的資料學(xué)習成長比自己琢磨更快哦!
編程學(xué)習書籍分享:

粉絲編程交流:
