新聞中心
我是Guide哥,一Java后端開發(fā),半個(gè)全棧,自由的少年。

如果你看到這篇文章,恭喜你!不論是初入編程領(lǐng)域的小白,還是已經(jīng)在工作幾年的老手,這篇文章都將對你有很大的幫助。建議看到最后。相信我!一定會(huì)有收貨。
這篇文章我會(huì)試著給你帶來一個(gè)更加不一樣的編程能力提高實(shí)戰(zhàn)指南。如果你覺得這篇文章對你有用的話,也不要白嫖好吧!點(diǎn)個(gè)在看或者贊就是對我最大的鼓勵(lì)。歡迎轉(zhuǎn)發(fā)讓更多人看到這篇文章,一起變強(qiáng)!
先來說一下自己的情況!我從小學(xué)就開始接觸電腦,不過到了大學(xué)之后才接觸編程,整個(gè)大一都很迷茫,編程很少,也不知道如何提高自己的編程能力。大二的時(shí)候,自己加入了學(xué)校的一個(gè)技術(shù)組織,自此之后,便真正開啟了自己瘋狂的大學(xué)自學(xué)編程之路。
自學(xué)編程路上,Github 絕對對我?guī)椭畲蟆?我在大二就開始接觸 Github 了,當(dāng)時(shí)就覺得上面有太多不錯(cuò)的學(xué)習(xí)資源了。到了大三下學(xué)期,自己就想著說要不也嘗試著做一下開源唄!然后,我就從比較好入手的 Java 學(xué)習(xí)和面試指南入手。 到目前未知,我的所有的開源項(xiàng)目累計(jì)接近 90k star,并且收獲了 4.6k 的關(guān)注。
說到 Github 其實(shí)也挺慚愧的!因?yàn)槲业拇蟛糠猪?xiàng)目都沒有提供英文版本。實(shí)際上,如果你要做開源的話,本著開源精神,最好能有一份英文翻譯版。
好的!下面我們就開始正文!想要自己編程變得更強(qiáng)的小伙伴記得多記筆記。
1. 選擇一個(gè)合適的電腦
學(xué)習(xí)編程前至少要有一個(gè)稍微適合一點(diǎn)的電腦吧!
關(guān)于電腦選擇,我覺得不要糾結(jié)是買 Mac 還是 Windows。作為一個(gè)使用了 Windows 開發(fā) 4 年,Mac 開發(fā)一年的人客觀地說,兩者對于編程效率的影響沒有你想的那么大。特別是在你初學(xué)編程的階段,是完全沒太大區(qū)別的。
Mac 的性價(jià)比更低,一臺(tái)合格的 Mac 開發(fā)本 1 萬 2 起步。雖然它確實(shí)好一些,但是選擇電腦的時(shí)候還是要根據(jù)自己實(shí)際經(jīng)濟(jì)情況來決定。
另外,一定不要選擇內(nèi)存低于 8g 的電腦,有條件的話最好能 16g。
2. 六個(gè)黃金原則
很多人可能會(huì)覺得說,我們學(xué)習(xí)編程,首先是要找一門編程語言好好開始學(xué),比如我在上大學(xué)的時(shí)候最開始接觸的是 C 語言。
我覺得非也!就我自己作為一個(gè)從大學(xué)自學(xué)編程一路一路踩坑的過來人來說,我覺得學(xué)習(xí)編程第一步應(yīng)該是要搞清楚學(xué)習(xí)編程有哪些必備的網(wǎng)站?我們是如何查資料的?我們是如何解決問題的?國內(nèi)外有哪些技術(shù)社區(qū)比較好?......
初次之外,你還要搞明白學(xué)習(xí)編程不是參加應(yīng)試考試。
2.1. 了解常見的學(xué)習(xí)編程網(wǎng)站
了解學(xué)習(xí)編程有哪些必備的網(wǎng)站之后,你才能更好地進(jìn)行自學(xué)。
一般情況下,但凡是初學(xué)編程的同學(xué),往往都需要課后進(jìn)行持續(xù)學(xué)習(xí)的。一是因?yàn)槟憧赡軇倢W(xué)編程,老師教的東西你聽不明白。二是因?yàn)槌绦騿T這個(gè)行業(yè)本身就需要不斷學(xué)習(xí)。三是因?yàn)榇髮W(xué)里面教的東西往往和社會(huì)實(shí)際需要脫節(jié),只有自學(xué)才可以讓你技術(shù)和社會(huì)不脫節(jié)。
推薦幾個(gè)我常用的學(xué)習(xí)編程的網(wǎng)站:
a.中國大學(xué) Mooc
上面有很多名校的課程和國家精品課程比較適合我們夯實(shí)編程基礎(chǔ)。比如下圖是南京大學(xué)的一門關(guān)于軟件工程的大學(xué)選修課。
b.慕課網(wǎng)
上面有很多比較適合入門的免費(fèi)課程。另外,如果你需要實(shí)戰(zhàn)項(xiàng)目視頻資源的話,也可以在慕課網(wǎng)找到(慕課網(wǎng)打錢?。。。?。
c.嗶哩嗶哩
是的,你沒看錯(cuò)!看 B 站也能學(xué)習(xí)!B 站上面有很多優(yōu)秀的學(xué)習(xí)資源以及優(yōu)秀的 UP 主比如 Guide 哥。
d.LeetCode
國內(nèi)的公司慢慢開始向國外的面試形式靠攏,手撕算法已經(jīng)是很多大廠的標(biāo)配了,不論是社招還是校招。LeetCode 這個(gè)網(wǎng)站的話,是我們平時(shí)刷題必備的一個(gè)網(wǎng)站。
在你初學(xué)編程的階段,也可以經(jīng)常去上面找一些簡單難度的算法題來做。
e.極客時(shí)間
主打付費(fèi)學(xué)習(xí)的一個(gè)付費(fèi)學(xué)習(xí)社區(qū)(極客時(shí)間私聊我打錢哈?。2贿^課程的質(zhì)量大部分都挺高的,我自己也看了里面很多的課程,并且很多課程都是 Java 領(lǐng)域大佬級別的人物講的。
2.2. 拓展視野,好的技術(shù)社區(qū)是你成長的助力器
了解了國內(nèi)外有哪些比較好的技術(shù)社區(qū)之后,你才有機(jī)會(huì)認(rèn)識(shí)到更多更優(yōu)秀的程序員,看到更多對你有幫助的東西。而不是說,整個(gè)人的思想都局限在學(xué)校。這點(diǎn)是很重要很重要的! 比較好的技術(shù)社區(qū)的話有:Github(穩(wěn)居第一位好吧!開源項(xiàng)目交流社區(qū))、Stackoverflow(一個(gè)程序設(shè)計(jì)領(lǐng)域的問答網(wǎng)站,網(wǎng)站允許注冊用戶提出或回答問題。和知乎很像,重大的一點(diǎn)不同是 Stack Overflow 可以對問題進(jìn)行打分)、v2ex、掘金、csdn、segmentfault 、知乎......。
3.學(xué)會(huì)使用 Googgle 搜索,學(xué)習(xí)和解決問題效率提升一個(gè)檔次
知道了要使用 Google 搜索之后,你學(xué)習(xí)編程的和解決的問題可以提升一個(gè)檔次。如果你實(shí)在是無法越過那道墻的話,可以試試必應(yīng)搜索。
2.3. 不要把學(xué)習(xí)編程還當(dāng)做學(xué)生時(shí)代的應(yīng)試考試來看
你或許也發(fā)現(xiàn)了。很多成績特別特別優(yōu)異的同學(xué),他們的編程能力其實(shí)并不好。在大學(xué)的時(shí)候,那些編程能力最強(qiáng)的往往是那些成績比較一般的。
為什么會(huì)這樣呢?
我覺得主要是一個(gè)思維的轉(zhuǎn)變問題。很多人學(xué)習(xí)編程的時(shí)候,總是想著我要把這個(gè) API 記下來,把這個(gè)庫的用法記下來。這樣學(xué)習(xí),導(dǎo)致的結(jié)果只有一個(gè)那就是你會(huì)很難受!因?yàn)?,這些根本不是要死記硬背的東西??!真還當(dāng)這是上課考試啊!你要從如何用你學(xué)的東西來解決實(shí)際編程問題出發(fā),站在做一個(gè)實(shí)際的項(xiàng)目的角度來學(xué)習(xí)。
拿我自己來說:我平時(shí)也會(huì)寫 Python,基本就是自己看著官方文檔或者一些書籍的教的語法跟著寫。如果哪個(gè)地方不會(huì)了,我就去查一下。
2.4. 不要害怕閱讀英文文檔
大部分最新的資料/技術(shù)都是國外那邊的,基本上大部分都是英文的。據(jù)說 90% 以上的程序員都不習(xí)慣直接看英文文檔,都會(huì)選擇看別人的翻譯/總結(jié)或者書籍。但是,書籍或者別人的翻譯/總結(jié)都會(huì)比較慢,而且難免會(huì)有個(gè)人主觀因素影響翻譯效果。
這個(gè)時(shí)候很多人就會(huì)說了我的英語不好?。⊥耆床欢⑽奈臋n。
別擔(dān)心!有道翻譯和谷歌翻譯就是你最好的老師。如果是使用 Chrome 瀏覽器的話,我還推薦你安裝一個(gè) Mate Translate 插件。 這個(gè)插件對于網(wǎng)頁閱讀英文文檔太友好了,可以一站式翻譯您的網(wǎng)頁以及標(biāo)記的文字段落。使用效果如下圖所示:
2.5. 多看優(yōu)秀的代碼
不看優(yōu)秀的代碼,你寫的代碼質(zhì)量很難提高。
雖然要多看優(yōu)秀的代碼,但是也不要被 “最佳實(shí)踐” 所束縛,很多時(shí)候?qū)嶋H是根本不存在適用于任何場景的“最佳實(shí)踐”,沒有銀彈。
有哪些優(yōu)秀的代碼值得學(xué)習(xí)呢?
拿 Java 來說,不知道閱讀什么源碼的話,可以先從 JDK 的幾個(gè)常用集合看起。另外,我比較推薦看 Dubbo 的,因?yàn)楦杏X會(huì)稍微相對容易一點(diǎn),模塊劃分清晰,注釋也比較詳細(xì)。搞清楚了 RPC 的基本的原理,知道如何自己實(shí)現(xiàn)一個(gè) RPC 框架之后,看起來就沒那么吃力了。
另外,隨便一個(gè)框架的源碼都 10w+行了,都看一遍是不可能的。要挑選比較重要的地方看,就比如看 Spring 源碼的話你一定要看 IoC 和 AOP,要知道一個(gè) Spring Bean 是如何一步一步被創(chuàng)建出來的。你要看 Spring Boot 源碼的話就要知道 Spring Boot 的啟動(dòng)機(jī)制是啥,Spring Boot 是如何實(shí)現(xiàn)自動(dòng)配置的。
2.6. 多讀好書
一定要多看好書!像《重構(gòu)》、《代碼大全》、《代碼整潔之道》這類書是程序員標(biāo)配、必讀的書籍。
看書相比于零散的看一些文章學(xué)習(xí)更加系統(tǒng)。當(dāng)然,網(wǎng)上也有很多比較系統(tǒng)的學(xué)習(xí)資源,比如你要學(xué)習(xí) Java 的話,可以看我開源的 JavaGuide (「Java 學(xué)習(xí)+面試指南」一份涵蓋大部分 Java 程序員所需要掌握的核心知識(shí))。
3. 選擇一門適合的編程語言入門
初學(xué)編程第一步就是選擇一門適合自己的編程語言入門。
選擇的時(shí)候,無非是要從下面幾點(diǎn)考慮:
- 難易程度:一般建議初學(xué)編程應(yīng)該選擇一門稍微簡單點(diǎn)的比如 Python、 C、Java。
- 發(fā)展前景 : 確定你要學(xué)習(xí)的編程語言發(fā)展前景是不錯(cuò)。就比如相比于 PHP ,我肯定更推薦你學(xué)習(xí) Java。
- 市場需求 : 有了市場需求之后,工作崗位才會(huì)多,找工作也會(huì)相對容易。
- 薪資水平 : 薪資水平實(shí)際和編程語言不是那么相關(guān),和個(gè)人實(shí)際能力相關(guān)。不過,相同能力下某些編程語言的薪資確實(shí)要稍高一些。
下面這份數(shù)據(jù)來自 TIOBE 官網(wǎng)統(tǒng)計(jì)的 2020 年 7 月份編程語言排行榜,也可以作為你的參考。從統(tǒng)計(jì)結(jié)果可以看出,C、Java、Python 還是很強(qiáng)勢的,這弟兄仨基本常年就是前三(Java 和 C 經(jīng)常爭第一)。另外,R 語言的進(jìn)步也很快,同樣值得關(guān)注。
再來看一下 PYPL 指數(shù)。 這份指數(shù)數(shù)據(jù)主要描述的編程語言的受歡迎程度,具體受歡迎程度是由分析 Google Trends 得出。從統(tǒng)計(jì)結(jié)果可以看出,Python、Java、Javascript 三者穩(wěn)居前三。
再來看一下編程語言的平均薪資水平和使用年限。這份數(shù)據(jù)來自于 Stack Overflow 2019 Survey 。我們需要格外關(guān)注的是 Go 語言。Go 語言背靠谷歌,薪資比較高也不奇怪。并且,國內(nèi)現(xiàn)在很多大公司比如騰訊使用 Go 進(jìn)行項(xiàng)目開發(fā)的越來越多了。
相信你看了上面這么多關(guān)于編程語言的介紹之后,你一定可以選擇一門適合自己的編程語言進(jìn)行學(xué)習(xí)和深入。
4. 不要被編程語言所束縛
編程語言只是工具。我們的確需要有一門比較擅長的編程語言,但是,不是任何時(shí)候,我們做任何東西都要使用這一門編程語言來做。比如 Java 適合網(wǎng)站開發(fā)而 Python 更適合做數(shù)據(jù)分析。選擇合適的語言做合適的事情很重要。 再比如你想要做全棧開發(fā)的話,還可能需要掌握多門編程語言。拿我自己來說,也算是半個(gè)全棧開發(fā),我主要是以 Java 做后端開發(fā),Javascript 來進(jìn)行前端開發(fā)。
5. 多實(shí)踐
我見過很多人學(xué)習(xí)編程一年多了,自己敲的代碼可能還不到 1000 行。然后, 你讓他做用自己學(xué)的編程知識(shí)做個(gè)什么東西,他就蒙了。
學(xué)習(xí)編程以及提高編程能力最直接的辦法就是實(shí)踐!不斷實(shí)踐!特別是在編程初期的時(shí)候,積累代碼量格外重要。
就比如你學(xué)習(xí) Java 后臺(tái)開發(fā)的時(shí)候,能不能通過自己學(xué)過的知識(shí)獨(dú)立做個(gè)網(wǎng)站呢?再比如你搞懂了某個(gè)框架原理之后,能不能模仿著去寫一個(gè)簡單的呢?
我們實(shí)際項(xiàng)目開發(fā)中是比較忌諱造輪子的,但是,實(shí)際學(xué)習(xí)過程中造輪子絕對是最自己百利而無一害的! 就比如我之前搞懂了 RPC 的原理之后,就自己動(dòng)手寫了一個(gè)簡單的 RPC 框架。我的 RPC 框架肯定是無法和 Dubbo 這類已經(jīng)這么成熟的相提并論。但是,在自己去寫 RPC 框架的時(shí)候,更加加深了自己對于 RPC 框架的認(rèn)識(shí)。實(shí)現(xiàn)的過程中,遇到了很多問題,解決問題的過程中也提高了自己的編程能力??偠灾?strong>造輪子是一種特別能夠提高自己系統(tǒng)編程能力的手段。
多實(shí)踐不是說拿到問題就直接開始寫代碼、不是不學(xué)習(xí)理論知識(shí)。多問自己 why ,而不是 what。 就比如技術(shù)選型的時(shí)候,相同的功能可能有不同的解決方案,你是人云亦云地不顧項(xiàng)目實(shí)際需要去選擇,還是自己經(jīng)過詳細(xì)的對比呢?想當(dāng)然肯定是根據(jù)自己項(xiàng)目的實(shí)際需要,然后經(jīng)過各種對比之后選擇!
“ talk is cheap, show me code”這句話雖好,但是請不要忘記思考!換句話說就是:多寫代碼雖好,可不要貪杯哦!
6. 多修煉內(nèi)功
不要沉迷框架,多花點(diǎn)時(shí)間去修煉內(nèi)功——底層技術(shù)。很多人覺得在學(xué)校里面學(xué)的數(shù)據(jù)結(jié)構(gòu)和算法、計(jì)算機(jī)組成原理、操作系統(tǒng)這些東西工作之后根本用不到。然后,就想當(dāng)然地覺得這些東西不重要。
如果你暫時(shí)覺得這些東西沒有用,很可能是現(xiàn)在學(xué)習(xí)某門技術(shù)只是浮于表面。舉個(gè)例子:如果你要看懂框架或者某個(gè)類庫的源碼,那數(shù)據(jù)結(jié)構(gòu)是必須要搞懂的吧!如果你要培養(yǎng)和提高自己解決問題的能力,那算法肯定是必須吧!
為什么要修煉內(nèi)功?
- 技術(shù)更新?lián)Q代快 :我們前幾年可能還在用 Spring 基于傳統(tǒng)的 XML 開發(fā),現(xiàn)在幾乎大家都會(huì)用 Spring Boot 這個(gè)開發(fā)利器來提升開發(fā)速度,再比如幾年前我們使用消息隊(duì)列可能還在用 ActiveMQ,到今天幾乎都沒有人用它了,現(xiàn)在比較常用的就是 Rocket MQ、Kafka 。技術(shù)更新?lián)Q代這么快的今天,你是無法把每一個(gè)框架/工具都學(xué)習(xí)一邊的,底層技術(shù)就是你快速上手他們的瑞士軍刀。
- 懂得底層技術(shù)的人更有競爭力 : 現(xiàn)在的程序員這么多,你如何能和別人拉開差距?單純就靠使用框架的能力么?這些隨便從培訓(xùn)班抽一個(gè)人可能都會(huì)做的工作無法成為你的核心競爭力。
拿 Java 舉例子,有哪些比較底層的技術(shù)呢?
- 算法和數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)網(wǎng)絡(luò)和操作系統(tǒng)(適用于任何編程語言的底層技術(shù));
- 框架的源碼;
- Java 程序運(yùn)行的基礎(chǔ)—JVM;
- ......
7. 多總結(jié)、多分享、多輸出
總結(jié)知識(shí)不是把自己學(xué)到的東西按照老師的說法完完整整的整理下來,而是結(jié)合自己的理解和補(bǔ)充整理下來。
將自己學(xué)到的東西分享出來,一方面能檢驗(yàn)自己是否掌握,另一方面還能加深自己的理解和認(rèn)識(shí)。
分享和輸出的方式有很多種,給大家推薦幾種最常見,同時(shí)也是我最常用的學(xué)習(xí)方式。
7.1. 寫博客
可以養(yǎng)成寫博客輸出的習(xí)慣。我在之前有寫過一篇文章來說為什么要寫博客:程序員寫博客很重要嗎? 。
簡單來說,主要有下面 幾點(diǎn)原因:
- 對知識(shí)有更加深的認(rèn)識(shí),讓自己的知識(shí)體系更加完整
- 督促/倒逼自己學(xué)習(xí)
- 可能會(huì)帶來不錯(cuò)的經(jīng)濟(jì)收入
- 提升個(gè)人影響力
- 擁有更多機(jī)會(huì)
- 好的博客會(huì)成為面試加分項(xiàng)
這個(gè)時(shí)候,你肯定就糾結(jié)了: 我該在哪里寫博客呢?
作為一個(gè)從大二開始就堅(jiān)持寫博客,期間折騰了無數(shù)次個(gè)人網(wǎng)站的我來說: 我推薦先找一個(gè)不錯(cuò)的博客平臺(tái)比如掘金,然后在博客平臺(tái)上寫博客,后面可以自己搭建自己的博客網(wǎng)站。
這個(gè)時(shí)候,你肯定又要糾結(jié)了:我該怎么搭建自己的博客呢?
Emm...這部分要格外好好看,適當(dāng)記筆記哈,小伙伴們!給大家推薦幾個(gè)最好也是最常見的搭建博客網(wǎng)站的方法,想要免費(fèi)高速個(gè)人博客網(wǎng)站的小伙伴們不要錯(cuò)過。
搭建難度 是否需要服務(wù)器 易用性 SEO Hexo 易 非必須 中 一般 Vuepress 易 非必須 易 友好 Docsify 易 非必須 易 不友好 WordPress 中 必須 易 友好 Halo 中 必須 易 一般
綜上,我還是比較推薦 Vuepress 和 Docsify 的。 關(guān)于如何使用 Docsify 搭建一個(gè)自己的博客網(wǎng)站,我還寫過一篇文章手把手教你搭建:《手把手教你搭建一個(gè)文檔類型的網(wǎng)站!免費(fèi)且高速!》 。而且,我還提供了配套的視頻教程。就很貼心好吧!記得給 Guide 哥點(diǎn)個(gè)贊 !
有了自己的網(wǎng)站后,你可以將自己的文章整理成一個(gè)系列,然后部署在自己的網(wǎng)站上,自己想看的時(shí)候就可以隨時(shí)查閱。你也可以將文章同步到其他博客平臺(tái)來擴(kuò)大自己的影響力。
我整理 7 個(gè)常見的技術(shù)平臺(tái)供大家參考:
7.2. 項(xiàng)目組內(nèi)分享
一般公司都會(huì)有內(nèi)部的技術(shù)講座以及博客平臺(tái)。
你可以在公司或者項(xiàng)目組內(nèi)部組織技術(shù)講座,這樣不僅可以增加自己的存在感,還能提高自己的表達(dá)能力。
你也可以在公司內(nèi)部的博客平臺(tái)分享自己寫的博客,這樣你寫的東西就能被更多人看到了!
7.3. 做開源項(xiàng)目
你可以在 Github 分享很多東西,你的學(xué)習(xí)筆記、自己做的實(shí)戰(zhàn)項(xiàng)目、自己造的輪子......(資源類的不太推薦,太容易侵權(quán))。雖然,現(xiàn)在 Github 被很多人單純玩成了引流工具。但是,整體來說 Github 整體技術(shù)環(huán)境和氛圍還是很不錯(cuò)的!
另外,最好的話是要給項(xiàng)目弄一個(gè)英文版本,項(xiàng)目代碼中的注釋最好也要是英文的。畢竟是開源,最好是能準(zhǔn)守開源精神使用世界通用語言(這一點(diǎn)我自己也沒做好,反思!)。
總結(jié)
這篇文章,我站在自己的這些年自學(xué)的角度,掏心窩子地說了很多話??戳诉@篇文章之后,哪怕你只學(xué)會(huì)了要使用 Google 搜索我都覺得開心,也希望這篇文章能夠影響到更多人。
另外,文中講了很多編程領(lǐng)域不可爭的事實(shí)或者說正確姿勢比如:不要以學(xué)生時(shí)代應(yīng)試考試的方式學(xué)習(xí)編程、多實(shí)踐、造輪子是一種特別能夠提高自己系統(tǒng)編程能力的手段等等。說了這么多,如果你沒有將這些學(xué)習(xí)編程的正確姿勢用到自己平時(shí)學(xué)習(xí)中的話,這篇文章對你的幫助可能非常有限。
標(biāo)題名稱:編程小白用了3年在Github斬獲90kStar!聊聊學(xué)習(xí)編程的姿勢
本文路徑:http://www.dlmjj.cn/article/djpsoge.html


咨詢
建站咨詢
