踏上嵌入式之路,一去不复返!
大家好,昨天又有一批新的小伙伴加入,这里重新简单介绍一下自己的情况。和很多应届生一样,刚毕业有着找工作的迷茫和担忧(这里不包含已经工作的前辈),这是我去年也有过这样的经历;今天有一个网友加我微信,说在b站上看了我的介绍(b站ID:TXP嵌入式),学习经历很像他,说到这里,我也不由嘘嘘的感慨以前的时光,确实我大学里面不是本专业的,是学汽车的,在学校里的时光,和朋友搞过一年多的汽车保养和维修的创业(其实也不算创业,当时想着提高自己的技术,这算是第一次体验过如何去经营一个组织的经验,确实当老板没有想象的那么简单,要有各方面的抗压技能等等!),下面我就简单说一下,我是如何从零基础到linux开发岗位的一个经验介绍:
正如上面所说,我是跨专业来学电子的,在干了一年左右的汽车保养和维修,我果断的放弃了汽车行业(其实最为直接的原因,就是出来上班工资太低,而且以我的体质不适合干汽车维修,为啥这样说:举个简单,在进学院的实验室管理员,这个过程中要经过大概三个月的魔鬼训练,每天跑步大概6公里左右,然后跑完做各种难度的动作,到后面举汽车的轮胎也是有的,说实话,这个我真举不起,有些轮胎太大了,实在没有力气举(我本身人又瘦小,所以你懂的当时是有多么难的),后面我挺过来了,进了实验室(这里我很羡慕学电子或者计算机的网友能够进入本学院的实验室,顺便再插一句,我学历没有很多大佬那么高,我只是一名非常普通的大专生),这个过程我不展开详细讲了,今天的核心内容是如何从零基础到linux开发岗位。
我是大二下学期快要结束的时候开始正式学编程(其实大二也有学,但是中途参加过两次国家行业大赛:汽车新能源服务大赛和智能交通大赛,其中一次获得三等奖(这里非常感谢当时学院和老师的指导以及搭档老王,这两次比赛经历算是我大学里面最难忘的记忆了)。其实我学编程说实话,我的大学班主任算是我的启蒙老师(这里真的非常感谢,不然现在我自己也不知道做啥行业,没有方向感),他给我推荐了一本c语言书籍和野火的开发板来学习,后面我就一发不可收拾了,一直自学坚持到现在,这其中走的弯路太多,比如:在我自己建的一个交流群里面,经常有网友问,到底学哪个好,其实当初我也是这样,在入门嵌入式过程中,会发现真的太多东西要学,苦于当时身边没有人指导一下方向(我的班主任他是研究生毕业,一出来就来到我们学校当老师了,当时也有找老师谈过,但是自己还是没有找到方向),所以学的过程中非常累,抓不住重点,看到那样好,就马上跟风去学,其实自己内心没有去真正思考过这个技术到底是不是自己喜欢和以后吃饭的家伙(这是站在我今天已经工作的角度简单分析的。),因为嵌入式太广了,甚至很多人连嵌入式到底是啥也不知道(所谓“嵌入式”,名如其文,指在很多芯片中,其所包含的处理器就像嵌入在里面不为人知一样,嵌入式领域的应用非常之广泛,是处理器除了服务器和PC领域之外的主要应用领域:实时(Real Time)嵌入式领域(也就是我们常说的RTOS)、移动(Mobile)领域(比如要搞复杂的系统:linux、安卓等)、传统嵌入式领域(一般就是单片机裸机了)),其实这段话,我是在网络上看到一个前辈总结出的,结合自身体验,确实是分为这三大领域。
回到刚才学嵌入式过程的哪个话题,其实在过程中最大的难处在于:缺乏钢铁一般的毅力(如果真喜欢嵌入式这个行业的话,一定要坚持下去,会有意想不到的结果)、良好的学术氛围(我指的是自学的人没有好学习的环境和交流,全靠一个人走“夜路”,走到哪里算哪里,也不知道到底是对还是错)、缺乏项目经验;第三点是很多人最为缺乏的(包括我自己也是这样,其实有的网友说,学校做的毕设和企业里面做的项目差别太大了,要考虑到很多方面,这个说的确实是这样,但是我要说的是,先把学校毕设和一些小项目,认真做好,技术经验和解决问题的能力就是在一个一个的小项目中成长的,带领你如何走进嵌入式开发的大门,所以在学校里面的实战,一定要认真做好,有机会和对嵌入式感兴趣的,可以去实验室,不是说非要进入实验室,只是说实验室的环境稍微可能要好一点;把学校里面的项目做好,后面有机会可以扩展到企业项目,只要你有能力,机会总会来的,就怕你没有实力和准备,不然就算有机会来的,你也只能干瞪眼和干着急,没啥用啊,因为你不会啊,这就是现实;以后出来上班也是这样,你凭什么拿高薪,只有有能力给公司产生利润,老板就愿意给你高薪,因为你有能力,值得这个价。)这里可能又扯外了,哈哈,不过现实就是如此,只有自己有能力,资源和一切等,你都有机会得到。
这学习嵌入式过程,我自己走的弯路确实走的太多,而且很多东西又没有学会,比如说一开始学过51单片机,后面看到别人玩pic、avr单片机,我也跟着去玩,最后发现自己还是没有学会pic和avr,就是因为自己学的杂乱无比,其实这里我建议在学的过程中,最好去网络上找小项目练手,这样会学的比较好,不要只看视频教程学,这样是学不到啥东西的,只是说带你走了一个过程,熟悉了一下这种类型的开发以及一些协议和外设等等,实际你自己真要动手去做的话,你会发现不知道从哪里下手,所以说要多练,养成一个良好的编程习惯以及当拿到一个小项目的时候,我该怎么去入手,做好大体规划,然后再去深入细节(这里模块化思维很重要,真的);然后后面,发现python和opencv好火,又去跟风学这个,又走了弯路,又没有学会,这里你可以发现我,不知道自己真正要学什么,以后往哪里走,只是一味的跟风(说的难听一点,就是在装逼);后面临近毕业我真正开始意识到这一点,我得先深入一个方向去学,然后再去扩展,于是乎,我最开始是从pcb去深入的,我报了一个培训班,认真学了三个月,确实出去能够干活了,这里非常感谢凡亿的郑老师很助教的辛苦付出。在我学完pcb就直接去了一个非常小的公司里面实习,软件和硬件都要做,那时候我软件很差劲,就画板好一点,画两层板和四层还行,六层的不行,没有实战过,学的时候,跟实战还是有差别的,而且小公司里面不做那么高层的板子,六层板的话,成本还是蛮高的,更别说8层、12层那种板子了。
那我是如何接触到linux的呢?没错,我在那家小公司实习了两个月,我就走了,为啥,因为我认识到了自己到底要啥了,这个时候我无意之间买了朱有鹏老师的嵌入式linux核心课程,对于我这种小白来说,这课程可以改变了我职业发展,这是我真心话,因为我出来上班,直接跳过做单片机,直接上手linux,其实这里我也是比较幸运的,自己也比较大胆,在今天特殊情况下,一来深圳就辞职了上家公司(我正式上班的第一家公司是做手机屏幕,不算是驱动,只是简单调试显示和触摸,也不是我喜欢的;当然这里我是有准备跳槽的。)在上家公司我又待了两个月左右,这两个月,我也不知道自己是怎么走过来的,我拼了命在学朱老师课程,从最基本的linux命令(之前在学校的时候我接触过,但是太零散了。)、以及基本的c语言基础、c语言提高、linux应用编程,到现在的linux内核和驱动,在那两个月里,我每天下班都会去看课程去学(晚上下班7:30.有时候晚一点,早上上班9点,然后周末是单休),每天晚上我都学到凌晨两点左右,这和我学习pcb的时候,一样,这种感觉现在回忆起来,让人嘘嘘。期间我也开始写公众号了(把自己学的知识点,总结出来,并分享出去,读者也可以发现,我写的文章并不好,没有深度,但是这是一个人成长的过程),就是我现在这个公众号,这期间,我改变了自己的学习方式,养成了喜欢和别人交流技术,也认识了很多前辈和网友,这里他们的帮助对我影响也非常大(过程中得到了很多指导以及一些网友提的不足之处,让我纠正了很多误区。)。
其实我去找linux岗位的时候,内心也是非常害怕,怕找不到工作的,因为我linux应用,只是学完了课程内容知识,并没去找项目练手,只是想快点上手linux;于是乎,我在过年期间就开始头简历,这过程确实难了,和现在有网友找工作的感受一样;我投了很多简历,但是只收到的回复不是很多,因为缺乏项目经验以及学历的原因,没有达到要求,但是我明白,这个过程是自己成长的过程,并没有放弃对linux岗位的追求,终于后面经过在假期的磨炼,我又投了几家,终于收到了offer(这其中我自己又去认真的把课程中的一个网络编程小项目又熟悉了一边,以及c语言的基础,即使是到现在我依然会去买一些书籍,继续去巩固基础):
后面通过了面试,就顺利拿到了linux岗位开发了。这里我可能我没有说的很具体,但是这其中的艰辛只有我自己知道,多少次想过放弃从事这个行业,但是又一次次我跌倒了,又重新站起来了,因为我奶奶经常告诫我:年轻的时候要多吃点苦,先苦后甜的道理,我听过我奶奶讲她以前的故事,那时候的苦,我的苦比起她吃的苦,简直不能比)。
好了,今天就分享到这里了,这就是我的简单故事,平常和普通,只有靠自己的努力和行动才能得到你想要的。后面我会继续分享技术文章;如果有网友想进交流群的话,可以加我微信,回复技术,我会拉您进群,之所以这样,是为了防止有些人,进了交流群里面,老是发一些与技术无关的链接和广告,这样的话,就失去了交流群的意义了。最后,说一句:感谢各位网友的支持。