[IT技术] 该不该放弃嵌入式,单片机这条路?

[复制链接]
fanfan480 发表于 2023-10-4 19:19:23|来自:北京 | 显示全部楼层 |阅读模式
本人,一个毕业工作两年在深圳工作的菜鸟单片机工程师。
说说这两年来自己的一些看法。
个人语言表述能力较差,加之经验不足,望见谅。
1.程序编写
1.1对架构能力要求较高。比如做一个自动售卖咖啡机,在开始写之前要对整体有一个很好的框架,各种状态机的切换等等
1.2 对编程技术的要求。我在接手过很多老员工留下来的代码,我觉得写的真的很烂,一座屎山,包括我写的也是。程序耦合很高,不好移植。
2.技术更新迭代
2.1不止芯片,也有新技术,根本学不过来。
3.各种算法
3.1比如滤波的,FIR,EFK等,电机的,无感FOC等。很多很多,极大考验数学,电路,等理论及综合应用能力
感觉快撑不下去了,有没有老铁指教,多谢!!!
全部回复5 显示全部楼层
hslxwu 发表于 2023-10-4 19:20:05|来自:北京 | 显示全部楼层
我与嵌入式软件开发爱恨交织7年,今年秋招拿到BAT华为等公司45-60W的offer,希望我的经历可以帮到你。(也许很难直接帮到你,但是希望可以帮到许多在校学生)
                                                            阶段1:大一到大三
<hr/>这个阶段我与大多数学生相同,学习本专业知识(EE专业)+学习嵌入式软件开发需要的计算机课程(汇编原理,计算机组成原理,操作系统,C语言等)+嵌入式项目(来源于实验室项目,自己想到的项目以及各种比赛)。想了解项目的童鞋可以看下面这个链接。
你写过什么有趣的程序?想看答主一路如何在嵌入式学习上摸爬滚打的,可以看这个链接:
大学没做过什么项目,以后找工作怎么办?不想看的可以直接看概括版---如何学习嵌入式软件开发:
  1. ①学习51单片机,这个阶段你只需要跟着郭天翔的视频去学,只要求实现功能,不求甚解。但建议能够提出问题,比如“为什么往IO控制寄存器写入特定值能点亮LED灯?”“IO口的电路结构是什么样子的?”“什么是上拉下啦,灌电流拉电流?”,这一阶段主要是熟悉单片机的使用,并且在使用中思考发现问题,还能熟悉一些基本概念。
  2. ②开始查资料看书,看模拟电路数字电路等等,开始去弄明白1中所提出的问题。这时候问题主要集中在电路方面。
  3. ③开始学习STM32,随便买个板子,看原子的书跟着一步步去做。这时候你会遇到很多计算机方面的问题,这时候一边学习教程,一边学习:微机原理,编译原理,操作系统。你要弄清楚ARM架构,弄明白CPU如何取指,译码,执行,知道地址总线,控制总线,数据总线如何工作。要弄明白你编译各个阶段产生的各个文件是什么,什么是分散加载,什么是重定位,什么是代码段,什么是数据段,等等。还要能弄明白CPU如何启动,程序镜像在内存中如何布局。要知道中断的原理,以及现场保护等等。最后你了解了各个知识点之后,转向GCC开发STM32,这时候你如果知识掌握得不错,你应该可以很快地学会编写链接器脚本并且明白每一条语句所代表的含义。
  4. ④开始增强C语言,深入挖掘C语言的各个死角。最好可以做到当你写下一条语句的时候知道编译器会如何处理。还需要数据结构和软件工程,建议最好还要学习一下设计模式。开始学习养成良好的代码风格,开始思考代码的结构。可以说设计模式如果能学好,在往后学习LINUX内核时大有裨益。你会发现LINUX的输入子系统有点像职责链模式,会发现ASOC音频系统有点像模板方法模式。私以为,如果能在两个以上不同方面考察同一种编程思想,你会得到更加深刻的理解,更能领会其精华。
  5. ⑤认真研读OS方面的书,各个知识点都要弄明白,进程是什么程序是什么线程是什么,竞争死锁优先级反转,虚拟地址空间物理地址空间,用户空间内核空间等等。开始学习ucos,这个没什么可说的,如果在2中能熟练掌握各种知识点,知道CPU如何中断如何保护恢复现场,那么读ucos的源码时候,在原理上就不会有什么疑惑。如果能在4中养成把握代码整体结构的能力并且学习好数据结构和基本的算法,读源码就没有什么障碍。一旦原理弄通了,源码也能读懂,那么吃透ucos就是顺理成章的事情。
  6. ⑥自己仿照ucos写一个stm32上的实时os出来。
  7. ⑦进军LINUX。学习LINUX的基本使用,看赵炯那本内核剖析,啃LINUX内核设计与实现,把握总体的内核架构。之后可以学习驱动,看建议陈学松老师的书,弄明白基本的驱动架构和如何编写简单的驱动,认真对待,这里强调一下设备驱动模型。最后啃LINUX内核源码情景分析,上下两册用心读,这里着重强调一下内核中的VFS部分。之后就是看宋宝华老师的书,进一步学习驱动开发。最后。。。。。。。看内核源码看内核源码看内核源码。
  8. ⑧其它的什么SPI,IIC,什么DMA,都只是技能问题,只要知识学的好,技能想咋点就咋点。
