作者:黃小斜
文章來源:微信公衆号【程式員江湖】
閱讀本文大概需要 2.8 分鐘。

很多人都想轉行網際網路,不管是出于興趣、行業前景還是薪資的考慮,想要轉行網際網路的人們必須要面對一個問題,那就是如何自學程式設計,更确切的說,是如何0基礎學程式設計。
其實我基本上也是0基礎自學程式設計的,大學的時候學的電信專業,對于程式設計語言隻懂得一點皮毛,那些内容,相信大部分人看一些網上的教程也可以掌握了。
作為過來人,想給大家一些建議,不管你是學生想要自學,還是跨界轉行,亦或是純粹當做興趣愛好,都可以把我的建議作為參考,不會有壞處。
興趣是最好的老師
這句話大家都聽過,但我覺得,不管是你想從事哪個行業,想要做的比較好,去比較好的公司,至少要有興趣,其他的能力、專業水準暫且不談,如果連興趣都沒有,那麼為什麼要從0開始去做這個行業,去學這樣技術,顯然是非常不理智的行為。
有興趣,才有動力去學習每一樣東西,不管是計算機基礎、程式設計語言、算法等等,興趣是原動力,沒有了它,你一定堅持不了多久。
可能很多人覺得興趣不一定最重要,可以靠努力、靠堅持、靠意志力去學習,但是,那樣又有什麼意義呢,你願意這麼不快樂地去學習麼,你的堅持又能持續多久呢。
時間是最好的朋友
學習程式設計這件事,需要從長計議,怎麼說呢,就是需要花很長時間,絕對不是一蹴而就的,你可以說你花3個月教育訓練學會了一門語言,以及相關的項目實戰技能。
但是在我看來,這也隻是掌握了一項技能而已,學習程式設計的路還有很長,不管是你自己做項目,還是參加工作,學習程式設計都是一件需要持續做的事情。
曾經有人提出10000小時理論,就是你在一個領域投入至少1w個小時,就可以成為該領域的專家,學習程式設計也不例外。
先易後難,不要想一步登天
很多新手都是初生牛犢不怕虎,因為對程式設計領域不了解,便不假思索地定了一些很高的目标,比如想進大廠,想做有複雜度的項目,想短時間學習一門語言并找到工作。
理想很豐滿,現實很骨感,你可能低估了入行的難度,并不是隻要有心,就可以很快地完成學習過程的。
一定要先易後難,一步一來,比如先搞懂文法,嘗試寫一寫demo,接着了解進階特效,實作進階特性,然後自己脫離教程寫一些代碼,最後做項目,大概是這樣的一個邏輯。
别看我說的簡單,其實對于新人來說,要完成這幾道工序并不容易,别看學點基礎文法沒什麼難度,但是真的要上手實踐,可能會遇到很多問題,比如環境配置,IDE安裝和使用,這些搞定之後,代碼文法錯誤、編譯錯誤、執行錯誤,對于新手來說都是很難解決的,如果不借助外力,基本上是無從下手的。
是以,學習程式設計,沒有你想象的那麼簡單。
遇到問題,不要畏難
就像我剛才所說,如果在學習過程中遇到困難,可能真的很難獨立解決,這種時候應該怎麼辦呢,如果沒有人指導你,那麼就隻能夠硬着頭皮自己解決了,解決的方法無非就是百度、谷歌,到網上看看有沒有人遇到和你一樣的問題。
如果你覺得這樣子效率很低,那也可以找一些基礎方面的書籍先看看,了解基本的程式設計知識,或者看一些網課,加深對知識的了解,然後再去嘗試各種代碼實踐,可能會讓你更加順利一些。
重視基礎,才能走的更遠
很多人覺得學習程式設計隻需要剛才我說的那幾步,學習文法、寫簡單demo,然後學習進階特性,最後着手做項目就可以了。但是這隻是最初級的程式員,離開這門語言,他們可能就什麼都不剩下了。
沒有計算機基礎的支撐,他們不明白計算機網絡的原理,不知道為什麼要考慮網絡程式設計,不明白為什麼要考慮DNS、負載均衡,不知道作業系統的原理,就不能夠了解伺服器出問題時的根本原因,無法排查,不懂得資料結構和算法,就不明白為什麼有的程式是這麼寫的,有的集合類是這麼設計的。
重視基礎,是每一個程式員都要做到的一點,離開基礎,其他的東西都是空中樓閣,基礎不紮實,你連談論技術時也不會有底氣,更别說談架構、談業務場景了。
綜上,都是我想給那些自學程式設計的人的一些建議,自學程式設計不易,千萬要想清楚了再開始,特别是想要轉行,做程式員,以此謀生的那些人,一定要慎重。
文能碼字,武能coding,是我黃小斜,不是黃老邪噢。