关于技术的学习
LanyuanXiaoyao's Blog ヽ(✿゚▽゚)ノ

关于技术的学习


关于问题

问题链接:关于技术的学习

两三年前只用会个SSH,SpringMVC,Hibernate,Oracle就能混个工作了,如今随着互联网的发展,各种狂拽炫酷的技术层出不穷,什么CDN,中间件,zookeeper,dubbo,redis,codis,垂直水平拆库。。。甚至这些都还没搞懂,又出现了微服务之类的技术。各种技术如此层出不穷,工作中用的技术又很老旧,我们在互联网的浪潮下怎么拥抱变化,不让自己被互联网时代淘汰,同时又不用在各种技术的学习上顾此失彼?

回答

关于这个问题和我

我想我对这个问题可以说是相当熟悉了,因为我就亲身经历过这个问题,其实也没多久,就年初吧,那个时候刚刚开始准备实习春招,我的水平大概是在对Java的一些多线程/反射/socket有一些初级的认识和使用,对Spring MVC有一些了解能做一些简单的MVC网站,开发过几个简单的Android应用的程度。可是当我去到一些招聘说明上看的时候(柴犬脑袋一歪,发现事情并不简单),很多的公司在招聘条件上都写了:

  • 了解前端Html、CSS、Javascript、Angular.js,或React,Flux design等Web前端技术或框架
  • 参与过移动端(iOS/android)软件研发或有OpenGL 3D编程经验优先
  • 能够更快地思考和行动,包括点云处理,基于多线程/GPU的并行运算,指令集优化
  • 有良好的Java基础,熟悉分布式、缓存、消息、搜索等机制

我的天,这都哪跟哪啊,号称熟悉“世界流行编程技术拼写”的我面对很多词也没多大概念,但显然这些都是当下流行的一些技术点,即使我知道实习面试什么的并不需要多精通这些技术,但是基本了解和学习也当然是不能少的,这么多乱七八糟的技术和知识,怎么选怎么学?

我想说的是

作为一个刚刚加入互联网的我来说,基本上每天都在接触新的知识,我是一个喜欢接受新鲜知识的人,因为我觉得知识是会过时的,过时的知识和过时的苹果一样除了扔掉没有任何用处,然而让人沮丧的是,我了解新知识的速度还是远远慢于新知识新理念出现的速度,这不得不让我重新开始审视自己学习的方向。

很多人都说学知识应该要精通一门,不要什么技术都是半桶水,专心学好一门就行了,但是我觉得这句话是片面的,因为这个世界上从来就没有出现过一门技术可以解决我们所有的问题,既然没有这种万能的技术,那么没有任何理由可以让我们拒绝学习各种不同的技术来满足我们的需求,当然我并不想否认精通一门技术的重要性,但是不断地学习新技术新知识这件事绝对是不能缺少的。

然后就又回到了我最核心的疑惑:技术太多,时间太少,我该看哪个?

这个疑惑被解开源于我在wiki上看到这样的一句话:

有些人质疑服务导向的架构是不是1970年代模块化编程,1980年代的面向事件设计,1990年代的基于接口/构件设计的一种复兴?——面向服务的架构

哈哈,不知道你会不会像我一样会心一笑,看到这句话真的让我感觉眼前一亮,你们发现了吗?在这两年才提出来的微服务架构,其实在上个世纪70年代,80年代,90年代都曾经被提出来过,只是细节有点变化,概念更完整,但是核心内容根本就没有变化,没有变化!!以至于让人看一眼就以为这又是上世纪的哪个技术被拿出来重新包装。

总是有一些不变的基础支持着发展——兰缘小妖

当然我这么说显然不是完全对的,但是就我学习的编程技术来看,也能套用个七八成,先学习那些不变的知识显然要好得多,新的技术都是由同一个原理或者理念不断完善修改发展而来,学会这个原理,那么下面的那些延伸的技术不也一目了然了吗?

就像我当初纠结数据库这么多我应该学哪个,肯定要学最好的最多人用的数据库吧,不过后来我放弃了,因为我根本就找不到一个最好的最完备的数据库,也许mysql最多人用,但这又不能埋没postgresql中的很多亮点,所以到最后我也没能决定我该看哪个数据库,但是现在,我会说,我去学结构化查询语句,去看数据库原理,因为每一个数据库都支持sql语句,每一个关系型数据库都是二维表,手上拿着标准sql语句,哪个数据库会对我造成障碍呢?至少现在没有,额外的一些特性语句显然不成问题了。

又比如以前我看spring的时候,那个sessionFactory是个什么玩意儿啊,直接new一个多好,搞到我只能去背它的用法,哪里知道上个世纪就提出来的工厂模式,就在眼前,而且是解决对象创建的一个绝佳方案,现在再去看spring的用法甚至源码,脑袋里都能反映出其中的一些大致的模式,更别说只是简单得配几个参数和使用了。

所以现在当我接触了一个新的技术是我很难理解的,我都会先去谷歌一下这个技术的分析,到底是怎么的一种设计思想,然后再回头来看具体实现,就会很通透,以后遇到类似的也很容易明白过来,当然,这不是说一定要这么干,因为工作里面老大丢来一个新技术,首先还是要用起来,让它能最快的速度产出成果,这只是一个思路。

其实说了这么多也都是在瞎逼逼啦,我想说的就是把一些通用的原理弄懂,其他延伸出来的技术就简单多了,嘿嘿,发现了吗, 这不就是我们上课说的抽象吗? 一堆新技术,把公有的属性抽取出来,下面的子类技术都是继承父类技术的,所以父类技术有的,子类技术能少嘛,我们抽象是为了什么,不就是为了容易复用,容易扩展嘛,这些抽象的原理学会了,还怕不能在各种新技术里面复用吗?

这也是我参加刘老师这一年课程的原因:P

大家接着加油啊!

以上

本文完全主观,以至于可能有一些未知的错误,应该不影响我表达的意思,所以当然是选择原谅我啊!


评论