复制代码
                                                     阶段2:大三到研究生入学前
<hr/>这个阶段我在工作与考研之间无比纠结,并在此期间无数次常思考嵌入式开发到底是什么,如何把嵌入式开发做好,以后该选择怎样的一条职业道路。为此,像很多人一样,在知乎上像做嵌入式开发的前辈们咨询过多次。
在这个阶段,我学习了Linux驱动开发,并渐渐认识到,嵌入式开发是一个比较偏软件的岗位(我认为大多数学生做的工作都是嵌入式软件开发,而不是硬件开发),应该深入学习计算机体系结构的知识,而不是把那些无聊的嵌入式相关项目翻来覆去的做(尤其少参加乱七八糟的比赛)。
最终,我选择了读研,想站的再高一点看这件事。
                                                      阶段3:研一
<hr/>进入研究生阶段(2018),当大家都火急火燎的加入AI的阵营时,我依然对嵌入式爱的深沉。选课时,我选择了嵌入式实时操作系统,计算体系结构相关的课程,还看了很多相关的书籍,依然每周保持嵌入式Linux的学习。
时不与我,明明选择了做底层的导师,结果导师转做深度学习了,还好是做终端+AI相关的方向,也不算完全偏离嵌入式,这让人多少有点欣慰(毕竟我还是放不下嵌入式的)。在这个阶段,由于接触了不少的人和事,我越来越认识到,嵌入式只是一个平台,切勿把嵌入式看作一个具体的岗位,无论硬件还是软件。
因此,我对这个岗位以及行业就业现状有了更进一步的认识。解读可以看这个链接:
普通一本研一电子与通信工程想走嵌入式方向该怎么学?                                                      阶段4:研二到研三
<hr/>在这个阶段,我对狭义嵌入式(驱动,应用开发)完全释怀,因为我认为许多人喜欢的嵌入式并不是驱动或者应用等开发,而是对底层系统的一种好奇心与掌控时的快感。与其说喜欢嵌入式,还不如说喜欢的是计算机体系结构。因此,只要是涉及到硬件的软件开发,我都喜欢,我也将其均定义为嵌入式。因为嵌入式软件开发就是建立在底层语言,计算机组成原理,操作系统等知识上的一种软件开发,如果你想将嵌入式开发做好,你就得学好这几门课程 ,如果你学好了这几门课程,底层软件开发工作的岗位你应该都能胜任。因此,又何必将嵌入式开发狭义的划到驱动开发,XX协议开发之类的呢?(向钱看)
最终,这个阶段我毅然放弃了Linux驱动的学习,投入了Python深度学习的怀抱中。
我不再关注我到底做的是不是嵌入式开发,只关注和嵌入式平台有没有关系。我研究的是如何把一个深度学习模型部署到嵌入式平台上去。有人可能会疑问,这和嵌入式开发有什么关系?为什么没有关系呢?在嵌入式平台上用C语言编写神经网络模型的前向推理,这不是把我们的C语言和组成原理的知识发挥出来了吗?当图像处理程序性能不足时,查看生成的汇编程序,当汇编效率不高时,将C语言替换为我们自己写的汇编代码,这还不够嵌入式吗?
其实,当我们把思路放宽后,嵌入式就不再是某一个具体的岗位了,它有可能是AI算子工程师,AI编译器开发工程师,FPGA加速工程师,高性能工程师等等。这些岗位需要的技能与嵌入式工程师极为相似,年薪却最低30W起。为什么?很简单,供需关系决定价格!
嵌入式早已江河日下,但嵌入式+某一风口就能迈向高薪之路,这个道理在任何技术领域都是通用的。2018年-2021年,嵌入式+AI=高薪,未来嵌入式+XX也可以。至于未来的风口是什么,就要靠我们自己去探索了。只要保证我们自己有核心的知识储备,再学习一下风口相关的技术,立马就能咸鱼翻身。
在视野拓宽后,我去了2家大公司实习,后续我陆续收到了很多公司的offer。里面既有纯算法(计算机视觉)的岗位(50-60W),也有异构计算的岗位(45-55W),也有AI芯片工具链相关的岗位(45W-50W)。
<hr/>回头看,我好像已经2年没有学习过嵌入式开发了,但是好像依旧在嵌入式学习的路上。
<a data-draft-node="block" data-draft-type="mcn-link-card" data-mcn-id="1372339897190100992">到底要不要放弃嵌入式这个问题我没法给出答案,但如果把看待嵌入式的视角变一变,生活可能会变的更好。
<hr/>题外话:
这个分割线下面,我是想补充一些题外话,也是近几年做技术的一些所察所想。
首先我想说一个很匪夷所思,却又相当普遍的现象:当我们技术人员对行业薪资不满意时,往往不像其他人一样良禽择木而息,而是对自己的技术能力开始质疑,然后不断打磨精进,期望获得更高的薪资。在此期间,不但会质疑自己,还会用所处行业的大佬XXX来作为自己的精神支柱。这种精神支柱不但给予了前进的动力,也为自己当下生活的不满意提供了合理的解释。毕竟,“我”的确是与大佬有差距的,因此,我的现状是应该的。
但是,现实是,技术为我们带来的薪资高低往往取决于市场的需求。讲到这,造成焦虑与痛苦的来源好像不言而喻了,就是既没有当前行业的顶尖能力,又没有迎合市场的乐趣。
这一点在嵌入式相关的行业似乎尤为明显。为什么?嵌入式开发是一门非常吸引人的技术,能为人提供较多的乐趣(起码对我来说),且从事这一技术岗位的人,往往非常务实和本分。这里有一个似乎很新颖的观点,为什么做嵌入式的人就“本分”了呢?我的答案是,因为这些人在诸多选择中选择了嵌入式,而且多年都不曾因就业大环境而改变(例如我自己)。嵌入式如同一个IT行业的“本分”筛选器,越是筛选,剩下的人就越“本分”。这种“本分”当然也与嵌入式带来的兴趣和满足感是有关的。作为对比,我们看看android ios开发,当初android ios开发大火后,很多人涌入进去了,异常火爆。也就过了那么几年,android ios开发的人却指数下降了,为什么?这些人本来就是来投机的,想找个好工作,兴趣成分非常少!既然没兴趣,行业造就岗位也变少了,那就溜了,但嵌入式还真不是!以我自己为例,身边还在做嵌入式的朋友,可谓是相当“本分”了,人都非常的nice!踏实,精益求精,极其有“工匠精神”,让我非常佩服。
事与愿违,因为钱的缘故,我没法“本分”下去了。当我不“本分”后,生活也仿佛变的更好了,这里我可以讲一个我个人的故事。由于我不“本分”了,从事了风口工作,除了我正式的工作外,还有小公司请我兼职他们公司的项目,一年给我开30W(合同给我,我拒签了,因为我想“本分”的好好工作)。。。。。如果加上这份兼职和我正式的年薪,相当于毕业第一年就有接近90W的年收入,这是我以前做嵌入式时想都不敢想的事情。
在这里,我并没有炫耀的意思,只是想传递一个自己的感悟。要么获得当前行业的顶尖能力,要么就迎合市场,两者不一定冲突。
放下手中的《c ++ primer》,拿起其他书读一读,可能是当下普通工程师最缺失的教育。
pasu 发表于 2023-10-4 19:20:59|来自:北京 | 显示全部楼层
写一写我的经历,希望对你有一定的启发。
我是2011年本科自动化专业毕业,大学时玩过51单片机,但是那时就跑了一个流水灯实验,还是用汇编实现的,C语言我都不会,尽快本科时2级C我考了92分,但是不实际使用很快就忘完了。大四暑假去一个小公司面试,人家问我什么是串口,我懵逼的不知道如何回答,自然人家不会要我。
所以现在回看那时的自己,就是一个嵌入式渣渣。
考研也没有考上第一志愿的理想学校,调剂到了北京一所高校,导师的研究方向是模式识别方向,那时图像处理还没有现在这么火,研一的时候导师给我安排了一个VC++的上位机编程项目,结果我实在是搞不定,后面被迫放弃。那段时间我愁的满嘴溃疡,直到现在我还时不时的平均每月一次溃疡,不知道是不是当初留下的后遗症。
我导师接外面的公司里的项目,我做的第一个项目是一个天然气管道流量采集系统,功能很简单,就是通过RS485 Modbus协议采集温度、流量值,然后发送到监控中心显示。买的现成的RTU设备、中心软件我用的组态软件,所以整个项目了里真正的编程代码工作几乎没有,是一个集成项目。但是这个项目给我的收获非常大,因为里面的所有工作都主要是我完成的,包括原材料购买、机柜安装、现场设备接线、调试等。最后看到现场的数据能够通过3G无线网络传输到远端中心,那当时的感觉还是很不错的。
不得不提,当时我的一个师兄给了我很大的帮助,因为当时我连网络ping的原理都不懂,连什么是交换机和路由器都搞不清楚,是他教了我这些基础的知识。
通过上面的这个项目,我第一次体会到了真正的实际项目是怎么回事,并且也建立了一定的自信,就是原来我也可以做成一件事。
这个项目做完,有段时间我还一度想着以后毕业了就从事工控行业了...
后来,又参与了导师的一个真正的嵌入式的项目,做的是一款物联网燃气表,这里面包括了单片机、手机平台芯片,开发语言是C语言,我那时在现在看来依然是个打酱油的角色,主要就是在外面公司里打打杂,从头到尾也没写过几行代码,不过啊,这期间整天耳濡目染,没吃过猪肉也见过猪跑啊,对嵌入式里的一些概念(串口、IIC、下载、sourceinsight、低功耗等)算是建立起来了,并且我那会也直接和英特尔的工程师一起调试,也学到了很多东西,期间还去上海出了一趟差。这也让我确定了毕业后要进入一家外企芯片公司的念头。
研究生的时光很短暂,第三年就找工作了,由于我准备的较充分并且也有实际项目经验,所以很快就拿到了好几个公司的offer,包括MTK、中兴、威盛、Freescale等。一开始我选择了MTK的linux驱动开发的职位,还去公司实习了1个多月,后来由于没抗住压力和Freescale offer的诱惑,最后毕业时去了Freescale,时过境迁,现在Freescale都不存在,已经被NXP收购了。
第一份工作月薪10.5K+40%业绩奖金+补充住房,当时说的年薪18.6W,那时真心觉得很高啊,因为我本来的期望就是月薪能在8-9K。我的职位是FAE,就是技术支持工作,要经常面对客户,给客户做支持。做了3年后,离开。
离开的原因是,觉得我需要在一个行业专注,做的有深度,同时不想在大公司做一个螺丝钉,于是进入了一家私企,从事车联网V2X行业,又干了两年,这两年我做了单片机的项目,也做了Linux应用开发工作,同时学会了初级的C++编程,另外对产品有了直观的体验。
去年离开,又跳槽到另外一家公司,也是做的同样的行业,目前职位是产品经理,同时也在不断的学习技术知识,月薪30K+。这一年来学会了QT 进行Ui程序开发。目前正在学习JavaScript前端知识,希望能够自己搭建一个简单的系统。
业余时间,和前公司领导写公众号TopSemic,我们也在不断分享过去的经验和教训,希望帮助在嵌入式、芯片行业的朋友。其实每个人在嵌入式行业都会遇到很多问题,大部分你遇到的问题别的人都遇到过,如果能和过来人多交流多沟通,对你影响是很大的。
对于我而言,我不会放弃嵌入式、单片机,因为我是发自内心的喜爱,我相信我会一直坚持做下去。同时我也会不断学习嵌入式之外的相关知识,因为一个完整的产品不仅包括嵌入式,还有手机端、web端等内容。我不求全部都精通,但是我一定会去实践,去亲自体验。
结合自己的情况(爱好、能力、年龄)等,做出最佳的选择,而不是人云亦云,不知所从。同时一旦确定方向,要坚定不移的去执行,去坚持,不到万不得已不要轻易放弃。
此外要和行业里的人多交流,不断开拓自己的视野,不要总是只盯着自己干的一点事情。要了解你所处的行业,以及整个产品的各个环节,包括芯片(芯片本身就很多门道,什么代理商啊,贸易商啊,原厂啊,很多人都搞不清楚他们的关系),硬件(原理图、PCB设计)、产品外壳、结构,包装,生产环节、UI设计等等方面。这些东西如果有机会,最好是自己亲手参与一下,只有实际做了,才能理解其中的东西。
我就自己完整的经历过:画原理图、PCB,打板、买元器件,烙铁焊接、调试、写嵌入式代码,写上位机、移动端软件,设计产品、现场安装调试等所有环节。我是属于那种自己不亲自干过就不明白的那种。另外嵌入式包含的东西太多了,建议大家除了单片机,还尽量学学linux,我感觉最近几年linux越来越普遍了。同时无线通信应用越来越多,wifi、ble、Lora、NB-IOT、4G/5G等,无线的知识也得多学习。
最后嵌入式说白了是为了完成一个项目、完成一个产品的工具,技术手段,除了技术本身,你同时应该对背后的行业、业务有深刻的理解,这样自己的价值才会更高。
关于关注我的公众号:TopSemic,大家在未来的日子里共同成长!
Llg 发表于 2023-10-4 19:21:31|来自:北京 | 显示全部楼层
我是17年毕业的不知道是不是同一年的,我毕业前四个月的时候去了一家地理测绘公司的无人机部门,做的是硬件实习生(但是后边转正是软件工程师,这个后边说),在学校感觉自己还是比较牛逼的,在实验室呆了两三年,也参加了很多全国比赛,但是到了公司开始还是挺吃不消的,分配的工作也就是画画板子,调调单片机代码,做的都是些比较外围的活,这时候我和你的感觉一模一样,觉得很失望,感觉前途渺茫,不过我这人有一点好就是不服输,就拼命学呗,每天几乎都是第一个到公司,晚上几乎也是最后走,为了省钱住的很远,还得挤地铁,路上就拿手机看教程,看书,回家拿自己的破笔记本学到一两点(写这个回答的时候现在是凌晨一点,这就是我毕业几年每天的作息)
我觉得这是我的一个优点,就是可以一直坚持学习。
OK,回归正题,后边一毕业就转正了,也没有实习期了,负责的工作也开始从边缘向一些独立部分转变,主要是无人机周边的驱动开发(光流,GPS,摄像头),还独立接了个任务,两个月完成一个无人机力效测试装置(因为专业的设备要几十万,所以你懂的),接手之后开始不觉的,后边却是亚历山大,从电路设计,机械设计,方案设计,上位机设计所有都自己做,很多技术只是听过,但是没上手过,但是还是硬着头皮干,这个和我参加电赛那会有点像了,不同的是电赛只是三天,这个却是两个月,这个完了之后基本同事就不把我当一个刚毕业的本科生了。
后边做了一年左右我开始接手飞控,这个明显就复杂了很多,使用语言从C语言变成c++语言,但是说实话还挺兴奋的,后边半年又是持续的学习,我基本看了淘宝上能买的所有关于无人机的书,还专门去北航听了全权教授的无人机课(几乎全是数学推导,还好自己数学底子还行,总之收益良多)
然后在我觉得工作对我没太大挑战的时候我离职了,原因很多,但是更多的是对自己的思考,看了很多书,但是总觉得格局太小了,虽然我喜欢嵌入式,但是我知道按照当时的情况我也就这样了,所以离开了,想了很多,想转互联网,但是一个是这么多年的嵌入式情节放不下,还一个是自己一直没在互联网方面积累过,贸然转行也不容易,还一个想法是去考研,我对象在北邮读研,去找她一起读书也是不错的选择。
但是当时脑子很乱,于是我去了趟广东,去了广州,深圳,东莞,主要就是国内的电子产业集中地,感触良多,我知道还是喜欢这条路,而且我也坚信嵌入式是有前途的,所以回北京后我还是走了嵌入式这条路,不同的是我去了更大的平台(世界500强),之前就有前辈和我说,外企是磨砺技术的好地方,到那里看看别人怎么做事,怎么解决问题,你会有很大的收货。
然后就是两年过去了,我回顾一下,再看当初做的那些嵌入式项目真的觉得很简单,倒不是那些没有技术含量,只是你经历了很多大规模的问题解决方案,再看那种三两个人做的项目从架构上就知道不会太难,事实却是如此。
当然成长的不只是技术,因为编程本来就不关取决于技术,主要是基础加思考能力,还有英语能力(真的很重要),这些都是我这两年获得长足进步的地方。
======================================================
抱歉,啰嗦了一堆,在看你的问题,从你的描述中可以帮你总结一点,你的基础知识不太好,我自己是电信专业毕业,单片机还是我的专业课,但是工作之后才明白,做单片机开发可不是真的就只需要单片机知识(我一直觉得计算机专业是最适合做嵌入式的,他们的专业课都太好了,我是毕业后自学了所有计算机课程),所有你要是想在单片机技术有所突破最好把基础打好(高阶C语言,数据结构,计算机网络,操作系统,计算机组成原理,微机原理,最好在学下c++,范式编程对于思维是极大的拓展,这些的前提是硬件的基础也得跟上,主要就是模数电,电路设计,PCB技术等),硬件我本科学的就比较扎实,所以这三年一直在补软件那边,需要视自己情况而定。

