查看原文
其他

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

2017-09-04 老刘 码农翻身

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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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



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


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


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


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


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


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


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


码农翻身

用故事讲述技术

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存