經(jīng)驗分享:3 條掏心掏肺的建議,新手學(xué)習(xí)編程必備,快上車!
窮學(xué)編程!
父親曾說過一句讓我刻骨銘心的話:“我的歷史使命就是讓你從農(nóng)村回到城市?!比缃袼龅搅耍以诔鞘性烁ぁぁぁぁぁ?/p>
我之所以能夠逆襲成功,因素有很多,但我想以下這三點非常重要:
父母的支持
自己的努力
選擇了編程

作者:沉默王二
關(guān)注我的讀者當(dāng)中,大多數(shù)都是學(xué)編程的,那么如何才能把編程學(xué)好呢,如何才能讓它成為我們安身立命的根本呢?
一開始,不管是學(xué)習(xí)哪一門編程語言,C語言也好,Java 語言也好,一定要能讓電腦屏幕打印出“hello world”。
如果10 分鐘內(nèi)不能完成,就說明你的學(xué)習(xí)方法是有問題的。
學(xué)習(xí)的最好方法就是逐步擴(kuò)大勝利戰(zhàn)果,先從最小的勝利開始,讓自己感受到學(xué)習(xí)的快樂,盡快地進(jìn)入到一種正反饋的狀態(tài)當(dāng)中。
如果一門編程語言需要你研究很多預(yù)備知識,才能完成“hello world”的打印,那么它就不太適合初學(xué)者。

學(xué)習(xí)編程的過程,大致如下:
1)入門
看視頻、看教程、看書
模仿視頻、教程、書上的代碼,進(jìn)行復(fù)現(xiàn)
思考學(xué)習(xí)別人的思路,脫離視頻、教程和書本,自己獨自實現(xiàn)一些小 Demo
2)進(jìn)階
學(xué)會調(diào)用 API,學(xué)會使用框架
在 API 和框架的幫助下,實現(xiàn)業(yè)務(wù)代碼
閱讀 API 和框架的源碼,理解背后的實現(xiàn)原理
攻克技術(shù)難點
3)成神
做架構(gòu)
做業(yè)務(wù)模塊拆分
帶著別人做開發(fā)
出視頻、出教程、出書
以下是這十多年我個人總結(jié)出的編程心得,毫不保留地分享給大家,希望能給大家一點點啟發(fā)和幫助。

1)讓編程成為習(xí)慣
如果哪天我沒有敲上一行代碼,我總感覺缺了點啥。其實說白了,就是編程已經(jīng)深入我的工作和生活,成了密不可分的一部分。
養(yǎng)成習(xí)慣的一個好辦法就是拒絕“拖延癥”,尤其是在新手階段,千萬不要因為一些客觀或者主觀因素,感到厭煩或者抗拒。
我大一剛開始學(xué)習(xí) Java 的時候,其實就蠻抗拒的。因為要配置環(huán)境變量,配置完成后要在命令行里敲代碼。這樣學(xué)編程的壞處很多。
第一,我家里比較窮,所以大一上半學(xué)期沒有買電腦,學(xué)習(xí)編程只能到機(jī)房去,而機(jī)房的電腦只要重啟,配置好的環(huán)境變量就會丟失,還得重新配置一遍,不厭其煩。
第二,命令行編程對新手實在是太不友好了,我經(jīng)常拼錯關(guān)鍵字,比如說 main 拼成 mian,就導(dǎo)致出現(xiàn)一些莫名其妙的錯誤,而命令行的錯誤提示一點也不直接,這就導(dǎo)致找一些簡單的錯誤要花很久的時間,自己的心情也會變得比較糟糕。
所以,千萬不要信一些大牛的話,說什么命令行編程、記事本編程容易鍛煉新人的編程思維——帽子戴得也太大了點。
如果你是初學(xué),直接上VS2013就可以了,環(huán)境變量不用配,直接就可以上手敲“hello world”,單詞拼錯了,還有提醒。
你就會感覺學(xué)編程是一件很簡單的事兒,信心就上來了。
大學(xué)階段,記得每天至少敲一行代碼。如果覺得一行代碼沒意義,可以到 LeetCode 上刷一道算法題,哪怕是自己沒有解題思路,也可以看看別人的嘛,找最簡單的開始做,做不出來就先抄別人的,不要不好意思,不要覺得自己笨,新人,最重要的是臉皮要厚,保持對編程的熱情。