说完基础,第二个就是环境,我非常建议去比较大型的公司磨砺一下(说的是嵌入式方面,互联网那就是转行了),大公司的好处就是有很多大神,真的人聊天都能让你进步,因为思维格局都比你高不少,有了足够的软实力和架构知识,在回头看发现很多问题迎刃而解了。
=============================================
2020年4月4日20:21:58 补充
补充下互联网这个点,毕竟现在对于毕业生而言,基本是全员扑向互联网,感觉好像自己只要做互联网就能马上升职加薪,迎娶白富美,走向人生巅峰~~~~
实话实说,人真正难得就是认清自己,知道问题出在哪(解决问题的思路),从大多数技术行业而言,菜鸡(无任何贬义,也有点自嘲的意思)只靠转行,不管到哪里还是菜鸡,这根本就是逃避问题,嵌入式是个需要各种技术的学科,原则上学好了嵌入式在转互联网是轻而易举,我目前公司很多大牛都去了阿里,旷世,华为等一众互联网公司,他们也只是做嵌入式的,但是他们的知识深度和解决问题的能力绝对能胜任互联网公司比较高阶的技术开发工作,所以说到底还是打好基础,不断提高自己的水平,在自己喜欢的行业深耕的体验绝对是不一样的。
我一直说基础好像很抽象,最后总结下,就是你要梳理自己的技术栈,并不断的填充提升它,这个过程只能在工作中做到,自学看书什么的效果只是知道的级别,需要靠项目压力融会贯通。还一个据我所知,很多转互联网的人基础都很差,去了基本就是做最简单的工作,目前互联网这么热门,能想到这个行业积累了多少名校牛人,我一直是相信跨领域竞争的,找到自己喜欢的已经是高维度了,借着兴趣艰苦卓绝的学习是唯一的方法。(即使去了互联网也是这个路子,不过可能失去了兴趣,那就太遗憾了)
=============================================
说来有趣,我一直觉得嵌入式很有意思可能是因为我的入门是郭天祥的这本,我是直接边看边上手做项目然后参见实验室比赛,也因此进入了实验室,间接的改变了我的大学生涯
====================================
2021.3.13  关于学历的补充
去年一年陪着我对象准备春招和秋招,基本也算跟着复习了一遍,方向是c++,主要是后端岗位,最后拿到了六个offer,其实挺少的,当然这个她开始太晚复习又不太多有主要原因,目前定的是国内某手机厂。
细节以后单说,这个过程就是一个感觉学校好真的对于找工作很有用(对象是北邮信通硕士)
所以各位留言的同学如果真的不想做嵌入式或者想要更好的机会那努力考研也是条出路,不是凡尔赛,真的需要努力,考研的难度现在真的越来越大,尤其是我们普本出身的同学,关于考研嘛就太多话题了,找机会说下我考研失败的经验,避免进坑,适合本科时间能力突出,成绩一般同学(不用怕,我对象有成功经验)
=============================================
2022年9月25日更新,毕业第五年,感觉这种记录的方式非常不错,我整理了文章,后续会持续更新,对于在校或者刚毕业的同学,如果有什么疑惑,可以在文章link下留言,我会持续更新!
我的工程师之路,给需要的同学! - CodeAllen的文章 - 知乎 https://zhuanlan.zhihu.com/p/66435485
zyn373 发表于 2023-10-4 19:21:40|来自:北京 | 显示全部楼层
2020年-------------------------------
本人自动化专业毕业,刚毕业就是做的单片机开发,做了三年,18年初离职,并决定转行,接下来失业闭关学习了大半年(这个不推荐),没存款,期间全靠借呗花呗和朋友帮助撑着. 后来终于在18年尾成功转行进了机器人公司做机器人应用.
进了机器人公司后,岗位从机器人应用转视觉开发方向,又从视觉开发为主往上位机开发、机器人运动学方向扩展. 同时软件开发能力得到公司的认可,慢慢接手标准化软件的开发以及框架开发的工作,在纯软件的道路上越走越远.  

