程序員能力不足,四天時間狂補(bǔ)計(jì)算機(jī)基礎(chǔ)知識!竟直呼過癮
最近我在狂補(bǔ)計(jì)算機(jī)基礎(chǔ)知識,感覺有點(diǎn)上癮!以前覺得很枯燥的知識,現(xiàn)在竟然有點(diǎn)香!不知道為什么。
我算是科班出身,大學(xué)的專業(yè)就是計(jì)算機(jī)網(wǎng)絡(luò),不過老實(shí)說,在實(shí)際的開發(fā)中,大學(xué)的很多課程,要么“用處”不大,要么可以換個方式,更高效的學(xué)習(xí)。
其中的原因,一方面是實(shí)際開發(fā)更關(guān)注知識的“實(shí)用”,另外一方面,大學(xué)的教學(xué)確實(shí)和產(chǎn)業(yè)有些脫鉤。所以我就從實(shí)際應(yīng)用的角度出發(fā),重新來梳理一下計(jì)算機(jī)基礎(chǔ)方面的知識。

01、數(shù)據(jù)結(jié)構(gòu)
毫無疑問,數(shù)據(jù)結(jié)構(gòu)對一名程序員來說非常重要,還是那句話?程序=數(shù)據(jù)結(jié)構(gòu)+算法?,這種說法無論放在什么時候都是成立的。
大部分的數(shù)據(jù)結(jié)構(gòu)課程,關(guān)注的重點(diǎn)都在如何從數(shù)學(xué)上實(shí)現(xiàn)一個數(shù)據(jù)結(jié)構(gòu),但在實(shí)際開發(fā)中,大部分主流語言都已經(jīng)內(nèi)置了常見的數(shù)據(jù)結(jié)構(gòu),比如說 Java。也就是說,對于大部分程序員來說,實(shí)際開發(fā)中,很難有需求要從零開始實(shí)現(xiàn)一個數(shù)據(jù)結(jié)構(gòu)。因此我們只需要做到下面幾點(diǎn)。
1、熟悉常見數(shù)據(jù)結(jié)構(gòu)的概念,比如說數(shù)組、堆棧、鏈表、哈希表等。
2、了解常用數(shù)據(jù)結(jié)構(gòu)之間的差異,比如說?ArrayList 和 LinkedList?,我在之前的文章中有詳細(xì)說明過,可以點(diǎn)擊鏈接去查看下。
3、關(guān)注常用數(shù)據(jù)結(jié)構(gòu)的外圍算法,比如說如何對 List 和 Map 進(jìn)行查找。
4、關(guān)注數(shù)據(jù)結(jié)構(gòu)使用中容易出錯的地方,比如說線程是否安全等。
...

02、算法
以我接觸的領(lǐng)域來說,大部分普通的業(yè)務(wù)系統(tǒng)都不會涉及到太復(fù)雜的算法,因此我沒有在算法上投入過多時間。
但如果你在一些特殊的領(lǐng)域,如果算法跟不上,可以說是“寸步難行”,比如說圖形處理領(lǐng)域,無論是圖像的變化還是增強(qiáng),無一例外都要用到矩陣變換,因此就必然涉及到線性代數(shù)的內(nèi)容,再往深處學(xué)的話,必然會牽扯出更多的知識。
所以學(xué)習(xí)算法要視情況而定,如果想走算法崗,那么《算法第4版》、《算法導(dǎo)論》、《數(shù)學(xué)之美》、《編程珠璣》、《劍指offer》這些書都要耐著性子啃一啃。
03、設(shè)計(jì)模式
我認(rèn)為設(shè)計(jì)模式是初中級程序員邁向高級程序員的必經(jīng)之路。有不少程序員,前期沖勁十足,但后繼乏力,都是吃了設(shè)計(jì)模式的虧。
在工作的前幾年,大部分程序員都處于熟悉編程語言的階段,也就是處于“技”的階段,隨后就要進(jìn)入“術(shù)”的階段了。在編程領(lǐng)域,“術(shù)”的典型代表就是“設(shè)計(jì)模式”。
我自己推薦的一本書是《設(shè)計(jì)模式之禪》,代碼是用 Java 實(shí)現(xiàn)的,讀起來比較輕松,也更符合國內(nèi)程序員的閱讀習(xí)慣。

