之前自己總結(jié)過一套學(xué)習(xí)的方法論。
初識(shí):簡(jiǎn)單了解是什么,簡(jiǎn)單的原理。 實(shí)踐了解:使用它,踩坑,不斷踩坑,積累一定實(shí)戰(zhàn)經(jīng)驗(yàn)。深入學(xué)習(xí):再次深入學(xué)習(xí)原理,甚至源碼,就更容易理解,能結(jié)合自己的實(shí)戰(zhàn)經(jīng)驗(yàn)來學(xué)習(xí)了。
今天在極客時(shí)間讀丁奇的《MySQL實(shí)戰(zhàn)45講》中的第一篇文章,看到了丁奇的學(xué)習(xí)的方法論。他的方法論與我自己總結(jié)的不同。他的是“原理先行,再實(shí)踐驗(yàn)證”,更注重原理。而我的更注重實(shí)踐,希望是先實(shí)踐,對(duì)一個(gè)事物有了基本的了解以后,再去深探其原理。

他的總結(jié)如下:
為什么要了解我們所使用的事物的背后原理?包括mysql,redis,dubbo,qmq,http等等。
“當(dāng)時(shí),我自己的感覺是,即使我只是一個(gè)開發(fā)工程師,只是 MySQL 的用戶,在了解了一個(gè)個(gè)系統(tǒng)模塊的原理后,再來使用它,感覺是完全不一樣的。當(dāng)在代碼里寫下一行數(shù)據(jù)庫(kù)命令的時(shí)候,我就能想到它在數(shù)據(jù)庫(kù)端將怎么執(zhí)行,它的性能是怎么樣的,怎樣寫能讓我的應(yīng)用程序訪問數(shù)據(jù)庫(kù)的性能最高。進(jìn)一步,哪些數(shù)據(jù)處理讓數(shù)據(jù)庫(kù)系統(tǒng)來做性能會(huì)更好,哪些數(shù)據(jù)處理在緩存里做性能會(huì)更好,我心里也會(huì)更清楚。在建表和建索引的時(shí)候,我也會(huì)更有意識(shí)地為將來的查詢優(yōu)化做綜合考慮,比如確定是否使用遞增主鍵、主鍵的列怎樣選擇,等等?!?/p>從理論到實(shí)戰(zhàn)的系統(tǒng)性學(xué)習(xí),可以讓學(xué)習(xí)的速度更快。
“所以,在回顧這個(gè)過程的時(shí)候,我的第一個(gè)感受是,如果一開始就有一些從理論到實(shí)戰(zhàn)的系統(tǒng)性指導(dǎo),那該多好啊,也許我可以學(xué)習(xí)得更快些?!?/p>事實(shí)證明,了解理論是多么重要!
“在過去的七年里,我?guī)н^十幾個(gè)應(yīng)屆畢業(yè)生,看著他們成長(zhǎng),要求他們?cè)硐刃?,再?shí)踐驗(yàn)證。幾年下來,他們的成長(zhǎng)速度都很快,其中好幾個(gè)畢業(yè)沒兩年就成為團(tuán)隊(duì)的骨干力量了。我也在社招的時(shí)候面試過很多有著不錯(cuò)的運(yùn)維實(shí)踐經(jīng)驗(yàn)和能力的候選人,但都因?yàn)閷?duì)數(shù)據(jù)庫(kù)原理僅有一知半解的了解,而最終遺憾地沒有通過面試?!?/p>
之所以貼上丁奇的原話,是因?yàn)檫@些話對(duì)我的觸發(fā)很大。
首先,我一直認(rèn)為了解一個(gè)事物的背后原理很重要,但是我卻舉不出特別實(shí)際的例子來。只能舉出,比如不懂?dāng)?shù)據(jù)庫(kù)主從的原理,你就不知道數(shù)據(jù)庫(kù)主從所帶來的問題。而丁奇以一個(gè)開發(fā)者的角色,詳細(xì)的描述了,懂MySQL原理后所帶來的收益是什么。
再者,我之前的學(xué)習(xí)方法論,有種實(shí)踐大于理論的感覺??偣灿腥齻€(gè)階段:初識(shí)(簡(jiǎn)單的原理),深入了解(實(shí)踐,踩坑),深入學(xué)習(xí)(理論結(jié)合實(shí)踐)。 現(xiàn)在想來,實(shí)踐和理論是不能分開的。我們學(xué)習(xí)任何事物,都是由淺入深的學(xué)習(xí)。整個(gè)過程,應(yīng)該都是原理指導(dǎo)實(shí)踐,對(duì)實(shí)踐總結(jié)沉淀。淺時(shí)有淺時(shí)的原理和實(shí)踐,深入時(shí)有深入時(shí)的原理和實(shí)踐。