知乎又炸一個(gè)!
大家好,我是二哥呀!
微信上收到一條讀者發(fā)來(lái)的消息,打開(kāi)一看,是我的一個(gè)知乎回答“程序員需要達(dá)到什么水平才能順利拿到 20k 無(wú)壓力”,已獲得 2.2k 的贊同,算是小炸了一下吧。

大家也看到了,上次我倆發(fā)消息的時(shí)候還是 2020 年 7 月份,剛認(rèn)識(shí)。這次他主動(dòng)給我發(fā)消息,估計(jì)是這個(gè)問(wèn)題上了知乎熱榜的原因,他一看,“咦,沉默王二,這不是上次在車(chē)展的時(shí)候認(rèn)識(shí)的那個(gè)程序員嘛?原來(lái)是個(gè)大佬!趕緊發(fā)個(gè)信息吹一下~”
除了這個(gè)回答,五一假期的時(shí)候,另外一個(gè)回答「如何看待一些大學(xué)生說(shuō) 3 天學(xué)會(huì)了 Java」也上了熱榜,當(dāng)時(shí)還截了一張圖。

幾乎一夜之間,這個(gè)回答又多了 1000 多贊,目前已經(jīng)累計(jì) 4438 贊了!五一放假前,我在公眾號(hào)同步了一波,很多讀者應(yīng)該印象深刻,同步的這篇文章閱讀也非常爆炸。
“程序員需要達(dá)到什么水平才能順利拿到 20k 無(wú)壓力”這篇回答里的內(nèi)容可能有些讀者已經(jīng)看過(guò)了,怎么辦呢?可以選擇忽略,也可以假裝自己沒(méi)看過(guò)再溫習(xí)一遍,嘿嘿??

以下是原文。
就在前天,一個(gè)讀者入職了字節(jié)跳動(dòng),拿到的薪資要比 20k 高不少。私下里,我倆交流的也很多。

