以前太简单,太SB。认为学会使用一个工具就好了,干嘛非得了解这个工具是怎么构建的,理解他的原理呢?
有段时间我想通了,但没有记录下来。许多事情运作的原理是相似的,举个车的例子吧。
汽车是一个工具,你努力学会了开车,你开车上路的时候,兴奋的不得了,开车上路了,感觉还不错,你飚到了200码,简直爽翻了。有一天,你的车子在路上抛锚了,但是你不了解汽车是怎么运作的,你也不会修车呀,只能打个电话联系修车厂,把你的车子运回去。但是,这个修车厂的效率太低了,修的很慢,你还想到,万一你在沙漠里面开车子,找不到修车厂怎么办?所以,你学了汽车的一些原理,了解了构造,跟着学修车,有一天你出师了,汽车常见的问题,你基本可以解决了。这下把你乐坏了,开车去旅行,出了山海关,东北溜一圈,一路上各种小问题你都解决了。但你还是发现了很多问题,比如车子在雪地上跑的不行,上坡时也比较吃力。你觉得你必须学习改造这个车子了,在不同的环境下,让他发挥最好的性能。掌握了改造技术,进入内蒙古改造车子,让它在草原上飞起,到沙漠地带,你又改造车子,沙漠驰骋。这一路上,你看了许多美景,也学会了,开车、修车、改造车。
以上故事,纯属瞎BB,如有雷同,纯属巧合。
对我们使用的库、包、框架而言,他们也是工具,编程语言也是工具,服务器、PC、手机等等,都是工具。
有些东西你需要掌握使用它的常用功能。但有些,需要你去改造它,让它适应不同的场景需求。所以我觉得,对于一门工具,应当有以下几个境界:
- 掌握常用功能。
- 见识一些奇淫巧计。
- 掌握工具架构(骨骼)。
- 洞察工具血肉。
- 根据场景需求定制工具。