关于技术学习
最近自己就在思考关于技术的学习,比如一项新的技术我们需要学习,我们做的动作通常是以下的步骤:
1.看官方文档或者查阅相关的文本资料或者博客
2.搭建安装相应的编译环境
3.照着资料的例子在编译工具上实验
4.自己觉得学差不多了,然后等着如果项目需要的话去应用,其实大多数情况下,我们只是为了学习下这项新的技术,很少是为了项目。这里我就多说点。
经过上面的步骤,我们对这项新的技术有了大致的认识,那么到底会不会用到,就看之后的造化了。思考到这,就发现有两个问题,一个是我们学习新技术的时候,往往是处于好奇心,我们本身的目的性有时候并不强,仅仅是想要学习认识下这项技术,至于学习完了之后,到底能用它能干什么,我们大多数情况下是不会再去深入下去,往往是随着时间的推移,当我们再回过头的时候,关于新技术的知识可能就忘了很多;二是关于大多数技术的学习,我们可能都只是浅尝辄止,不够专注。以Hadoop学习为例,很多人只是搭建个hadoop集群环境就觉得自己已经在搞大数据了,其实离入门还有段距离,跑个wordcount就觉得自己已经明白了MR了,然后听别人说spark比hadoop好,比hadoop运行快,马上就又开始进入spark的学习了,spark学习了一大堆知识,自己静下心一想发现自己啥也做不了,随着时间推移,项目中也没有使用到该技术,慢慢又淡忘了,然后有点焦虑了,新技术又来了,又开始学习,周而复始,陷入恶性循环,发现自己学习了这么多知识,然而能做出的东西的没有几个可以拿出手的。
其实上面的经历,老实讲我自己经历过,但是我意识到了这种方式给我带来了的后果。我发现身边的很多人有跟我有一样,现在依然践行着不断地学习,被知识焦虑驱动着,其实有时候,根本不知道自己为什么要学习某项技术。
我个人觉得学习技术一定要认真思考下面的问题,我也时常用来反思自己:
1.某项技术的诞生背景,是解决什么问题,为什么要有这项技术,它能给我们带来什么,或者说这个技术赋予了我们什么能力,最好结合自己目前的业务、项目进行联想思考,比如hadoop是解决分布式存储与分布式计算问题的,我们的项目是否需要这样的计算能力、扩展能力。不要很小的数据量,都要搭个集群用hadoop、spark来处理。结合业务、项目进行拓展、学习,好处是既可以把所学,有针对性的运用到项目中;在运用新技术显著地提高、扩展的我们业务能力,这所产生的效果又能产生直接的商业价值。这对个人的成长、发展是十分有利的,个人的价值体现了出来。
2.是否在进行无目的性学习?是否足够专注?很多人在学习技术的时候是很盲目的,有时候根本不知道自己为什么要学习这个技术,可以参考问题1问问自己。无目的地学习只会让你更加焦虑,无目的还会让你不够专注,每个人的精力都是有限的,要先找到自己想要发展的方向,然后结合业务在这个方向上进行技术扩展,切忌学学这个,学学那个,学得那么多,然而发现改变不了任何东西。一定要有目的性地学习。
3.问问自己能输出什么东西,能用已有技术解决什么问题?不要光学习,要注意输出东西,输出不了东西,学再多没有用,你参加一份工作,不会是只让你知道一些东西就可以了。输出也是检验自己学习成果的一种方式。通过项目上输出、博客输出、github作品等输出来检验自己,同时这样也可以聆听到外界的直接反馈建议,从而更好地提升自己,另外这对自己找工作也是非常有利的,有些公司招聘会把博客、github作为一个参考点。
我们学习技术一定要有目的性和结果导向,新技术的学习最本质的原因:作为个体我觉得是提高自己的工资,改善自己的生活水平,不是去给别人吹嘘自己多么厉害,懂多少高大上的技术,这是没有任何意义的!改善自己收入取决于你能给别人带来什么,而且是成正比的。我觉得能将技术跟商业价值很好的联系起来,并有实现商业目的能力的工程师一定是所有老板喜欢的工程师。
之前不知道在哪里看到一句话关于工程师价值的描述,记在我的记事本里,分享下:
人生结果的不同来自于对价值和结果的关注。什么是价值?1、解决问题;2、增加收入;3、降低成本。这是大到国家、企业,小到项目和个人的最简单的结果导向的普世价值。