04、軟件工程
實(shí)現(xiàn)一個軟件系統(tǒng)的過程,不僅只有編碼,還涉及到項(xiàng)目安排,團(tuán)隊(duì)協(xié)調(diào)等一系列非技術(shù)因素,如果想從一名程序員走向管理崗,成為 team leader 或者開發(fā)經(jīng)理,軟件工程方面的知識就必須得跟得上。
這里我推薦幾本不錯的經(jīng)典書,其中有一本鄒欣老師的書,他剛出任 CSDN 副總裁,希望 CSDN 能在他的入駐后變得更好一些。他這本書的書名叫做《構(gòu)建之法》,我看過,還是很不錯的。

另外還有兩本必讀,就是《人月神話》和《人件》,雖然有了歲月的痕跡,但依然值得深讀。當(dāng)然,關(guān)于軟件工程,最好的學(xué)習(xí)方法是觀察,觀察你所在的團(tuán)隊(duì)是如何處理工程問題的,然后思考,最終形成自己的方法觀。
05、架構(gòu) & 設(shè)計(jì)
要想寫出一個好而美的程序,需要經(jīng)過三個階段。
第一階段,有扎實(shí)的基本功,簡單點(diǎn)說,就是要做到語法熟練、框架熟練,成為一名能夠完成開發(fā)任務(wù)的“碼農(nóng)”。
第二階段,從“碼農(nóng)”到“工程師”,在局部上,不僅要能夠?qū)崿F(xiàn)功能,還能關(guān)注功能之外的維度,比如健壯性、低耦合、可擴(kuò)展等指標(biāo)。
第三階段,從“工程師”到“架構(gòu)師”,不僅在局部上追求一個模塊的好壞,而且還要從整個系統(tǒng)層面去掌控,合理安排資源的優(yōu)先級,保證整個系統(tǒng)不會出現(xiàn)腐敗等等。

要想成為一名優(yōu)秀的架構(gòu)師,除了自身的努力,也需要一點(diǎn)點(diǎn)運(yùn)氣,但靠讀書可能不夠,但這些經(jīng)典書籍還是要閱讀的,能給日常的工作帶來巨大的幫助。
《代碼大全》
《重構(gòu):改善既有代碼的設(shè)計(jì)》
《設(shè)計(jì)原本》
《大型網(wǎng)站技術(shù)架構(gòu)核心原理與案例分析》
最后
技術(shù)這條道路并不好走,不僅要學(xué)習(xí)很多新技術(shù)、新框架,還要及時補(bǔ)充必要的計(jì)算機(jī)基礎(chǔ)知識,底子硬的同時還要學(xué)會擁抱變化。
學(xué)習(xí)的過程,就好像登山一樣,大概有 80% 的人在這個過程中會掉隊(duì)。那么請相信我,只要目標(biāo)明確,努力加上堅(jiān)持,再加上一點(diǎn)點(diǎn)好運(yùn)氣,你就能登頂!
文章來源微信公眾號丨沉默王二,希望能夠幫到你!我要發(fā)個炸彈去。.
如果你想更好的提升你的編程能力,進(jìn)入到百度騰訊等大廠工作,好好學(xué)習(xí)C/C++編程知識成為高薪軟件開發(fā)工程師的話!那么你很幸運(yùn)~

UP在主頁上傳了一些學(xué)習(xí)C/C++編程的視頻教程,有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會對你有幫助的~
分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!
編程學(xué)習(xí)書籍:

編程學(xué)習(xí)視頻:
