学习的三个步骤:WHAT、HOW、WHY
本文讨论的是指当你选定了一个技术方向之后,该如何学习。
我把学习归类为三个步骤:What、How、Why。
第一步 What
所谓的“What”,就是“what is it”,这是最基础的层次,在这一个层次,你要搞清楚要学习的这个技术是什么样子的?可以用来做什么?有哪些特性?……
举个栗子:
对于学习MySQL,大部分人都能够掌握基本的SQL语法,然后用它写一些CRUD。
由于这个步骤是最基本的,所以必须要完全掌握。但是光光会What还是远远不够的。
第二步 How
“How”即是“How to do”,在这个层次,你需要弄清楚这个技术,内部是如何运作的?如何实现的?
举个例子:
还是学习MySQL,你要弄清楚MySQL索引是如何实现的?MVCC的实现机制?......
在这个阶段,你必须多想想类似这些问题,然后通过各种途径,把问题彻底搞清楚,自然而然的达到了知其然,知其所以然的状态。
第三步 Why
一般来说,只有想清楚 HOW 之后,才能继续去考虑 WHY。
所谓的“WHY”,就是搞清楚某个东西为什么设计成这样?为什么不是另外的样子?这样的设计有什么讲究?……
说实在的,善于问“为什么”有一定的天赋成分?好像某个科学大牛曾经说过“提出问题有时候比解决问题更难”。一般来说,只有当你深刻理解了某个东西,才能够针对这个东东的设计问出一些问题。所以,我前面强调过,要先把 HOW 的问题搞清楚,再来考虑 WHY 的问题。
举个例子:
对于MySQL,为什么要用B+树作为底层存储结构?为什么要引入Redolog机制?......
如果你能够自己问出诸如上述的“为什么”问题,并且能够通过各种途径做出解答,那么你基本上已经吃透这个技术了,并且你有可能已经有能力设计出一个类似的项目了。
本文由作者按照 CC BY 4.0 进行授权