嵌入式学习,是一个很枯燥的过程,我记得在学习三极管的时候,我真的对这个东西一点感觉都没有,我知道三极管可以放大,然后电子从一个地方去到了另一个地方,然后就触发了某个开关,就发了大水。
然后每次看到三极管,我脑子里总是要走一个这个流程,导致我有时候会很卡壳,卡壳了,如果不疏通,就会一直卡壳。
后面就是51,STM32,各种各样的单片机,还有各种各样的模块。
昨天看到下面这篇文章,看到作者的学习过程,感触很深,嵌入式是不能发大财,但是我却那样热爱它,因为曾经吃过的苦,都是它陪着我度过呀~
以下是转载正文
我是公众号 微联智控工作室 的号主,网名 helloworld,1990年出生于广东江门,2009年参加高考,2012年毕业于广东轻工职业技术学院,电气自动化专业。目前从事嵌入式软件开发工作,主要的技术栈是C语言,单片机应用技术,嵌入式Linux应用开发,低功耗蓝牙BLE SOC应用开发。
从以下几个方面,聊一聊自己这些年平凡的从业经历和感悟吧。
我的大学生活
2009年因为高考失利,差一丁点分数就能考上广东本科A线,被划分到本科B线,但因为本科B线高昂的学费,最终还是选择了广东轻工职业技术学院这间高职院校。
前两年的大学生活,都是按部就班地上课下课,然后参加一些学校举办的活动,大学期间没有逃课没有挂科,也没有沉迷游戏(原因是我玩什么游戏都不上手),就这样平淡地过了两年的大学生活。
大三的第一个学期,在一次偶然的机会下,我报名参加了当时广东省举办的首届PLC职业技能大赛,几个月的时间,几乎就是实验室、食堂、宿舍三点一线的生活,在几个月的学习时间里,学到了很多前两年学不到的东西,包括PLC应用编程,工业变频器的使用,触摸屏组态软件使用,交流电机驱动等知识,最终,得了个技能大赛三等奖。
PLC职业技能大赛现场
这次技能大赛结束后,平淡且普通的大学生活也就接近尾声,开始要找实习工作了。
毕业后的实习经历
由于参加比赛所学到的技能知识是可编程逻辑控制器(Programmable Logic Controller,即PLC),所以,大学毕业找实习工作的时候,都是关注PLC技术相关的工作岗位。我找实习工作的时候,已经过了秋招,而且我当时心里面的理想工作岗位是PLC开发工程师,所以,找工作的道路比较曲折,因为大部分的企业,对于这个岗位都需要有工作经验的开发人员。
找了大概两个多月的工作,不断地在网上投简历和面试,几乎跑遍了整个珠三角地区,最后在广州郊区某个包装机械设备公司,找到了一份设备工程师助理的实习工作,那时是2012年7月,刚拿毕业证,月薪1500,单休,工厂包吃住。
刚刚进到公司,主要的工作是熟悉公司的包装机械设备,协助工程师完成调试工作,偶尔为了赶设备交期,还要通宵加班,那时候是广东七八月份的夏天,40多度的工厂里面,每天工作完之后衣服都湿透了,但由于可以学到PLC相关的技能,所以我觉得这也没啥,环境还可以接受,图为正在调试的ABB工业机器人。
在工厂内调试ABB机器人
在工厂里面熟悉了两三个月设备后,上司开始分配出差任务给我,要我跟着两位老师傅到省外去调试一台设备,准备交付客户使用,而且跟我说,以后调岗到售后服务岗位,需要跟着师傅全国出差,到现场调试设备,保证设备成功交付给客户使用。
出差的沿途风景
这次出差调试后,我开始怀疑自己是不是不适合这种工作方式。到处出差调试的生活,可能不是我所追求的,但这个工作岗位性质,决定了必须这样,于是,我考虑转行了。
开始转行嵌入式开发
2013年1月份,有一个关系比较好的小伙伴在深圳做单片机开发的工作,从他口中得知他们公司招聘单片机工程师助理,于是,在他的帮助下,我拿到了一本单片机的教程书籍和一块51单片机开发板,然后开始了单片机的学习之旅。
用来入门的51单片机开发板
在自学了一个多月之后,学习了一些基本的单片机知识,因为在大学里面也学过C语言,所以,在2013年3月份面试,然后顺利入职,试用期工资2300,不包吃住,从此踏入嵌入式开发这条路。
刚刚进到公司的时候,职位是单片机工程师助理,所以,要经常帮助工程师画电路和板子,还要焊接和调试,写测试报告,有时也要到工厂跟进产品的生产,既然是助理,那就是什么事情都要做,那时候没什么基础,一心只想多学点东西。很感激这段经历,让我理清了电子产品的生产设计流程,从设计到生产,每个阶段都略有涉猎。
为了学习更多的单片机开发知识,我经常跟小伙伴从早上8点开始到公司,每天下午6点下班后,到公司楼下吃个快餐,又回去公司加班,学习公司的产品是怎样开发的,公司的产品用了哪些单片机知识,每天下班都是晚上9点后了,坚持了两年。(当然,那时候跟现在的互联网行业通宵工作没法比)
下班后的办公室
在这两年的时间里,买了一些开发板,自学了STM8和STM32这两个系列的单片机,那个时候正点原子刚刚推出了STM32开发板,我应该算是首批尝鲜玩家了,周末的时间也花在STM32的学习上面了,后面还自己动手画板子,动手搭电路,做了一些额外的小模块,等等。
买来进阶的正点原子开发板
自己做的电路模块
那时候的深圳,由于是关外的地区,房租还不算太贵,一千块钱就可以租一个什么配套都没有的两室一厅房子了,和小伙伴们合租,一个月的房租算上水电网费用不到400块钱,那时候还没结婚,负担还不算重,一心只想多学点知识,谋求更好的发展。
深圳关外租的民工宿舍
在深圳工作学习了两年之后,算是入门了单片机软硬件开发,也掌握了单片机软件设计的大概流程,学会了设计基本的数字原理图和画基本的两层PCB电路板,搞懂了电子产品的生产设计流程,在深圳的两年,学到了不少关于电子产品设计的知识。
现在的工作状态
为了不想和女朋友继续异地,她在广州,我在深圳,我计划到女朋友工作的城市找工作,在网上投简历差不多一个月左右,终于在广州找到一家做嵌入式开发板的公司,那间公司刚好招聘嵌入式软件开发的岗位,跟我现在做的工作不谋而合,于是,我的工作地点就从深圳转到了广州。
广深高铁票和深圳工厂
刚刚入职广州那间公司的时候,是被安排做BLE蓝牙开发和单片机开发的,因为公司当时有这两方面的业务需求。我当时对低功耗BLE蓝牙一窍不通,于是就从网上买了TI CC2540的开发板,硬着头皮上。最难搞懂的,就是蓝牙的各种基本概念了,就算搞懂了一些基本概念,也是停留在会使用的基础上,蓝牙协议栈深层的东西,没人指导,实在太难入门了。
由于公司是做嵌入式Linux开发板的,不缺乏嵌入式Linux的开发板和各种资源,于是我上班时间就做BLE蓝牙开发和单片机开发,下班时间就学习嵌入式Linux相关的知识。由于住得离公司比较近,基本上每天早上8点就到公司,晚上也可以随时加班学习,周六也会到公司加班学习。
当时为了系统地学习嵌入式Linux相关的知识,还花钱在网上买了韦东山的嵌入式Linux视频,用S3C2440开发板,跟着视频一步一步地进行学习,因为在公司的岗位不是从事Linux开发的,所以,学习的深入程度比较有限,但凡事有利也有弊,由于涉猎的技术领域比较广,这为我后来成为公司的项目经理作了铺垫。
韦东山嵌入式教学视频
我平时主要的工作,是做单片机和BLE蓝牙应用相关的软件开发,但因为我学习过嵌入式Linux相关的知识,再加上我在深圳工作的时候,有过电子产品的设计和生产经验,所以在做项目的时候,可以很方便地跟其他项目成员进行沟通,因为对于每一个环节我都略有涉猎,正是因为这样,我开始接触公司的项目管理工作。
可能很多人会有疑问,什么技术都搞,岂不是什么都不精通?确实是会有这样的情况,但结合我自身的实际情况,我只需要熟练掌握一门技术,其他技术领域点到即止,够用就好。因为我走的职业发展路线跟技术专家走的路线不一样。
项目管理工作,需要项目经理有比较宽泛的技术知识面,并且有一定的沟通能力,能站在不同的角度去思考各种问题和利弊,对内要跟上司和项目成员沟通,对外要跟客户进行技术对接,因此,对于项目经理的岗位,要有一整套系统的工作流程和细则,所以,我除了进行项目的软件开发,还需要编写一系列项目管理文档。
项目管理相关文档
以上的项目管理流程是针对中小企业的,因为我自己清楚地知道,大公司大企业的项目管理流程,远远比这个复杂得多,但以我目前的学历是比较难进入大的企业工作的,但即使进不了大企业工作,也要有自己的职业规划,在小企业工作,也是可以有很多自我提升的途径和持续进步的方式。
在工作或平时的交流中,很多人会对学历提升有所困惑,特别是很多大专学历的毕业生,对于要不要花时间提升学历感到迷茫,我个人觉得,工作以后如果有时间,在经济允许的情况下,提升一下自己的学历是有必要的。
虽然现在社会上,很多企业对在职学历的认可度并不高,但社会的发展趋势是不断进步和发展的,很多时候,更高的学历应用,不再应该局限于工作上,还有可能影响到你以后的定居城市以及各种各样的发展政策,很多优待政策可能需要本科或研究生以上学历才能享受,所以,业余时间提升一下自己的学历,总是利大于弊的。
关于技术以外的思考
在广州的公司里面进行了两三年的嵌入式软件开发工作和项目管理工作之后,我开始感到越来越迷茫,甚至没有了方向感,因为嵌入式这个技术领域实在太宽太广泛了,简直就是一个无底洞,学得越多,自己反而会觉得越来越无知,也不知道自己学那么多东西到底是为了什么。
在迷茫和焦虑了一段时间后,2019年过完年,我开始进行自我反思和总结,回忆自己的技术学习经历,也就是从那时起,我开始用技术公众号和博客的方式,记录自己的学习过程,把以往学过的技术进行总结输出,同时也锻炼自己的写作能力。
很多人可能会觉得,现在很多技术博客或者技术公众号,里面的知识内容都是搬来搬去的,很少创新性的技术总结或成果。确实是这样的,但这要看站在哪个角度去进行考虑,毕竟很多事情不是绝对的,都有利弊。
如果站在创作者自身的角度去想,通过技术文章的总结输出,不但可以锻炼自己的写作能力,还可以让自己所学的知识更加系统化,当这些技术文章积累到一定程度的时候,就会从量变产生质变,吸引更多的同行关注,而文章的输出质量,也会成为你个人的一种表现方式,同时也可以显现出你的做事态度。
需要以一种“长期主义”的心态去对待技术写作,并且很多时候都是投入大于收益的。通常一篇照顾读者感受的技术文章,是需要作者花好几天甚至半个月时间去进行构思的,写作过程中还要考虑文档里面的配图创作。
我的CSDN博客主页
我的技术公众号
这种持续性的学习和总结输出,时间是会让其产生复利效应的,因为在写作者自身的学习过程中,会不断吸引同样优秀的人,跟优秀的人一起学习交流,只会让自己变得更加优秀,而不是让自己一直处于低头拉车和原地踏步的状态。
很多人会有一个疑问,平时上班已经够忙了,哪会有那么多时间进行写作和总结?我个人觉得,大部分的嵌入式开发工程师都是脑力劳动者,而不是劳动密集型的生产线工人,既然是脑力劳动者,不管是上班还是下班,必然会安排时间留给自己进行技术的学习和提升。而写作和总结,只不过是比其他人多走一步,多花一点时间而已,这些时间的付出,基本上是可以进行管理和控制的。
在进行技术写作不到两年的时间里,我开始让自己走出了技术开发者的思维,因为跟其他优秀的小伙伴交流多了,就会以更加开放和包容的心态去看待职场生活里面的人和事,同时明白到不管在生活还是工作里面,沟通的态度可以影响甚至决定事情的发展。
在平时上下班挤地铁的时候,我会开始看各类型的书籍,希望可以解放自己的思维牢笼,不再以技术书籍为中心,而是多看一些关于人文社会或者商业哲学的书,这些经典的著作可以让自己更加关注这个社会的各种状态和现象,让自己更加关注这个社会的发展。
有些书籍里面的概念可能很抽象,现在看起来会感到吃力,比如马克思的《资本论》,但相信随着自己的社会经历不断丰富,将来再看的时候,必然会有自己一番独到的见解。有时候会感到十分的可惜,大学期间没有那个觉悟,也受限于当时没有社会经历,浪费了很多时间,不懂得好好利用大学图书馆的资源。
我的微信读书
关于未来
我个人并不喜欢过多地去想象未来的生活及工作,也就是不会对未来充满乐观或悲观。因为在很多时候,正确认识自己和活在当下已经是一件困难的事情。未来是由自己的今天和昨天一点点积累而成的,如果要让未来的自己变得更加优秀,那就要从现在这一刻开始作出改变。如果一个人明天的生活跟今天是一样的,那么未来就没有进步可言。
一个人进步的前提,首先要做的就是认识自己。
我必须要认识到今天的自己存在哪些不足,自己对别人有什么价值,自己目前遇到哪些瓶颈,这样才能对今天的生活作出改变。我觉得,一个人如果不能正确认识自己,就会经常处于一种混沌迷茫的状态,每天都是原地踏步,更加不会有进步的未来可言。
所以,好好地总结今天和认识自己,就是对未来最好的铺垫。
1、保持不断学习的心态,持续提升自己的学习能力。
2、经常问自己,对别人有什么价值?
3、以更加开放和包容的心态去看待和思考各种社会现象。
4、要有一种非暴力的沟通态度。
5、事情的发展并不是非黑即白,中间还存在一个灰色的过度地带。
6、各种事物和社会关系,平衡就是一种最佳的存在方式。
推荐阅读:
专辑|Linux文章汇总
专辑|程序人生
专辑|C语言
我的知识小密圈