最近币圈跌的很惨.熊市到什么程度.金马老师已经开始发文要我们学习了.如果你要学技术,我强烈推荐你在哪学?
的确,熊市里面大家都很惨,最好的办法就是转移注意力,努力学习,尤其是从事互联网行业,不进步就是在退步.最近订阅了李智慧的后端技术基础详解,这个课程也非常赞,讲师李智慧经验丰富,讲的内容都很接地气,我打算学下去.
01. 困境
这是开篇词.掌握软件开发技术的第一性原理.
每次从头开始学习一个新的技术,这个过程既痛苦又漫长,好不容易掌握得差不多了,新的技术又出现了,于是不断重复从入门到放弃这一过程。这个过程是如此痛苦、艰难,以至于整个行业形成了一种所谓的“共识”:随着学习能力和体力精力的下降,编程知识和技能逐渐衰退,35 岁以后就不能写代码了。
思考: 其实并不是35岁不能写代码了,是如果一直保持着每一出现一门新的技术,都要去重新学习,那么到了35岁就会变得非常的吃力.体力和精力不如年轻人,所以我们这些老的程序员要仔细思考一下,我们相比年轻的程序员,到底优势在哪里?是经验,底层,思维,原理胜过他们才对,对于新技术,我们能够知道是怎么实现的,可以快速找到问题的根源.由于掌握了底层原理,所以知道为什么这样设计?如何去设计.
如果你能建立起这套技术思维体系,掌握这套技术体系背后的原理,那么当你接触一个新技术的时候,就可以快速把握住这个新技术的本质特征和思路方法,然后用你的技术思维体系快速推导出这个新技术是如何实现的。这个时候你其实不需要去学习这个新技术了,而是去验证这个新技术,你会去看它的文档和代码,去验证它是不是和你推导、猜测的实现方式一致,而不是去学习它怎么用了。那么,学习一个新技术就变成了一个简单、轻松、快速且充满乐趣的过程了。你不再惧怕学习新技术,而是开始抱怨:为什么技术革新得这么慢,太无聊了。你甚至可以开始自己创造新技术。
思考: 不是学习新技术,而是根据自己已经掌握的技术体系原理,去验证这个技术的实现,这是一种学习的新思路.以前学习新的技术的时候,很容易出现一个问题,就是学习了之后,不用,就会忘记,而且现在的编程大部分都是去github或者码云找到源码,然后运用到自己的代码当中,提高效率,所以如果不是去掌握思维体系和原理,而是学习表层技术,那么就显得太过肤浅.很难提升自己的水平.
02. 第一性原理——建立技术体系的起点
那么如何实现这一美好的愿景,建立自己的技术思维体系呢?
第一性原理就是让我们抓住事物最本质的特征原理,依据事物本身的规律,去推导、分析、演绎事物的各种变化规律,进而洞悉事物在各种具体场景下的表现形式,而不是追随事物的表面现象,生搬硬套各种所谓的规矩、经验和技巧,以至于在各种纷繁复杂的冲突和纠结中迷失了方向。
思考: 现在流行速成,于是我们去学习各种套路,但是不知道为什么这么做,长期下来,套路用的太多,遇到一件事情,反射性的出现套路思维,最终把自己给套死了.如果我们去学习第一性原理呢?那么就可以自己去推导,验证别人的推导,去分析和演绎事情变化的规律,就不会变的人云亦云,对套路生搬硬套,最终把自己给套死了.不只是编程,生活工作都是如此.
如果你掌握了软件开发技术的第一性原理,那么当你为了解决某个新问题,去学习和研究一个新技术的时候,就算遇到了知识的盲点,也可以快速定位到自己技术体系的具体位置,进一步阅读相关的书籍资料,这个时候也许你就会深入到操作系统的调度算法实现或者通信协议头信息的具体编码里,但是这时,你不会觉得枯燥无聊,也不会觉得迷茫无措,只会觉得原来如此,太有意思了,甚至觉得这其实可以实现得更好。
思考: 问题其实并不可怕,可怕的是不知道问题到底出在哪?以至于无法解决.
比如我们的程序是如何被操作系统调度执行的?为什么高并发的时候系统会崩溃,原理是什么?在编程时,什么场合下应该使用链表,什么场合下应该使用数组,为什么?当我们使用 Hash 表的时候,什么情况下它的性能会急剧降低,原理又是什么?我们用 Redis 这样的分布式缓存的时候,到底要解决什么问题?分布式缓存是如何工作的?还有哪些技术看起来和 Redis 毫不相干,其实工作原理是一样的?
思考: 面试通常喜欢问这些问题,就是想要考察一个程序员的灵活性,如果一个程序员只是会生搬硬套一些具体的技术,那么随着技术革新,这个程序员的性价比就会降低.
03. 专栏如何帮你建立技术体系
第一性原理是一种思维方式,一种学习方式,一种围绕事物核心推动事物正确前进的做事方式。也许这个专栏讲到的很多知识技术你已经掌握,但是这些知识技术和软件技术最基本的原理的关系你也许不甚了解。它们从何而来,又将如何构建出新的技术?如果把这些关系和原理都理解透彻了,你会发现,日常开发用到的各种技术,你不但可以随心所欲地去使用,甚至可以重新创造。
思考: 迫不及待的想要创造新的技术!