一、问题
我经常被问到:老师你的课程是2015年录制的,我现在学会不会过时了?有没有最新的课程?
你如果认识很多35岁及以上的中年IT从业者,你会发现这些人往往两极分化。其中一派古板、顽固,坚持认为他们以前的方法好,以前的作风好,以前的什么都好,现在时代变坏了。而另一派则认为现在在进步,新东西好,并且在积极学习。
结果就是前一派变成了祥林嫂,成天絮絮叨叨的和年轻人一起拼体力活还不涨工资。而后一派要么成了技术大牛要么升了管理层。这就是心态能不能跟随时代前进的重要性。
所以我很能理解同学怕被时代拉下,怕被时代淘汰的这种焦虑。我也很开心年轻人能在一开始学习时就考虑这个问题,这是好事,今天我给你详细分析下这个问题。
二、时代洪流无人能挡
首先必须搞清楚:时代的发展是客观的,是不以某个人甚至不以某些人的意志为转移的。最近有2句话很火,意思相近。
一句是:时代抛弃你时,招呼都不会打。
另一句是:时代淘汰你,但与你无关。
你仔细体会下这两句话里的冷冽和无情,其实这才是天地至理。狼吃羊并不是因为羊犯了错,而是因为狼自己饿了。美国天天找我们茬也不是因为我们中国人错了,而是因为我们的崛起挑战了美国人的霸权。
所以首先心态上摆正了。时代一定会发展,有些东西就得被淘汰,有些东西就是会变化,不要掩耳盗铃觉得我不停否认就能蒙混过关。你把头埋进沙子里也不能阻挡时代猎人的脚步。
三、怎么办
想要不被时代抛弃和淘汰?很简单:跑得够快就行了。
有个段子很好笑,但是里面蕴含了至理。说考试题目问小偷被判刑的根本原因是什么?学生答:被抓住。
你仔细品品是不是还挺有道理的,如果小偷不被抓住当然不会被判刑了。
同理,羊被狼吃掉的根本原因是什么?也是被抓住啊。你要是和喜羊羊一样猴精猴精,那又怎么会被吃掉呢?
两个人在森林里遇到老虎,一个人系鞋带,另一个说没用的,你跑不过老虎。第一个人说你错了,我不用跑过老虎,我跑过你就行了。
四、谁被淘汰
你看,很简单的道理,你被淘汰、你被落后其实根本原因就是你跑得太慢了,你被追上了。追上并干掉你的人,要么是时代发展,要么是你的竞争对手。
方便面被外卖干掉了,这就是被时代发展淘汰。邮局被快递干掉了,也是被时代发展淘汰。国企员工下岗了,这是国企被民企和市场竞争淘汰,本质是被竞争对手淘汰。你被公司干掉了而你同事留下来了甚至还加薪升职了,本质是你被竞争对手(同事)淘汰了。
所以你再想想,是技术落后了还是你落后了?是技术被淘汰还是你被淘汰?假如你是一个程序猿,竞争和淘汰你的是技术发展吗?不,淘汰你的永远是你的同事,也就是新进入的新手程序猿,或者和你一样的存量老程序员。
五、技术会被淘汰吗?
技术本身会被淘汰吗?肯定会。譬如显像管电视机你现在完全看不到了,都是液晶电视。我记得我2009年毕业时四川长虹去我们学校招聘,岗位是做等离子电视的。
现在你看全是液晶,所以等离子显示等技术显然也是竞争失败了。
OK,技术本身也存在竞争,技术也会在竞争中被干掉,被淘汰。
但是,关你屁事啊!!!
技术被淘汰,技术会痛苦吗?技术有痛感吗?Nokia手机没人用了它会哭吗?技术又不需要吃饭,不养活老婆孩子,它怕什么被淘汰?
还没明白?
搞清楚了:技术是技术,你是你。技术被淘汰了它自己无感,而你被淘汰了日子就难过了。会喘气要吃饭要养家糊口有欲望的物种才需要担心被淘汰。
所以如果你把自己和某种技术绑定,然后随着技术被淘汰你被淘汰了,那只能说你XX。
船都要沉了你不知道跳船?你不知道换一条船?
房子旧了成危房了,你不知道买新房子?
技术陈旧了,落后了,你不知道学新技术?
有人说我也想掌握新东西啊,我也不想被淘汰啊,所以我才问你你的课程2015年录制的是不是不够新了?我是不是要学更新的才会不被淘汰呢?
先别着急,你需要先搞清楚我们学习的知识和技能是分2类的。
六、本质型和应用型知识技能
我先举个栗子。很多人都知道我们平时吃的药其实分2类,一类药物起效果是通过增强自身免疫力,提升自身抗性的,也就是所谓的强身健体,治标治本。而另一类药物是所谓的针对性治疗药物,譬如你发炎了我就给你消炎,你肌肉坏死了就给你切掉,你破皮流血了就给你缝合住。这都属于直击目标式药物治疗。
哪种好呢?要说快肯定是第二种了,西医大多是这类的,直接明了,清清楚楚,目标明确,原理清晰。而中医大多是第一种的,有点迂回战略。本质上的原理是我通过药物增强你身体的免疫力,提升你的身体活性,然后真正治病还是靠你身体的免疫力,靠你的自愈能力和抵抗力来战胜病魔。所以按照第一类医学理论,只要你身体免疫力很好,只要你身体素质够好,实际上大部分病根本不会得,得了也能自然好,根本不用吃药的。
实际上你在工作和生活中用到的知识和技能,也类似于你抵抗疾病的能力,也分为这2类。我把第一类对应身体免疫力的称为本质型知识技能,而把第二类对应精准治疗药物的称为应用型知识技能。
本质型知识技能是一个人自身的基础和修养,最典型的就是我们说的基础知识、基本原理、基本技能。譬如一个软件工程师,编程语言的掌握就属于本质型知识技能。而应用型知识技能就是那些针对特定任务和需求的解决能力,譬如熟练使用word来排版文字就属于应用型知识技能。
那哪种好呢?答案是都好,都有用,而不是只要一个。这就好像治病一样,有时候就需要吃中药强身健体,有时候就需要吃西药针对治疗。如果你因为偏见只接受某一个而深恶痛绝另一个,那其实是你自己的损失。
七、时代会淘汰谁
为什么我们要讨论本质型知识技能和应用型知识技能?
因为时代会淘汰的就是应用型知识技能,而本质型知识技能是不会被淘汰的。
这就好像新冠来了,以前的药根本没用,没法针对新病毒,而针对新病毒的新药还需要一段时间来开发。而你的免疫力和身体抗性却仍然可以发挥作用,所以大家发现病死率比较高的都是老年人,实际上年轻人只要医疗资源充足情况下死亡率很低的。就是因为年轻人身体素质好,抵抗力强。
同理,时代发展会首先淘汰那些只掌握了应用型技能的人。现在很多行业就非常担心被人工智能的发展所取代,担心的都是应用型技术工作者。譬如司机很担心被自动驾驶系统所取代,工厂流水线工作者很担心被自动化生产所取代,电话销售和电话客服人员很担心被语音AI所取代,等等太多了。
程序员这个行业来说,互联网软件开发就比嵌入式软件开发更容易被时代淘汰。为什么?因为这2类开发虽然都属于软件开发,但是它们有本质的不同,这个本质不同就是2类开发工作中本质型知识技能和应用型知识技能占比差异很大。
互联网行业本身变化大,发展更快速,甚至每隔几年就会有革命性的变化。大家你去看看这几年新出现的编程语言(譬如GO、Dart、Cotlin、Swift等)都是互联网行业的。连语言都经常变,更不用说各种框架那简直是一年三变。所以这些行业技能中应用型技术的占比很高,你刚熟悉了一种语言或框架,结果时代迅速变化这东西迅速被淘汰,新东西迅速火爆开来,你如果没有及时赶上那就惨了,被快速行驶的时代列车抛下了。
所以互联网开发就是个高速快节奏舞池,这也是为什么互联网行业普遍996普遍加班严重的原因。当整个舞台都在高节奏运转时,你要么咬牙快速跟上,要么被快速淘汰出局。更不用说还有很多新人每年进入,后浪随时准备把前浪拍死在沙滩上的。
八、嵌入式技术会被淘汰吗?
任何技术领域都会发展变化,不可能一直维持原状。这就好像任何列车都在开动,只是绿皮车慢而高铁快而已。
如果说互联网开发是高铁,那嵌入式开发就像是绿皮了,单纯从速度来说。
嵌入式开发有他自己的游戏规则,嵌入式开发的知识和技能中,本质型的占比非常高,而应用型的占比低。这就造成嵌入式开发的特点是:很难学会,但是一旦学会很难被淘汰。
实际上互联网开发行业刚好相反,是:很好学会但是也很容易被淘汰。
所以你不得不佩服马克思,他很早就说了:价格决定于价值,而价值决定于产品中凝结的劳动量。真的是容易得到的他肯定容易失去,而很难得到的他也很难失去。
这不是空口白牙说的,我给大家做几个实际对比。
譬如编程语言,嵌入式底层开发这么多年了还是C语言挑大梁。而C语言现在在用的主流还是C89标准(1989年制定的C标准),连C99都没几个用的。而嵌入式应用层开发主体是C++语言,虽然出了不少新标准(C++11、14、17、20等)但是实际差异很小,90%的主要特性和难度基调还都是多年前定下来那些。所以你想想,如果你做嵌入式开发,你一旦深度掌握了C/C++语言,多少年你都可以笑傲江湖。
你再看看互联网开发,前些年“PHP是最好的语言”,现在已经没几个用了。Java前些年一统江湖,现在经常被Python压着打。谷歌、facebook、苹果等动不动还发明点自己的语言和编程框架,基本上你做下个项目会用到什么鬼都不知道......
你再看操作系统。嵌入式开发只要你学会了linux这一套,你再去看什么你都发现似曾相似。譬如我们最近在讲的华为LiteOS,它的kernel配置完全移植了linux的Kconfig这一套,他的工程管理完全使用Makefile和链接脚本这一套,它的内核源码编程风格和技巧等都在linux内核的范围之内。所以对于一个熟悉linux内核知识体系的人,可以几天之内熟练掌握LiteOS,甚至只要你功底够好可以立马加入为LiteOS撰写和拓展内核的工作中。
这就是嵌入式开发,它的难不在于变化,而在于它不变但是本身难度高,你很难掌握。但是你掌握了它之后就舒服了。从这个角度讲,嵌入式开发有点像打篮球和田径比赛。你想成为也篮球高手不容易,得经过刻苦的训练,身体素质得非常好,偷懒要准确也是靠拼命苦练得来的。但是一旦你很厉害了就是很厉害了,别人很难胜过你。即使你更改了篮球赛场的规则厉害的还是厉害的,你让我随便改规则我也打不过詹姆斯是不是?
九、嵌入式linux核心课程会过时吗?
最后回答我们同学经常问的问题。
2015年录制的课程到2020年会不会过时?我的答案是完全不会,就是到2030年也不会。因为我课程虽然是2015年录制的,但是讲的主体内容却是2000年左右就确立的了,也就是说你让我2000年左右去录,估计讲出来和2015年录差不多,至少有80%都是一样的,这些一样的部分,就是知识技能中的本质型部分。
什么是本质型部分?随便列举一些:譬如C语言,譬如Linux内核框架(大家如果去看看linux内核0.11版本就知道了,其实0.11和现在的最新内核都很像),譬如处理器的中断向量表原理,譬如汇编指令和寻址方式等,譬如串口通信、I2C、LCD显示原理等等,这些都是本质型的。你只要掌握了这些本质原理,给你换一个芯片,换一个型号你分分钟搞定。
这就好像你身体素质练好了,篮球功底好了,给你换个大一号或者小一号的篮球,给你换个重一些或者轻一些的,给你换个弹性更好一些或者更差一些的篮球,你最多刚上手时不适应,但是很快就能调整过来重新变成高手。这就是本质的厉害之处。
那什么会不一样呢?就是知识技能中的应用型部分。譬如具体芯片的特定设计,譬如具体某个linux内核版本的某个API,譬如某种工具软件的使用等。这些东西会变化,如果换一个芯片方案,换一个新烧录工具等都会有不同。但是这些不同很容易搞定,你只要有功底,可以很快适应并掌握,迅速成为个中高手。
所以不要再问我210开发板会不会过时了?我们讲的内核版本会不会太老了?5年前10年前讲的课程会不会跟不上时代?不存在的,至少在嵌入式开发这个领域不存在的。
就算有一天你不用linux了,而是由另一个东西取代了linux,那么这个课程价值仍然损失很小。因为就算有一个东西能取代linux,那么他必然很类似linux,他的设计和使用到的技巧仍然是linux这一套。因为这些东西是本质型的,是由电子计算机系统的基本设计原理出发而来的。想要打破这些东西,除非彻底颠覆当前的计算机技术。譬如说以后发明的计算机不需要内存,譬如说量子纠缠之类的技术彻底革命了计算机。总之那些东西目前只能是科幻,在我有生之年不知道能不能看到了......
十、最后
人生有时候就是这么无趣!
当你学会了很多,尤其是掌握了很多本质型知识技能后,你就发现你遇到的东西都似曾相识,都能很快掌握,你每天只需要花很少时间学习就能始终保持领先。
这就是为什么我看起来好像“什么都会”,我好像什么课都可以讲。
但是前提是:你得先迈过那道坎,你得先掌握那么多难度高的本质型知识和技能。而这并不容易,所以我讲嵌入式linux核心课程超过了410小时,这么多时间不是开玩笑的,真的有点难,真的有一定门槛的。
越过那道高崖,往后余生皆是坦途。越不过去,那就只能在浅滩徘徊几年,然后无奈的被时代淘汰,被冲刷而走。这就是为什么35岁以后的“中年人”会两极分化了,实际上他们的“分化”早就决定了,只是到35岁时有些人才开始认命,或者外部压力迫使他认命。
加油,做个掌握本质型知识和技能的本质型人才吧!
暂无评论