不要安于现状
学问越大,越谦虚。越懂得的多,越能发现自己的不足。
经历过才懂得
如果说最初的notepad写代码是石器时代,那么现在的开发至少已经进入了工业时代,现在的开发人员有好用的写代码工具,好用的项目构建工具,好用的发布工具。极大的简化了之前的手动操作。这样的结果就是,很多初学编程者,上来就开始使用这些现成的工具,用得太理所当然,以至于离开了这些工具什么都干不了。
我想说的是,现在现成的工具能够很好的提高开发效率,我们应该去用,但是很多时候我们学习者也需要知道这些工具出现的原因,即为了解决什么问题而产生,同时也需要了解一下这些工具的原理。也就是说,现在技术发展的很快,很多新的工具或者很牛的框架出现,但是如果我们一开始就用这些工具或者框架,我们就无法体会到这些工具给我们带来的便利,因为我们不知道没有这些框架时候是什么样子。
比如Hadoop,Spark,Kafka等这些框架,如果我们在它们出现之前用过其他大数据处理框架或者分布式消息系统,那么我们遇到这些新的框架的时候我们才能很好的体会到这些新框架的特点,但是如果一到了某家公司就开始用这些,可能你都来不及考虑一下为什么要用这些而不是其他的。
所以我的结论之一就是:很多事情,你必须亲自经历过,才能体会到某种新技术或者框架出现的初衷,也能更清楚的明白这些框架之间的不同,区别,真正做到按需索取。
但现在存在的很大问题就是,很多初学者如果弄懂这些,需要学的东西很多很杂,如何定位如何取舍就决定了你的提高速度。所以在这方面,有一个大神带飞一下,真的很关键!
要走在技术的前沿
这条结论来自前一条,我们要想经历过才懂得,那么我们就必须在某项技术产生之时就跟进,只有这样才能一步步了解该技术的发展,才能对于技术的整体方向有个很好的把握。
对于我们大部分工程师来说,保持这种意识也很关键,技术本来就是不断进步的,我们也需要能够及时了解技术发展动态,只有这样才能跟着技术发展的大潮一起进步,向前!
要有自己的知识体系
在我遇到过的技术人员中,我认为可以分为两大类,一类就是知识面很广,基本上从前端到后台,所有的技术都懂;另一类就是知识面比较窄,你跟他聊天的时候说的一些东西他可能没听说过,但是他的知识很扎实,只要他研究过的,就研究的很深入。
我不觉得这两种有什么不好,我觉得这是两种截然不同的知识体系的表现,一种就是很有广度,一种就是很有深度。广度和深度其实都很重要,但是对于不同阶段的开发人员来说,可能应该关注的度是不同的。
我觉得,随着开发时间的增长,技术水平的提高,我们需要不断提升自己的广度,扩宽知识面,但是在此之前应该是先提高深度,即把自己当前用的技术掌握扎实,理解透彻。
很多工程师都觉得在哪家公司学不到任何东西,其实不是这样的,我想很多公司都会用到各种框架,哪怕是烂大街的大家都知道的,但是是不是这些烂大街的技术你就掌握的很好呢?你深入了解过原理吗?
但是现在的新技术这么多,对于java来说,体系更是庞大,那么应该学哪些呢?其实解决这个问题的根本就是要构建自己的知识体系,将自己已经掌握的知识系统整理,挖掘知识之间的联系和区别,然后在此基础之上适当补充。就好比一棵树,如果各个枝节都长满也绿叶那是最好的,但是如果我们发现某个枝节叶子本是很好,那么我们可能就需要在这个方面努力一下。
制定学习计划和目标
按照计划按部就班开展,而不是跟风,不然会被别人带到沟里的!
学习方法论
对于新框架,由整体到细节。
对于一个全新的框架来说,我们要从下面几个方面入手:
解决什么问题?
与现有框架相比,优点在哪里,缺点呢?
实现原理是什么?
如何使用?
如何用好?要想用好就必须深入实现细节,需要大量阅读文档和源码。