搞单片机的时候用的是C,以STM32和LPC17XX/43XX为主,曾经为了和单片机寄存器较真,花了一年多时间自己开发出独立的STM32库函数,后来在公司搞单片机的框架化,一套代码可以适配不同的单片机平台, 侧重点在于解耦,让硬件抽象,也是因为这些经验在我转行的时候轻松得到面试官的认可.
转到机器人公司后,以C#和VB开发为主,VB为公司机器人的编程语言. 由于自己的编程底子还算可以,短短几个月内在编程能力上就跟上了其他同事. 并具备独立做项目的能力. 后来看到<设计模式>之类的书,惊为天人----这些不就是我搞单片机时想做而且在做的吗? 原来已经有人总结并整理出一套学说出来了(恕我孤陋寡闻), 再加上再微软官网啃了几遍.net的开发规范, 接下来的一年是我进步最明显的一段期间. 而在此期间得到公司的认可,工作重心偏向于标准化软件以及视觉算法开发方面,期间自学学会了WPF以及起MVVM的开发框架. 而公司所有的项目都需要我进行技术性上的可行性审核.
机缘巧合之下,19年下旬接触到项目必须要求C++实现,而部门只有我有相关的底子(领导看来,C也算是小半个C++),硬着头皮上,由于项目对算法要求很高, 涉及到linux, ROS,运动学,计算机视觉等综合应用, 期间拼了命自学,迅速捡回线性代数,然后恶补机器人学的理论和算法. 在学习到一定程度后, 数学的基础补回来之后, 看<数字图像处理>, 感觉以前看不懂的都慢慢看懂, 从此之后机器人运动学和数字图像处理等方面的理论知识打通, 从二次开发/应用的定位开始往算法的方向偏. 同时以前只会用的算法都知道了底层实现原理, 整个人的知识体系得到的提升.

