对自己狠一点,开始写作吧

513 阅读5分钟
原文链接: mp.weixin.qq.com

我时常会有这样的感觉: 自己心里觉得对一个技术点已经掌握了, 但是当我试图给别人讲述的时候,发现并不能轻松自如、深入浅出地讲出来。

这就说明了一个问题: 自认为掌握了,其实并没有真正地掌握, 大脑只是对这个技术建立了一个整体的概念,在一些细节处做了想当然的假设,等到你用语言再来表达的时候发现,哦, 原来这个假设并不完全成立,是有问题的。

在学习吸收率金字塔中, “转教别人(Teach others)”属于主动学习, 效率是最高的。 但是在工作和生活当中, 你是很少有机会去给别人讲授的。

那怎么办? 总不能拉着你正忙着的同事说: 哥们, 来, 我刚学了CQRS,我给你讲讲吧。

也许你的同事很有礼貌, 耐着性子听你磕磕碰碰地讲完了,然后不知所云, 前几次还行,次数多了,就对你敬而远之。

既然没法给别人讲,那就退而求其次吧, 把自己的理解写出来。

当然不是泛泛地记流水账,或者把几个孤立的点罗列在那里, 而是要把思路理清楚, 尤其是要写出为什么要有这个技术?这个技术解决了什么问题,然后才是这个技术是怎么使用的。 

当你逼着自己去回答这些问题的时候,很快就会发现,自己的理解还不够,还需要查找更多的资料。

在你通过google找资料的时候, 你会发现,哎呀,网上的这些文章怎么这么差劲,重复的内容这么多, 大部分都是复制、粘贴。大部分都是在讲述怎么使用, 对于“为什么” 从来都是只字不提,或者犹抱琵琶半遮面 , 羞羞答答的不说出来。

这个整理资料和思考的过程是很珍贵的, 这样才能把信息变成你自身的知识。

如果实在搞不定,就带着问题去论坛提问,去QQ群发言,找大牛请教, 总是可以解决的。

举个例子,你接触到了一个新的知识点: Java 动态代理。

你也看了书或视频中的代码,知道了这个技术是怎么使用的,接下来想要写篇文章, 首先要努力阐明的问题就是“为什么要用Java 动态代理”?   这玩意儿到底要干嘛? 我已经知道了它能够对一个类进行增强, 还是在运行时做的增强, 但是增强一个类有什么用处?

我完全可以新写一个类对原有的类做增强啊? 为什么要在运行时做呢?

如果你顺着这个思路挖掘下去,会在通道的尽头找到一个宝贝: AOP。

具体到技术层面,还有一个问题, 就是为什么Java 动态代理只能对interface进行操作?  不能对class进行操作?    这个问题如果也深挖下去, 你会发现另外一个宝贝: 动态字节码的生成。

继续深挖就能看到ASM, CGLib这样的东西, 看到他们怎么在内存中操作class文件的字节码, 字节码的格式是什么样子的? 只好去看看Java虚拟机了。

到了最后,你也许会体会到, 奥, 原来Java是一门静态语言,  在运行时不能对现有的方法逻辑进行修改,不能新添加方法, 所以得用别的手段,如ASM, 动态代理等创建一个新类来做点“额外的”事情。

赶紧写一篇文章吧,把挖掘的结果记录下来,别人只是学会了什么Java 动态代理,这只是冰山的一角,  而你则看到了整个冰山。

有人可能要问了: 我也可以按照这个思路去学习,为什么要写下来呢?  原因很简单,不写出来,很容易放弃深度思考。你会觉得,哎呀我已经知道怎么回事了 -- 其实一些关键的细节被大脑给忽略了。

我们已经进入了一个碎片化的时代, 我们的大脑已经养成了碎片化的习惯,一天不看碎片化的信息就觉得不舒服, 这样下去会慢慢地丧失深度思考的能力。

写作会逼着你去思考,梳理知识体系,防止自己被碎片给填满。

其实很多人都知道写作是一件很好的事情, 就是犯懒,执行不下去。 还是行动起来吧! 逼自己一把,对自己狠一点 !  有自制力的人, 能够坚持的人才更有可能成功!

ps : 写出了好文章, 欢迎向老刘投稿啊。

你看到的只是冰山一角, 更多精彩文章,请移步《码农翻身2016文章精华》或者《 码农翻身2017上半年文章精华

有心得想和大家分享? 欢迎投稿 ! 我的联系方式:微信:liuxinlehan  QQ: 3340792577

码农翻身

用故事讲述技术