說(shuō)實(shí)話,后端程序員,比如說(shuō) Java、Go、C++ 這些編程語(yǔ)言的使用者,只要能做到下面這些,拿到一二線城市超過(guò) 20K 的薪資還是不難的。
1)算法
各大公司的筆試基本都考這個(gè),《劍指 Offer》上的所有題目如果能背下來(lái),LeetCode 刷個(gè)一百到三百道題,參加過(guò) ACM 競(jìng)賽的也可以。
《劍指 Offer》,指的是《劍指 Offer:名企面試官精講典型編程題》這本書(shū),里面剖析了 50 個(gè)典型的程序員面試題,包括基礎(chǔ)知識(shí)、代碼質(zhì)量、解題思路、優(yōu)化效率和綜合能力等 5 個(gè)方面。
LeetCode,一個(gè)在線刷題網(wǎng)站,包含了海量技術(shù)面試題,包括算法、數(shù)據(jù)結(jié)構(gòu) 和 系統(tǒng)設(shè)計(jì)等 1000+ 題目,能幫助大家快速地提高編程技能,輕松拿下世界知名 IT 企業(yè)的夢(mèng)幻 Offer。
給大家推薦一份純 Java 版的 LeetCode 刷題筆記吧。作者曾給我說(shuō),刷完 100 道題之后,發(fā)現(xiàn)真的是愛(ài)上了刷題?;旧虾竺娴拿康李}都可以想出一種思路,甚至就是最優(yōu)解,還會(huì)萌生一些別人沒(méi)想到過(guò)的解法——哈哈,一種打游戲超神的感覺(jué)!
刷完 300 道 LeetCode 題后,我強(qiáng)到可以和面試官硬剛!純正 Java 版
LeetCode 上收錄了 75 道《劍指 Offer》上的技術(shù)面試考題,有位運(yùn)算、哈希表、堆、字符串、數(shù)組、查找、棧和隊(duì)列、樹(shù)、遞歸與循環(huán)、鏈表等多類(lèi)題目。
ACM 競(jìng)賽,由 ACM(AssociationforComputingMachinery,美國(guó)計(jì)算機(jī)協(xié)會(huì))組織,是世界各地計(jì)算機(jī)程序設(shè)計(jì)者大顯身手的舞臺(tái),也是世界一流大學(xué)展現(xiàn)教育成果的最佳窗口。
算法題雖然被很多人不屑,就像古代的八股文一樣,但企業(yè)都這么考,不準(zhǔn)備的話,很難不掛!
2)數(shù)據(jù)結(jié)構(gòu)
計(jì)算機(jī)存儲(chǔ)、組織數(shù)據(jù)的方式,包括數(shù)組、鏈表、棧、二叉樹(shù)、哈希表等,算法是解決問(wèn)題的方案,為數(shù)據(jù)結(jié)構(gòu)服務(wù)。算法能對(duì)數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)進(jìn)行各種處理,比如查找數(shù)組中的數(shù)據(jù),或?qū)ζ溥M(jìn)行排序等等。
在 Java 中,數(shù)據(jù)結(jié)構(gòu)一般可以分為兩大類(lèi):線性數(shù)據(jù)結(jié)構(gòu)和非線性數(shù)據(jù)結(jié)構(gòu)。哈哈,這個(gè)非字很有靈魂吧?
線性數(shù)據(jù)結(jié)構(gòu)有數(shù)組,代表作除了數(shù)組本身,還有 ArrayList;還有鏈表,代表作是 LinkedList;還有棧,遵循后進(jìn)先出的原則,也就是“Last In First Out”(簡(jiǎn)稱(chēng) LIFO)——最后的一個(gè)進(jìn)的,最先出去;還有隊(duì)列,只允許在隊(duì)尾添加數(shù)據(jù),隊(duì)首移除數(shù)據(jù)。隊(duì)列在 Java 中的出現(xiàn)頻率非常高,有各種不同的類(lèi)來(lái)滿足不同的場(chǎng)景需求。像優(yōu)先級(jí)隊(duì)列 PriorityQueue、延時(shí)隊(duì)列 DelayQueue 等等。
非線性數(shù)據(jù)結(jié)構(gòu)有樹(shù),由 n(n>0)個(gè)有限節(jié)點(diǎn)組成的一個(gè)具有層次關(guān)系的集合。之所以叫“樹(shù)”,是因?yàn)檫@種數(shù)據(jù)結(jié)構(gòu)看起來(lái)就像是一個(gè)倒掛的樹(shù),只不過(guò)根在上,葉在下;還有哈希表,也叫散列表,是一種可以通過(guò)關(guān)鍵碼值(key-value)直接訪問(wèn)的數(shù)據(jù)結(jié)構(gòu),它最大的特點(diǎn)就是可以快速實(shí)現(xiàn)查找、插入和刪除;還有圖,由頂點(diǎn)的有窮非空集合和頂點(diǎn)之間邊的集合組成,通常表示為:G(V,E),其中,G 表示一個(gè)圖,V 是圖 G 中頂點(diǎn)的集合,E 是圖 G 中邊的集合。
雖然不需要在面試官前面手推各種數(shù)據(jù)結(jié)構(gòu)的時(shí)間空間復(fù)雜度,也不需要手寫(xiě)紅黑樹(shù)、B 樹(shù)、B+ 樹(shù),最起碼要清楚 ArrayList 與 LinkedList 之間的差異,要知道 HashMap 的擴(kuò)容機(jī)制。
3)計(jì)算機(jī)組成原理
計(jì)算機(jī)是由 CPU、內(nèi)存、顯示器這些設(shè)備組成的硬件,但我們大學(xué)畢業(yè)后,往往從事的是軟件方面的開(kāi)發(fā)工作。那怎樣才能在硬件和軟件之間自由穿梭呢?答案就是學(xué)好計(jì)算機(jī)組成原理。
弄明白了計(jì)算機(jī)的組成原理,也就對(duì)整個(gè)軟件開(kāi)發(fā)有了一個(gè)系統(tǒng)的認(rèn)知,不論是計(jì)算機(jī)的硬件原理,還是軟件架構(gòu),都能很好的駕馭,隨之而來(lái)的,我們的職業(yè)發(fā)展機(jī)會(huì)也就更多了。
計(jì)算機(jī)組成原理這門(mén)課完全可以用一個(gè)詞來(lái)概括,就是“抽象”。在我看來(lái)這也是整個(gè)計(jì)算機(jī)設(shè)計(jì)中所蘊(yùn)含的的靈魂。
推薦《計(jì)算機(jī)是如何跑起來(lái)的》這本入門(mén)書(shū)。學(xué)完后,學(xué)妹再找你裝機(jī)的話,就可以輕松拿下了。
4)計(jì)算機(jī)網(wǎng)絡(luò)
當(dāng)今這個(gè)時(shí)代,沒(méi)有網(wǎng)絡(luò)簡(jiǎn)直無(wú)法生存,哪怕是在電梯里的一分鐘,我都受不了那種手機(jī)沒(méi)有網(wǎng)絡(luò)的狀態(tài)。我們所學(xué)的編程知識(shí),如果脫離了網(wǎng)絡(luò),將變得毫無(wú)意義,因?yàn)闆](méi)有哪個(gè)編程語(yǔ)言是要在單機(jī)環(huán)境下運(yùn)行的。
計(jì)算機(jī)網(wǎng)絡(luò)這門(mén)課實(shí)在是太重要,幾乎是面試必問(wèn)的內(nèi)容,什么 TCP/IP 三次握手,四次揮手,TCP 和 UDP 的區(qū)別,HTTP 協(xié)議等等。
一開(kāi)始學(xué) Java 的話,可能會(huì)覺(jué)得計(jì)算機(jī)網(wǎng)絡(luò)沒(méi)什么用武之地,等到你開(kāi)始接觸 Tomcat,接觸 Nginx,接觸網(wǎng)絡(luò)編程,比如 BIO 和 NIO,以及網(wǎng)絡(luò)編程框架 Netty,你就會(huì)感慨,要是勞資當(dāng)初把計(jì)算機(jī)網(wǎng)絡(luò)這塊的知識(shí)打牢該多好呀。
入門(mén)書(shū)有《圖解 HTTP》、《圖解 TCP/IP》、《網(wǎng)絡(luò)是怎樣鏈接的》,再深入的話推薦《計(jì)算機(jī)網(wǎng)絡(luò):自頂向下》。
5)操作系統(tǒng)
為什么要學(xué)習(xí)操作系統(tǒng)呢?
第一,面試要考;
第二,無(wú)論學(xué)習(xí)哪門(mén)子編程語(yǔ)言,比如說(shuō) Java、C/C++,都需要和操作系統(tǒng)打交道,像 Java 中的多線程技術(shù),其實(shí)是由操作系統(tǒng)來(lái)負(fù)責(zé)進(jìn)程和線程管理的;
第三,學(xué)習(xí)操作系統(tǒng),還能學(xué)到內(nèi)存分配方面的知識(shí)。
把《深入理解計(jì)算機(jī)系統(tǒng)》這本書(shū)吃了吧!Linux 的話,推薦《鳥(niǎo)哥的 Linux 私房菜》。
6)數(shù)據(jù)庫(kù)
學(xué)習(xí)一門(mén)編程語(yǔ)言,如果不去操作下數(shù)據(jù),就感覺(jué)這門(mén)編程語(yǔ)言空有皮囊卻沒(méi)有靈魂,對(duì)吧?要想學(xué)好數(shù)據(jù),首先要學(xué)習(xí)一下 SQL,推薦《SQL 必知必會(huì)》,然后是 MySQL,推薦《高性能 MySQL》。
再拓展的話,還有 Redis,互聯(lián)網(wǎng)技術(shù)領(lǐng)域中使用最廣泛的存儲(chǔ)中間件,推薦《Redis 深度歷險(xiǎn):核心原理與應(yīng)用實(shí)戰(zhàn)》。
還有 MongoDB,非關(guān)系型數(shù)據(jù)庫(kù),推薦《MongoDB權(quán)威指南》。
7)設(shè)計(jì)模式
我認(rèn)為設(shè)計(jì)模式是初中級(jí)程序員邁向高級(jí)程序員的必經(jīng)之路。有不少程序員,前期沖勁十足,但后繼乏力,都是吃了設(shè)計(jì)模式的虧。在工作的前幾年,大部分程序員都處于熟悉編程語(yǔ)言的階段,也就是處于“技”的階段,隨后就要進(jìn)入“術(shù)”的階段了。在編程領(lǐng)域,“術(shù)”的典型代表就是“設(shè)計(jì)模式”。
大家都聽(tīng)說(shuō)過(guò),學(xué)習(xí)設(shè)計(jì)模式非常的重要,那么為什么這么重要呢,設(shè)計(jì)模式到底是什么?打個(gè)比喻學(xué)編程就像學(xué)武功一樣。
武功要練得很牛逼,有兩樣?xùn)|西不能丟。第一,是內(nèi)功;第二,是武功秘籍。內(nèi)功對(duì)應(yīng)到編程就是我們編程基礎(chǔ)能力,那編程的設(shè)計(jì)模式就可以想象成武術(shù)中的武功秘籍。
推薦《設(shè)計(jì)模式之禪》,我認(rèn)為是設(shè)計(jì)模式領(lǐng)域 3 本經(jīng)典著作之一,也是我們國(guó)內(nèi)程序員寫(xiě)的一本書(shū),趣味化十足,讀起來(lái)也非常容易理解。
8)編程語(yǔ)言
這里拿 Java 為例。
第一部分,Java 基礎(chǔ)
學(xué) Java 基礎(chǔ)的話,我推薦兩本,一本《Java 核心技術(shù)卷》,一本《Head First Java》。
《Java 核心技術(shù)卷》分為上下兩冊(cè),上冊(cè)的難度較低,可以在最短時(shí)間內(nèi)刷完,尤其是有了 C語(yǔ)言的編程基礎(chǔ)后,再刷這本書(shū)可以說(shuō)是手到擒來(lái)。下冊(cè)涉及到的內(nèi)容有流與文件(☆)、XML、網(wǎng)絡(luò)(☆)、數(shù)據(jù)庫(kù)編程、國(guó)際化、Swing、AWT、JavaBean、安全(☆)、腳本編譯和注解處理、分布式對(duì)象、本地方法(☆),沒(méi)有標(biāo)星的內(nèi)容我認(rèn)為可以略過(guò)。
《Head First Java》更有趣一些,里面有很多小游戲,很活潑的一本書(shū)。
兩本書(shū)之間的風(fēng)格差別比較大,之前就有讀者給我反饋說(shuō),《Head First Java》有點(diǎn)駕馭不了,那就挑《Java 核心技術(shù)卷》。
刷完任意一本書(shū)后,可以看一看《Java 編程思想》,看自己是否能駕馭得了。因?yàn)樗枷氲臇|西嘛,只有經(jīng)過(guò)一些實(shí)踐后才能有所感悟,否則就像王陽(yáng)明一開(kāi)始對(duì)著竹子格物一樣,屁也格不出來(lái),有了后面領(lǐng)軍作戰(zhàn)的經(jīng)驗(yàn),以及到地方上體驗(yàn)艱苦生活的感受后就開(kāi)創(chuàng)了心學(xué)。
如果 Java 編程思想看起來(lái)確實(shí)比較痛苦的話,可以看一看《On Java 8》,GitHub 上有開(kāi)源的中文翻譯版,作者是同一個(gè)人。
上面提到的這 4 本書(shū)里面都還保留了圖形程序設(shè)計(jì)的內(nèi)容(AWT 和 Swing),我認(rèn)為是完全可以跳過(guò)的,希望后面出版社再版的時(shí)候能把這些內(nèi)容全部刪除,定價(jià)估計(jì)就降了,但他們不一定會(huì)這么干。
Java 是一門(mén)面向?qū)ο蟮木幊陶Z(yǔ)言,所以三大特性:封裝、繼承、多態(tài)是必須要掌握的,然后是異常處理、IO、集合和并發(fā)編程。只要這些內(nèi)容掌握了,可以說(shuō) Java 的基礎(chǔ)知識(shí)就全部掌握了。
這其中的難點(diǎn)是并發(fā)編程,我前面提到過(guò),顯然這部分內(nèi)容學(xué)起來(lái)并不容易,但卻最能考驗(yàn)一名 Java 后端工程師的功底了。怎么才能學(xué)好并發(fā)編程這塊呢?我推薦一本非常牛逼的開(kāi)源電子書(shū)《深入淺出 Java 多線程》,幾位阿里朋友寫(xiě)的,質(zhì)量非常高。
第二部分,Java Web
大部分 Java 程序員都要從事 JavaWeb 的相關(guān)開(kāi)發(fā)工作,要開(kāi)發(fā) JavaWeb,自然就離不開(kāi) Spring 的系列框架。甚至可以這么說(shuō),沒(méi)有 Spring 的 Java 項(xiàng)目是不存在的。
要學(xué)習(xí) Spring,能讀的書(shū)不多,我能想到的只有《Spring實(shí)戰(zhàn)》,坦白地說(shuō),這本書(shū)很一般,但市面上比它好的書(shū),我還不知道。學(xué)完 Spring,就要學(xué) SpringMVC,推薦大家看江南一點(diǎn)雨的視頻,在 B 站上雖然播放量不是特別大,但我覺(jué)得內(nèi)容特別棒。
然后是 MyBatis,不用找書(shū)看了,直接看官方文檔就行,講得特別好。本身 MyBatis 也沒(méi)有特別難的東西,就是一些 XML 配置和動(dòng)態(tài) SQL。
Spring+SpringMVC+MyBatis 這三個(gè)學(xué)完,可以說(shuō)你就具備了開(kāi)發(fā)企業(yè)級(jí)應(yīng)用的能力了。
然后是 Spring Boot,我推薦看大哥純潔的微笑的博客,訪問(wèn)量在千萬(wàn)級(jí)別以上,影響了無(wú)數(shù)的初學(xué)者,我個(gè)人強(qiáng)烈推薦。鏈接就不用我貼了,直接搜“Spring Boot”關(guān)鍵字就行了。
如果說(shuō)你已經(jīng)掌握了 Spring、SpringMVC、MyBatis、Spring Boot 等內(nèi)容,就有能力進(jìn)行一些真正有用的應(yīng)用項(xiàng)目開(kāi)發(fā)了,比如說(shuō)學(xué)生管理系統(tǒng)、商城系統(tǒng)、博客系統(tǒng)、秒殺系統(tǒng)等等。
如果你覺(jué)得這些系統(tǒng)無(wú)從下手的話,其實(shí)可以到 GitHub 或者碼云上去找,很快就能找到一大堆。為了節(jié)省大家的時(shí)間,我直接給大家推薦兩個(gè)。一個(gè)微人事,一個(gè) mall,可以直接到 GitHub 上搜。
第三部分,工具
工欲善其事必先利其器,掌握了下面這些工具,學(xué)習(xí)起來(lái)其他的內(nèi)容也會(huì)更加順手,不用瞎折騰。
Intellij IDEA,編寫(xiě) Java 程序的最佳 IDE,必須得掌握。GitHub 上有一本開(kāi)源的書(shū)值得推薦,大家可以去搜一下。
接下來(lái)是 Maven,可以幫助我們解決 jar 包的煩惱??础禡aven 實(shí)戰(zhàn)》就可以了。
然后是 Git,工作中是必須掌握的,看《Git 權(quán)威指南》就好了。也可以看我之前推薦的《Git Pro》,點(diǎn)擊鏈接可以在文末下載離線版。
學(xué)完上面這些內(nèi)容,大家就可以準(zhǔn)備找工作了,但在找工作之前,一定還要做兩件事。這兩件事對(duì)找到一份心滿意足的工作至關(guān)重要,缺一不可。拼命學(xué)習(xí)了這么長(zhǎng)時(shí)間,就剩下這最后兩個(gè)關(guān)鍵節(jié)點(diǎn)了,怎么能不錦上添花。
1)first blood
一定要刷面試題,做到有備而戰(zhàn)。就像打戰(zhàn)一樣,如果只是招募到兵員,卻不訓(xùn)練,上了場(chǎng),根本就不經(jīng)打,只有訓(xùn)練有素的士兵,在場(chǎng)上作戰(zhàn)的時(shí)候才能做好攻守平衡,應(yīng)付自如。
我推薦這份在 GitHub 上星標(biāo) 100k 的面試攻略,離線版已經(jīng)更新到第四版,內(nèi)容更加詳實(shí)。新增了校招/社招面試指南、程序員簡(jiǎn)歷之道這些大多數(shù)程序員在面試前比較關(guān)心的內(nèi)容。
GitHub標(biāo)星10W+,有了這份Java面試攻略,和面試官硬剛沒(méi)毛病
真的是圖文并茂,內(nèi)容也非常的全面,從 Java 基礎(chǔ)到 Java 集合,再到多線程和 JVM,還有計(jì)算機(jī)基礎(chǔ)知識(shí)和面試題~
2)double kill
一定要準(zhǔn)備一份讓面試官耳目一新的簡(jiǎn)歷,很多初學(xué)者容易忽略的一個(gè)點(diǎn)就是,隨隨便便整一份簡(jiǎn)歷,然后就開(kāi)始投遞,結(jié)果就像石沉大海一般,沒(méi)有回響。作為簡(jiǎn)歷的撰寫(xiě)者,你必須要搞清楚一點(diǎn),簡(jiǎn)歷的本質(zhì)是什么,它就是為了來(lái)銷(xiāo)售你的價(jià)值主張的。往深處說(shuō),簡(jiǎn)歷就是一塊敲門(mén)磚,它通過(guò)白紙黑字的方式告訴招聘方,我是誰(shuí),我想來(lái)貴公司擔(dān)任什么職位,我能夠完成什么樣的工作,我能夠?yàn)楣編?lái)什么價(jià)值,我期望的薪資是多少。
入職阿里后,才知道原來(lái)簡(jiǎn)歷這么寫(xiě)
對(duì)于還在校的學(xué)習(xí)編程的學(xué)弟學(xué)妹們,我還幾句掏心掏肺的話想要 BB。
01、選擇比努力更重要
大家應(yīng)該聽(tīng)過(guò)這句話,“互聯(lián)網(wǎng)時(shí)代,選擇比努力更重要?!庇谑牵蠖鄶?shù)人就在糾結(jié),到底該選擇什么才能不那么努力就輕而易舉的得到,到底選擇什么才能不后悔。
但大多數(shù)人往往會(huì)忽略一件事,說(shuō)“選擇比努力更重要”這句話的人,其實(shí)付出了很多很多常人看不到的努力。
很多人聽(tīng)說(shuō) IT 行業(yè)很吃香,于是倔強(qiáng)的選擇了 IT,這是對(duì)的,互聯(lián)網(wǎng)雖然已經(jīng)很卷了,但仍然處在蓬勃發(fā)展的階段,很多地方都充滿了機(jī)會(huì)。
我要告訴大家的是,既然選擇了,就要付出努力,不要輕言放棄。
很多事情,短時(shí)間內(nèi)都是沒(méi)有答案的,只有把時(shí)間線放得長(zhǎng)一點(diǎn),才能驗(yàn)證選擇到底是否正確。
02、編程難嗎
我妹學(xué)了有小半年的編程了,她就經(jīng)常給我抱怨,“編程太難了!”
說(shuō)句實(shí)在話,編程確實(shí)不是一件容易的事兒,我上大學(xué)那會(huì),也覺(jué)得編程難,難得想要放棄!真的,一點(diǎn)不騙大家。
現(xiàn)在不是放寒假了嘛,我就沒(méi)看見(jiàn)過(guò)我妹打開(kāi)電腦敲過(guò)代碼,每天用得最多的一個(gè)軟件,大家不用猜應(yīng)該就知道,它叫“抖音”。
抖音是一件國(guó)民級(jí)的軟件,的確給我們帶來(lái)了很多歡樂(lè)和感動(dòng),我不討厭它也不喜歡它,因?yàn)閷?duì)于那些自制力差的人來(lái)說(shuō),抖音悄無(wú)聲息地就把他們的時(shí)間消耗殆盡。
卡耐基的《人性的弱點(diǎn)》里闡述了一個(gè)發(fā)人深省的觀點(diǎn):
99% 的情況下,不管犯下多么嚴(yán)重的錯(cuò)誤,人們都會(huì)優(yōu)先歸咎于他人。
例子我就不再舉了,我也有過(guò)這樣的想法。一開(kāi)始學(xué)編程很難,于是同學(xué)們不約而同地都把責(zé)任歸咎到了老師那邊,認(rèn)為是老師自己學(xué)藝不精,所以才沒(méi)辦法把我們教好。
但事實(shí)上,這就是人性的弱點(diǎn),我們都在想方設(shè)法地為自己找借口,找一個(gè)看起來(lái)很合理的接口。
編程難不難,我估計(jì)沒(méi)人敢說(shuō)容易,哪怕是出了名的大佬們。可正因?yàn)殡y,才有價(jià)值,不是嗎?因?yàn)殡y,就不學(xué)了嗎?
03、努力就真的能成功嗎
答案也顯而易見(jiàn),“不一定?!?/p>
我每周會(huì)去三次健身房,每次都會(huì)見(jiàn)到一個(gè)人,他的肚子好像一直就那么大。他沒(méi)有請(qǐng)私人教練,也沒(méi)有練習(xí)器械,單純的就是在跑步機(jī)上慢走,走大概 20 分鐘左右。
在我看來(lái),他很努力也很自律,然而這樣的努力,往往收不到任何的效果。
這也就是為什么,常常有人會(huì)抱怨,“為什么那誰(shuí)誰(shuí)誰(shuí)努力了就成功了,而我沒(méi)有呢!”
每天把輸出“hello world”的程序敲上一百遍,堅(jiān)持一百天,這樣學(xué)編程的話,效果可想而知,是學(xué)不好的。努力,并不是不斷地做重復(fù)性的工作。
真正的努力,需要花費(fèi)足夠多的時(shí)間,并且要不斷的尋求突破。
就拿學(xué)習(xí) Java 來(lái)說(shuō)吧,一開(kāi)始可能要先學(xué)習(xí) C 語(yǔ)言,打下堅(jiān)實(shí)的基礎(chǔ),如果沒(méi)有學(xué)的話,直接開(kāi)始學(xué) Java 也行,但以后有時(shí)間的話,還是要補(bǔ)一補(bǔ)的,好處很多。從 Java 基礎(chǔ)知識(shí),到面向?qū)ο缶幊?,到網(wǎng)絡(luò)編程,到多線程并發(fā),到 Java 虛擬機(jī),到性能優(yōu)化。
這一條線下來(lái),還不夠。還要學(xué)習(xí)工具,比如說(shuō) IDE、Git、Maven;還要學(xué)習(xí)框架,比如說(shuō) Spring、MyBatis、Spring Boot;還要學(xué)習(xí)數(shù)據(jù)庫(kù),比如說(shuō) MySQL、Redis 等等。
04、目標(biāo)如何定
對(duì),我們常說(shuō),做任何事情之前,都要先定個(gè)目標(biāo),這樣做起事情來(lái)就有了動(dòng)力,不至于漫無(wú)目的。
但,如果做什么事情都奔著一個(gè)目標(biāo)去,會(huì)感覺(jué)很累,累到有時(shí)候你會(huì)喪失信心。
我們可以把“我要學(xué)好編程”作為目標(biāo),也可以把這個(gè)目標(biāo)簡(jiǎn)單做下拆分,比如說(shuō)先入門(mén)再進(jìn)階,然后再拓展。更甚至,可以抱著一種“玩一玩”的心態(tài),也沒(méi)什么大不了的。
我喜歡看王小波的書(shū),但一開(kāi)始,我并不知道有王小波這個(gè)人,而在通過(guò)一個(gè)叫《一個(gè)人的書(shū)房》的播客節(jié)目了解到的。這個(gè)播客里提到了《沉默的大多數(shù)》,于是我就買(mǎi)來(lái)讀了讀,覺(jué)得有趣得不得了,然后我就又買(mǎi)了時(shí)代三部曲,然后就讀啊讀。
等到我要寫(xiě)作的時(shí)候,莫名其妙地,就受到了王小波的影響,寫(xiě)出來(lái)的文字就帶有一些“幽默風(fēng)趣”在里面。
但如果一開(kāi)始,我是抱著一種我要把文章寫(xiě)得有趣,再去讀王小波的作品的話,沒(méi)準(zhǔn)我會(huì)讀得很困難,因?yàn)槲铱赡軙?huì)靜不下心來(lái),我想從書(shū)里面挖掘“有趣”,可能就失去了閱讀的興趣。
同樣的,如果我們抱著一種“玩一玩”的心態(tài)來(lái)學(xué)習(xí)編程的話,沒(méi)準(zhǔn)真能把編程學(xué)好。但如果我們抱著一種“我一定要把編程學(xué)好”這種心態(tài)的話,沒(méi)準(zhǔn)在遇到困難的時(shí)候就放棄了,因?yàn)槲覀兌ㄏ聛?lái)的目標(biāo)很難完成,以至于我們有一種負(fù)罪感,這種學(xué)習(xí)狀態(tài)下,學(xué)好是一件很難的事,學(xué)不好倒是一件很容易的事。
把目標(biāo)降到最低,也是為什么我們?cè)趯W(xué)習(xí)一門(mén)編程語(yǔ)言的時(shí)候要敲“hello world”的原因。
OK,這以上這些事情準(zhǔn)備充足了,就大膽地往前沖吧,相信我,就像我的那個(gè)讀者一樣,你也一定能找到一份滿意的工作,20K+ 的工作等著你。
如果沒(méi)記錯(cuò)的話,程序員需要達(dá)到什么水平才能順利拿到 20k 無(wú)壓力這個(gè)問(wèn)題上過(guò)一次知乎熱榜,應(yīng)該是@編程指北帶火的,目前已經(jīng)累計(jì) 1,735,220 次閱讀了,大家有時(shí)間的話,還是應(yīng)該去看一看那些高贊的回答。
我平常遇到學(xué)習(xí)上的問(wèn)題時(shí),也經(jīng)常去知乎上搜,有些大佬的回答還是非常肝的,比如說(shuō)@沈世鈞老師,@R 大,能學(xué)到很多。
如果你直接搜“Java”關(guān)鍵字的話,應(yīng)該也能看到我很多高贊的回答,有些回答的排名還是挺靠前的。
大家可以點(diǎn)擊「原文鏈接」查看我的知乎主頁(yè),可以按照贊數(shù)進(jìn)行一個(gè)排序,把高贊的回答過(guò)一遍,我相信,不管你是在校大學(xué)生還是剛參加工作的新人,都有很大的收獲。
我是二哥,我們下期見(jiàn)~
