直击内核:打牢基础,以不变应万变
计算机行业总会出现很多新东西,变化无处不在。很多人问,怎么学习新技术?怎么跟上新变化?我想说的是,要想应对变化,很重要的一点叫以无招胜有招,以不变应万变。
之所以这么说是因为,变化都是表面的东西,内在的东西其实变化不大。也就是说,理论层面变得不多,只是在形式上今天一个样,明天另一个样。所以要应对这种变化,你一定得打牢自己的理论基础,提升内功修养,比如编程的一些方式、修饰模式(添加新的行为的设计模式)、解耦、提升代码重用度等。提升代码重用度必须解耦,必须提升抽象能力,这些都是很基础的内容。无论用什么语言,都是这么做的。
当你打牢了基础,就更容易突破瓶颈。技术世界里不存在量变会造成质变的现象。什么意思呢?量变到质变是说,我们砌砖头建房子,砖头砌够了,就可以把房子建出来。但在技术领域不是这样的。你砌砖头砌得再多,一个模块的代码写得再多,也不能让你能成为一个架构师,因为你不懂原理,不懂科学方法。只有掌握了原理,你的能力才能长上去。就像学数学一样,当你掌握了微积分这种“大杀器”,你解题的能力就会所向披靡,而微积分绝对不是你能“量变”出来的。
所以你必须学习基础的理论知识,如果只学一些表面上的解题思路和方法,技术的形式一变化,你会发现以前学的都没用了,要从头再学一遍。
掌握技术基础可以帮你推导出问题的答案,因为基础是抽象和归纳,很容易形成进一步的推论。我们学的很多技术实现都逃不脱基础原理,不管是Java,还是其他语言,只要用TCP(传输控制协议),用的都是相同的原理。所以你只要抓住原理,举一反三,时间长了就能自己推导答案。
对于技术的基础,我分成以下四类。
1.程序语言:语言的原理,类库的实现,编程技术(并发、异步等),编程范式,设计模式……
2.系统原理:计算机系统,操作系统,网络协议,数据库原理……
3.中间件:消息队列,缓存系统,网关代理,调度系统……
4.理论知识:算法和数据结构,数据库范式,网络七层模型,分布式系统……
这些知识其实就是一个计算机科学专业的学生所要学习的原理,如果你的学校没有教或教得不好,一定要自己去看经典的教材,世界上最优秀的计算机教科书都有教。
当然,就算自学,这些基础技术也需要大概四五年的时间积累。过去20年来,大家都说技术日新月异,但其实原理都没变,变的只是形式,核心还是这些内容。是否掌握这些原理直接影响你能飞多高,因为懂原理的人和不懂原理的人能解决的问题完全是两个层级。
【免责声明】
1、个别文章内容来源于网络善意转载,版权归原作者所有,如侵权,请联系删除;
2、所有图片来源于网络,版权归原作者所有。如有侵权问题请告知,我们会立即处理。