我想很多人都忽略这样的问题。学习就是碰到什么吃什么,不成体系,往往遇到问题时才会觉得,天,我怎么那么多都不明白,真该好好学习的。
可是,问题又来了,自己还是不知道学什么以及怎么学。
mark开源lib,资讯,这并没有什么卵用。仅仅是mark,很多时候想着有空了学习下,往往过段时间就忘了。即使你使用了,大部分也只是会调用而已。遇到问题了如何解决,扩展需求如何扩展?
学习的根本,是如何处理信息的能力,也就是对现象的分析,归纳和延伸的能力。
一开始,我们通过模仿来学习,收集的信息和得到的反馈多了之后就会通过思考来学习。
这里Stay分享下适合自己学习的方法,大家也可以尝试下。
如何在工作中学习
自己动手比什么方式都提升的迅速,哪怕仅仅是抄一遍(模仿)
分析需求(我们少有创新,大多算更新,所以所有的需求都有原型,以及延伸的雏形,找到它,试图理解它背后的逻辑,然后再考虑技术实现)
设计原型(来自于经验的累积,流程图会帮你从混乱的需求中清醒,即使是草图)
团队协作(了解每个人擅长做什么,出现状况时,做为旁观者,你要做的是帮他理清思绪,what when why how,同样适用于自身)
编码(随时随地都有big picture,别纠结于某个detail的实现而拖慢进度,伪代码的意义重大)
测试(宏观测试,确保架构稳定,局部测试,确保逻辑与性能,两者会交叉影响,debug时假设所有变量都存在问题然后一个个排除)
解决问题(what when why how不管是提问题,还是解决问题,都应组织好语言,这个问题是什么,什么情况下发生,为什么会这样发生,如何解决,提问是希望他人能给出提示,而不是解决方案)
记忆索引(想想搜索引擎的工作原理,记代码是不可能的,每个解决方案背后都对应着一个确定的需求,要记住的是生活化的需求,对这些需求分类建立索引,并用良好的代码规范存储,这是个漫长的过程,一旦存储,就不会忘记。当然可以用note来辅助记忆)
这些同样也是高效开发的基准,倘若你觉得这些太理想化,那么请就记住一条准则:
WHAT,WHEN,WHY,HOW。
它是什么?它在什么场景下发生?它为什么会是这样,有没有其他原因?它是怎么做到的?
如果你觉得已经过了模仿的阶段,但是处理信息的能力又比较弱。不妨这样试试。做任何事情之前,有意识的让自己来一遍what, when, why, how。
时间久了,你会发现逻辑变得严谨,不会钻牛角尖了,工作变得轻松,debug也不头痛了。
衡量一个工程师是否优秀,不是他会多少API,做过多少项目。而是遇到问题时,会用更优雅的方式来解决它。
有意识的学习,别让自己陷在终日的复制粘贴和漫无目的的debug里。共勉~
扩展阅读: