去年寫(xiě)了一篇文章《一個(gè)工作3~4年程序員的年度學(xué)習(xí)計(jì)劃》,里面列出了一些計(jì)劃閱讀的書(shū)目。一年過(guò)去了,進(jìn)度很一般。不過(guò)也許這個(gè)計(jì)劃本身就有問(wèn)題。
今天看了李開(kāi)復(fù)發(fā)的一篇微博,很有感慨:
“天下古今之庸人,皆以一惰字致敗。天下古今之才人,皆以一傲字致敗。 -- 曾國(guó)藩”
我是一個(gè)庸人,去年浪費(fèi)了很多的時(shí)間,今年要更加努力的學(xué)習(xí)了。
回到今天的正題。去年以及前些時(shí)候?yàn)榱宋业膶W(xué)習(xí)計(jì)劃倒是收集了很多書(shū)目,同時(shí)我也負(fù)責(zé)我們研發(fā)部門(mén)買(mǎi)書(shū),所以買(mǎi)了很多非常好的書(shū),今天和大家分享。
<!--[if !supportLists]-->1、 <!--[endif]-->C語(yǔ)言提升
《c和指針》
《c缺陷和陷阱》
《c專(zhuān)家編程》
這三本書(shū)我在很多的文章中都提過(guò),是一個(gè)初級(jí)C程序員必看的三本書(shū),同時(shí)也是我們公司應(yīng)屆新員工必須好好學(xué)習(xí)的教材,非常適合剛畢業(yè)的大學(xué)生學(xué)習(xí)。
<!--[if !supportLists]-->2、 <!--[endif]-->C++語(yǔ)言提升
Effective C++:改善程序與設(shè)計(jì)的55個(gè)具體做法》
《More Effective C++:35個(gè)改善編程與設(shè)計(jì)的有效方法(中文版)》
《C++沉思錄》
《C++Templates中文版》
《深度探索 C++ 對(duì)象模型》
《泛型編程與STL》
我是一個(gè)由C轉(zhuǎn)向C++的程序員,所以從來(lái)沒(méi)有系統(tǒng)的學(xué)習(xí)過(guò)C++的語(yǔ)法,往往是用到的什么學(xué)習(xí)什么。如果要系統(tǒng)入門(mén),《C++ primer》倒是不錯(cuò)。上面的幾本書(shū),我正在讀的是第一本,打算這兩個(gè)月可以學(xué)完《effective c++》和《more effective c++》,之后再更深一步學(xué)習(xí)。當(dāng)然,這里的學(xué)完只是把書(shū)看完,做個(gè)筆記,要完全的理解書(shū)中的內(nèi)容還需要進(jìn)一步的實(shí)踐。
<!--[if !supportLists]-->3、 <!--[endif]-->設(shè)計(jì)類(lèi)
《代碼大全》:這是我非常喜歡的一本書(shū),非常適合工作2~3年的人精讀。我在一篇文章中專(zhuān)門(mén)做過(guò)推薦。
《重構(gòu)-改善既有代碼的設(shè)計(jì)》
《代碼整潔之道》
《實(shí)現(xiàn)模式》
《程序員應(yīng)該知道的97件事》
這幾本書(shū)一般講的是函數(shù)以及更低層次的設(shè)計(jì)。《代碼大全》完完整整的讀完過(guò),而且做了很多的筆記,獲益良多。《重構(gòu)》就不必說(shuō)了,其他幾本書(shū)前面大致看了一下,也非常不錯(cuò),計(jì)劃有時(shí)間要好好學(xué)習(xí)一下。
<!--[if !supportLists]-->4、 <!--[endif]-->架構(gòu)
《軟件體系結(jié)構(gòu)的藝術(shù)》
《領(lǐng)域驅(qū)動(dòng)設(shè)計(jì):軟件核心復(fù)雜性應(yīng)對(duì)之道》
《軟件架構(gòu)師應(yīng)該知道的97件事》
《企業(yè)應(yīng)用架構(gòu)模式》
《面向模式的軟件體系結(jié)構(gòu)卷1:模式系統(tǒng)》
《軟件架構(gòu)設(shè)計(jì)》
《架構(gòu)師需要知道的97件事》
我對(duì)這一塊比較陌生,這也是我今年的學(xué)習(xí)重點(diǎn)?!盾浖軜?gòu)設(shè)計(jì)》這本書(shū)我從頭到尾讀過(guò),對(duì)軟件架構(gòu)也只是建立了一個(gè)整體的印象。后面這一塊的學(xué)習(xí)我會(huì)和模式的學(xué)習(xí)結(jié)合起來(lái)。首先的學(xué)習(xí)目標(biāo)是《面向模式的軟件體系結(jié)構(gòu)卷1》,之后是《分析模式》《企業(yè)應(yīng)用架構(gòu)模式》《領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)》。
<!--[if !supportLists]-->5、 <!--[endif]-->敏捷開(kāi)發(fā)
《測(cè)試驅(qū)動(dòng)開(kāi)發(fā)》
《敏捷軟件開(kāi)發(fā)——原則、模式與實(shí)踐》
《Scrum敏捷項(xiàng)目管理》
《硝煙中的Scrum和XP——我們?nèi)绾螌?shí)施Scrum》
《敏捷軟件開(kāi)發(fā)》這本書(shū)我學(xué)習(xí)了“原則”這部分,對(duì)敏捷軟件開(kāi)發(fā)有一個(gè)大致的了解。其他的書(shū)籍對(duì)我更像一個(gè)參考書(shū)。目前還無(wú)法安排出大量時(shí)間系統(tǒng)學(xué)習(xí)。
<!--[if !supportLists]-->6、 <!--[endif]-->模式
《Java與模式(含盤(pán))》
《實(shí)現(xiàn)模式》
《企業(yè)應(yīng)用架構(gòu)模式》
《分析模式 可復(fù)用的對(duì)象模型》
《反模式:危機(jī)中軟件、架構(gòu)和項(xiàng)目的重構(gòu)》
《設(shè)計(jì)模式》
《面向模式的軟件體系結(jié)構(gòu)卷1:模式系統(tǒng)》
上面講架構(gòu)的時(shí)候說(shuō)過(guò),模式的學(xué)習(xí)要和架構(gòu)結(jié)合起來(lái)。當(dāng)然,這是說(shuō)的更高層次:架構(gòu)的模式?!秾?shí)現(xiàn)模式》是面向函數(shù)的,《設(shè)計(jì)模式》是面向?qū)ο篌w系的。《設(shè)計(jì)模式》我從頭到尾看過(guò),但是還需要在看一遍,當(dāng)時(shí)讀的時(shí)候經(jīng)驗(yàn)有限,理解的不是很透徹?,F(xiàn)在看肯定會(huì)有新的收獲。
<!--[if !supportLists]-->7、 <!--[endif]-->思想類(lèi)
《變革中的思索——張亞勤解碼創(chuàng)新》
《技術(shù)領(lǐng)導(dǎo)之路——全面解決問(wèn)題的途徑》
《創(chuàng)新贏(yíng)天下:九大商界領(lǐng)袖談創(chuàng)新》
《軟件隨想錄:程序員部落酋長(zhǎng)Joel談軟件》:這本書(shū)里面的文章都非常不錯(cuò)。
《華為研發(fā)》:把它放在這里似乎有些不妥。
《黑客與畫(huà)家》
《UNIX編程藝術(shù)》
《代碼之道》
這些書(shū)可以鍛煉一下思想力。我比較喜歡的是《軟件隨想錄》和《代碼之道》,比較期待的是《黑客與畫(huà)家》。
<!--[if !supportLists]-->8、 <!--[endif]-->之美系列
《團(tuán)隊(duì)之美》
《架構(gòu)之美》
《代碼之美》
這三本書(shū)都是選擇一個(gè)主題,然后找一些世界級(jí)專(zhuān)家來(lái)按照這個(gè)主題寫(xiě)一篇文章,所以這幾本書(shū)的系統(tǒng)性不強(qiáng)(但并不代表書(shū)不好)。可以把它放在手邊,有時(shí)間就讀一章,和大師對(duì)對(duì)話(huà)。
<!--[if !supportLists]-->9、 <!--[endif]-->開(kāi)發(fā)語(yǔ)言
《PHP 6與MySQL 5基礎(chǔ)教程》
《PHP與MySQL程序設(shè)計(jì)(第3版)》
《Ruby for Rails 中文版》
我的第一工作語(yǔ)言是c/c++,第二工作語(yǔ)言是python,業(yè)余時(shí)間工作語(yǔ)言是PHP。上面的書(shū)還少python相關(guān)圖書(shū),正在補(bǔ)充,也正在學(xué)習(xí)。
10、linux/unix
《深入理解LINUX內(nèi)核》
《深入Linux內(nèi)核架構(gòu)》
《UNIX環(huán)境高級(jí)編程》
《Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)》
《鏈接器和加載器》
《Linux高級(jí)程序設(shè)計(jì)》
《ARM嵌入式系統(tǒng)開(kāi)發(fā):軟件設(shè)計(jì)與優(yōu)化》
《UNIX編程藝術(shù)》
這些書(shū)大多是我的一些參考書(shū),《UNIX編程藝術(shù)》除外,它是一本很特別的書(shū),值得好好閱讀一下。
另外,我一直想抽時(shí)間研究一下linux內(nèi)核。
11、管理類(lèi)
《卓有成效的管理者(典藏版)》
《管理的實(shí)踐(珍藏版)》
《高效程序員的45個(gè)習(xí)慣:敏捷開(kāi)發(fā)修煉之道》
《卓有成效的管理者(典藏版)》這本書(shū)我從頭到尾讀過(guò),也做過(guò)筆記,這是一本非常好的書(shū)。
12、算法
《算法導(dǎo)論》
《編程珠璣》
這可以說(shuō)是我的軟肋。第一本書(shū)看不懂,第二本書(shū)還沒(méi)有看。要努力啊。
上面的分類(lèi)是我大致的劃分,可能不夠科學(xué)。但是用來(lái)組織我的書(shū)單應(yīng)該綽綽有余。
另外,上面的書(shū),有很多內(nèi)容可能會(huì)重復(fù),這需要讀的時(shí)候自己根據(jù)具體情況取舍了。也可能有些書(shū)買(mǎi)不到,不過(guò)應(yīng)該可以找到電子書(shū)。
最后,說(shuō)一下我對(duì)讀書(shū)的一些看法:
<!--[if !supportLists]-->1、 <!--[endif]-->有些書(shū)必須要精讀,而精讀的時(shí)候,必須要做筆記。
<!--[if !supportLists]-->2、 <!--[endif]-->選擇讀書(shū)的時(shí)機(jī)也很重要,如果你沒(méi)有一定的實(shí)踐和基礎(chǔ),讀一些書(shū)可能是一件非常痛苦的事情。這個(gè)時(shí)候,要停下了。如果你對(duì)某方面的知識(shí)有非常強(qiáng)烈的渴望或需求,這個(gè)時(shí)候是最好的時(shí)機(jī)。
<!--[if !supportLists]-->3、 <!--[endif]-->開(kāi)發(fā)實(shí)踐過(guò)程中的學(xué)習(xí)效果最好。
4、 專(zhuān)注。分為兩個(gè)層面。第一個(gè)層面是要在一個(gè)大段的時(shí)間(比如90分鐘)內(nèi)專(zhuān)注,這樣可以提高學(xué)習(xí)工作效率;第二個(gè)層面是長(zhǎng)期的專(zhuān)注,及在一個(gè)長(zhǎng)的時(shí)期內(nèi)(比如,一個(gè)季度,一年)要專(zhuān)注于某一領(lǐng)域,這樣才能才能在某一領(lǐng)域內(nèi)有積累和突破,不至于淪落為事事皆知但事事不精的泛泛之輩。我目前專(zhuān)注學(xué)習(xí)的是c++,之后是模式與架構(gòu)。
5、在專(zhuān)注的基礎(chǔ)上擴(kuò)大自己的知識(shí)面,要了解當(dāng)前IT技術(shù)正在發(fā)生哪些變化。
要做個(gè)“T”型IT人:既有深度,又有廣度。