如今2020年,计划接下来用闲余时间备考考研(不刻意,但是慢慢往这个方向靠),接下来需要一个研究生文凭为自己背书.
毕竟自己是也是从单片机走出来的,我很庆幸自己能够转行. 希望我的个人经历能给你一些帮助;
(玩知乎这么多年,第一次写超过100字的回答,希望能给个赞)

2022年11月中旬-------------------------------

在2020年说过, 自己想往底层算法方向走. 不满足于自己仅能基于halcon等商业库的二次开发能力.

在2020年底研究blob算法(轮廓特征计算及过滤);
2021年初-2022年中,死磕轮廓匹配算法并成功实现(感谢视觉算法及应用一书);
2022年中成功将轮廓匹配算法耗时压到跟halcon同一个数量级, 同时发现原来网上已经有人将其开源, 只是开源版本的算法精度和耗时无法满足工业应用;
2个月前将ransac以及tukey算法结合实现适应于抗离群点直线拟合和圆拟合,应用效果在工业应用中特别理想;
期间还有基于HSV的颜色空间量度计算算法,纹理分类算法等等;
后续可研究的还有颜色空间量度的颜色分类、颜色匹配、颜色高敏感的抓边算法、模板缩放及可变性的轮廓匹配等;

最后---------
好像这几年都在死磕halcon,试图用自己实现的算法库去作为halcon的平替.
整个行业基本上都是使用盗版的halcon, 本人也不知道非要自研算法是一条死路还是活路, 但是既然还有公司愿意聘用我去做这件事, 那么我会继续死磕下去.
仅此而已.

(行业内现在很流行拖拽式视觉流程布局, 抽空也搞了一个应用雏形...)

散步人生 发表于 2023-10-4 19:22:27|来自:北京 | 显示全部楼层
部分嵌入式和单片机的初学者们有一个很大的误区:只用工作技能对行业进行划分,而不在产品领域进行行业划分。
什么单片机、嵌入式、模电数电、代码编写这些都属于工作技能,在初学的前几年需要关注的。而做一定时间后,就要把精力放在产品领域进行深耕。你做哪类产品,就要对哪类产品的相关认证要求、政策导向、同行产品优缺点等重点关注。
做医疗类就关注医疗类产品,做变频器就关注变频器相关,换工作时应聘单位实际上并不太注意你开发技术怎么样,而是注重你对所处产品行业的了解程度,这才是你真实能卖上好价的立足之本。
所以回到题主的问题上,你不该问嵌入式、单片机是否有前途,这只是个进入某个领域的过程,真正有前途的是某个产业领域。

快速回帖

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则