通常我去学习一个技术都是工作需要,但我希望自己对这些技术有更深入的认识。学习一个技术的原因第一是出于需要,需要用于当前的工作,需要了解行业或者其他。第二是防止被忽悠,当你大概了解一门技术的时候,你就不会被轻易忽悠。
本文的主题是,在应用工作的基础上,对这个技术想要有更深入了解的时候,需要做哪些事情。我常常会因为工作需要某项技术,出于时间原因,找了个方案顶上,完成工作之后就束之高阁,没有做探讨和总结,就和这门技术说再见了,下次再用到或者谈到,也都是门外汉糊弄学,知其然不知其所以然。
一个流程简图
简单做了一个学习技术的基本路径,不必刻板僵化的按照这个路径来,如果已经有了一个可靠的资料,那么只需要确定自己的范围,设定成果物,安排好时间就可以开始了。
接下来是更细致的解读。
了解
历史发展
了解一个技术的发展历史和行业现状,短期之内没什么帮助,这也不能让代码更高效,又不能让思维更敏捷。但是这其中隐藏着一个信息差的概念,对长期的发展有没有帮助,是否值得我们学习。
技术发展的历史能够帮助我们更好的定位这个技术目前的时间维度,它是曾经辉煌还是明日之星,现在学习这个对我的技术发展和就业有没有帮助?有哪些公司和这个技术有关系?在哪些行业内使用了这个技术?我所处的这个行业中,这个技术的发展前景如何?
历史 | 行业 | 业务 |
过去 | 过去哪些行业中用到? | 当时行业内部流通的版本是多少?标准是什么? |
现在 | 目前大家使用的行业是哪里?和过去对比有没有变化?我所在的行业中是什么样的情况? | 现在的标准、版本都是多少? |
将来 | 有没有人对这个技术的未来做出预测?将来这东西还有人用么? | 未来会不会推出新的版本?会不会再有更新维护? |
时间这玩意没有一个确定的界限,所以我们对过去的了解能够更好的定位当前的发展阶段,比如曾经辉煌过的技术会留下一堆产品,自然需要懂相关技术的人去维护,但是对于个人能力的提升就非常有限了。这就说到这门技术现在的情况,了解现在这门技术的发展水平其实是最重要的,我们要了解是否有价值值得我们消耗自己的时间和精力。
对这些历史当然不用如数家珍,上面提出的问题也不必全部回答,但是当你掌握的信息更多的时候,你就能够拥有更多的选择。信息的重要性不必多说。
涉及其他的内容
通常学习一个技术并不仅仅是学习这个技术本身,比如我要学习图型渲染方面的知识,那么要对图形学有一定的了解,数学最好不要太差,要掌握编程语言,熟悉开发平台等等,这些东西是基础,也是想要更进一步必须要掌握的。所以在前期,了解技术都涉及别的技术是很重要的,不然等学到一半突然发现自己的数学基础不够用,语言掌握的不到位,都是麻烦。
因此前期了解的时候最好就知道自己那些地方不足,提前补补课,这样在学习的时候不会因为看不懂某个名词,不了解某个定义打破学习的连贯性。
选择符合自己需求的部分
这里呢,我们已经对行业内这项技术的地位有一定的了解,也知道涉及其他什么内容,那么要做的就是锁定自己目标。比如我学习C++是为了做运维,那么就不需要了解运维以外的C++内容,一些不相关的库也不必耗费精力。这里不要贪多,精力都是十分有限的,尽量不要在“我觉得这应该有用”的地方浪费时间,范围的划定标准应当是“必须”,掌握这个技能必须要了解的,离开“必须”之外的,暂时用不到的不要划定到范围之内。
这个阶段是针对行业和业务锁定自己的需求,也是从自己所处的行业和业务范围去确定自己的需求。并且限定一个合适的范围,不要在超出范围的事情上浪费时间。
设定成果物
以往我接受的教育最终的目标都是很模糊的,比如“了解某某的基本内容”,“熟悉什么什么工具”,“掌握什么什么技能”,这些用词在我们的成果物中绝对不能够出现,怎样定义“了解”?什么程度叫“掌握”?
在设定我们的成果物的时候,我们要制造/创造出某个东西,比如我要学会做饭这个技能,就将成果物列为,自己能够做出一道番茄炒蛋(因为我不会做饭,所以目标就敷衍一下),而不是熟悉鸡蛋的内部结构,掌握锅碗瓢盆的使用方式。
根据设定的目标寻找资源
已经确定了成果物,也知道要掌握的范围是什么,就可以着手寻找一些资源,比如番茄应该怎样选择,鸡蛋有哪些品种这样的参考资料。同样以图形渲染举例,我要掌握的是底层OpenGL ES的渲染内容,那么我就要从底层GPU架构、OpenGL/C++、OpenGL ES、Shader语法、线性代数这样的方向去寻找,如果有有口皆碑的优质教材最好,但自己也要找一些类似词典的参考途径,在遇到名词或者概念不清楚的时候去查一查。
查找资料同样是一门学问,要牢记不要贪多,比如图形渲染入门阶段并不需要很深入的数学知识,有高数基础足够,实际上高中数学基础也是够用的,底层GPU架构也不需要了解,后期会需要,所以要对自己限定范围内的资源进行筛选,千万不要贪多,不断精简留下1~2个教程就行,因为到中后期你会发现你连一个教程都很难坚持。
学习计划
这是我个人设定计划的方式,每个人的学习计划都要针对自己的个性和感受调整,不要刻板的按照某个标准要求自己。
我设定学习计划的原则就是,不要贪多,没错,还是这个。不要给每天密密麻麻的设定好多,计划完成却耗尽激情,接下来的计划也懒得实行,计划没完成就给自己盖章为“废物点心”。
按周设计计划是一个合适的方案,最好不要强迫自己在劳累了一整天之后坐在书桌前全神贯注的学习,尽量早晨早点起,留出30min学习也好,周末划分一个大块时间学习。晚上感觉很好,就多学一些,感觉很累,就休息一下。每周完成自己的周计划或者每个月完成就好,防止自己因为计划没完成而落入“废物陷阱”,自我感觉太差会影响下面的学习计划。
适当的强迫自己放下电子设备,或者先做个五分钟,坚持一小段时间在休息,告诉自己五分钟也是学习,一秒钟都算进步。不想学的时候,告诉自己,先分解目标,不需要直接开始学习,当你打开章节内容,划分做策略之后,就会发现想学的欲望上涨了,说不定可以立刻开始学习。
细化目标和步骤是老生常谈了,经常设置自己的学习计划的人都应该知道,但是细化目标到什么程度不好把握,这里面的一个技巧是,根据自己的完成时间来限制,比如十五分钟以内,十分钟以内,五分钟以内的算是一个步骤,按照自己的习惯来细化目标,分解步骤。
设定学习计划里面有太多的坑要避了,但是设定一个合适的学习计划又特别重要。
开始着手
有时候我们会对着手开始有一定的仪式感,感觉好像一定要算好良辰吉日,天气太热不行,下雨不行,必得是风调雨顺,桌面整洁,心平气和。其实不是的,开始什么时候都可以,好的开始并不一定代表好的结果,草率的开始或许会让事情变得更有意思,随时随地就开始学习吧,不要把它当作有重量的行为,“在战略上藐视敌人,在战术上重视敌人”,如果你现在有心情有兴致,立刻就可以开始。
伴随着深入的学习,你需要不断地调整自己的学习计划,因为兴致好的时候会多学一点,兴致差的时候懒得动手,会拖延一点,其实没兴趣了随时放弃也无所谓,尝试过发现自己不喜欢也有意义。