2)閱讀別人的代碼
在我看來,提升編程水平的最佳途徑就是多看、多寫。
優(yōu)秀的開源項目的源碼經(jīng)過了幾千人的上萬次修改,非常經(jīng)典。就像 JDK 的源碼一樣,經(jīng)歷了二十多年的考驗,可以說是經(jīng)典中的經(jīng)典。
我一開始讀代碼也很慢,有很多看不懂,后來代碼寫多了以后,再讀別人的代碼就會明顯地感覺到速度變快了。
慢不是因為缺少編程天賦,而是因為對常用的 API 不熟,再加上沒有多少編程經(jīng)驗造成的。
看的多了,寫的多了,很多代碼掃一眼就明白了,思路就不會被不懂的語法或者編程技巧打斷,注意力就會一直停留在程序的邏輯上,讀代碼就輕松多了。
說 4 個閱讀源碼的技巧吧。
自頂向下:從需求開始,然后再到實現(xiàn)細(xì)節(jié)。比如說看一個方法,可以把 debug 模式打開,一步步地跳進(jìn)去,然后再跳出來。
提綱挈領(lǐng):先看一個類、一個方法的 doc 文檔,如果英語功底不好的話,可以在 Intellij IDEA 中裝一個translation 的翻譯插件,先大致過一下這個類、這個方法是干嘛的。
廣度優(yōu)先:一開始,可以把重心放在整體上而不是局部細(xì)節(jié)上,一些一時半會理解不了的就暫時跳過去,沒關(guān)系的。后面經(jīng)驗足了,可以回頭再讀。
選擇合適的版本,不要追求最新。如果你要閱讀 JDK 的源碼,比如說 String 類、HashMap 類這些經(jīng)典的類庫,一定要選擇 JDK 8,里面的語法沒有太多炫技的,比較扎實;如果選擇 JDK 11 或者以上的版本,你會發(fā)現(xiàn)里面有一些細(xì)節(jié)真的是看得頭大,因為穿插了很多對新手不那么友好的技巧。
記住一點,不要漫無目的地去閱讀源碼,尤其是那些超出個人能力之外的源碼。比如說,你初學(xué)編程,就去看 Linux 的源碼,就會撐著。
什么時候開始讀源碼呢?
當(dāng)你沒有自己的實現(xiàn)思路,需要借鑒別人的代碼的時候。
當(dāng)你 debug 的時候,可能你是為了找出問題,或者是解決問題。
當(dāng)你想要給一個項目添加 feature 或者提交 PR 的時候。

3)記筆記寫技術(shù)文章
對于代碼,通過敲代碼、大量的練習(xí)加強(qiáng)理解;對于理論知識,通過記筆記、寫技術(shù)文章加深記憶。
新手在一開始學(xué)習(xí)編程的時候,容易進(jìn)入兩種誤區(qū),一種是認(rèn)為自己學(xué)不會,好難;一種是認(rèn)為自己學(xué)會了,盲目自信。
檢驗自己到底有沒有學(xué)會,可以通過記筆記或者寫技術(shù)文章的形式來檢驗。
如果記筆記的時候腦子一片空白,就證明自己壓根沒有記住或者理解。
如果寫了技術(shù)博客,別人看不懂,或者被別人檢出了問題,就說明還有待提高,提高的方面很可能不是寫作技巧方面,而是自己掌握的不夠扎實。
羅馬不是一天建成的,保持耐心。
在這個過程中,你可能會經(jīng)歷高潮和低谷,可以通過筆記和文章的形式把這個過程記錄下來,等你空閑下來的時候,再去回顧當(dāng)初的學(xué)習(xí)方法或者心得體會,就會有一種“復(fù)前行,豁然開朗”的感覺。

衣食住行,是生活的基本條件,而計算機(jī),已經(jīng)滲透到衣食住行的方方面面了,可以說是“無孔不入”。因此,計算機(jī)專業(yè)的學(xué)生完全不用擔(dān)心就業(yè)問題,因為每年的需求量都很大,關(guān)鍵是薪資還高。
在我看來,計算機(jī)專業(yè)至少還能熱門 10 年左右。而編程,是計算機(jī)專業(yè)中非常重要的一項技能。
有個很流行的說法叫:窮學(xué)編程,富學(xué)金融,超級有錢學(xué)哲學(xué),還是非常有道理的。
對于我們家境一般、農(nóng)村走出來的孩子來說,學(xué)習(xí)編程可能是最好的出路。

為了幫助大家,輕松,高效學(xué)習(xí)C語言/C++,給大家分享我收集的資源,從最零基礎(chǔ)開始的,幫助大家在學(xué)習(xí)C語言的道路上披荊斬棘!
微信公眾號:C語言編程學(xué)習(xí)基地
整理分享(多年學(xué)習(xí)的源碼、項目實戰(zhàn)視頻、項目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!大家也要把握住大學(xué)的時光,抓住成長的每一次機(jī)會哦~
編程學(xué)習(xí)書籍分享:

編程粉絲交流:
