后来我也在想,如果我回到10多年前,只有行业知识,没有技术记忆,从零开始学习单片机需要多长时间才能达到现在的水平?
也许3年,也许4-5年,但肯定不会超过10年。
如果我把这10年的成长经历总结给你,是不是意味着你可以少走很多弯路呢?
这两年我遇到了至少1W+的单片机初学者,他们问了各种各样的问题。
我得出的结果是:99%的初学者都走了弯路,而且很迷茫、焦虑,不知道下一步该做什么。
他们很大一部分是初学者,在职业定位上存在一个严重的问题,就是硬件和软件都想学习独立设计的水平。
抱歉,今天我要给你泼一盆冷水:这几乎是不可能的!
这就是全栈工程师的水平。 如果没有几十个项目的积累,新手很难达到这个水平。
以硬件设计为例。 即使你做了10年,你也不敢设计任何产品硬件。 如果换成以前没做过的产品,麻烦还是够多的。
前期学习一定要注重,不要有软硬兼施的想法。
当我第一次了解单片机时,我不知道有硬件工程师和单片机工程师。 我以为这些都是一个人做的。
事实上,除了非常小的公司之外,大多数公司都会以软硬两个职位作为一个项目的标准。 毕竟技术行业也是有专业的。
在新手阶段,你只能专注于两者之一:硬件工程师或单片机工程师。
如果是我,我会首先选择单片机工程师,因为他们大多工资比硬件高,有核心竞争力。
这个方向需要学习硬件,但不需要学得太深。 把握这个度非常重要。 如果走得太远,就要多走几条弯路。
假设我回到11年前,零基础。 我该如何学习才能快速达到目前的水平?
很多人会好奇,我现在达到什么水平了?
首先声明一下,我不是一个伟大的人,我只是有丰富的项目经验。
目前我可以做出稳定的单片机项目,只要不涉及复杂的算法。 我指的是软件,不是硬件。
能够独立稳定产品软件对我来说就足够了。 技术的终点是解决痛点、创造价值。
做好、稳定的背后,隐藏着很多知识,比如编程思维、程序架构设计、程序可扩展性和可移植性等。
这些知识只有中大型项目才需要,否则会不稳定。
从零基础到独立开发项目代码的水平,我大概经历了几个阶段。
这个非常重要。 只有认清自己目前处于哪个阶段,才能知道下一步如何改进。
第一阶段:初级阶段
这个阶段是零基础入门阶段。
1.第一阶段你学到什么?
学习C语言、基本电路、51/STM32单片机外设等基础知识,但你将无法完成项目。
2.我最初是如何学习的?
第一步:学习STC89C52开发板
我的基础硬件知识、单片机、C语言主要是通过这个开发板学习的。
第二步:基于开发板制作电子钟
学习了基本语法和单片机外设后,我利用开发板上的数码管显示屏充当电子时钟的功能,巩固自己的编程基础,锻炼自己的代码集成能力。
第三步:尝试找工作
没有工作或项目经验,没有人想要你。
第四步:启动智能汽车项目,解决没有项目经验的问题
这是我2010年从某商店购买的智能车载套件。
完成这个项目后,我在面试时拿来演示,并成功加入了公司。
不过现在门槛高了很多。 如果你只知道这些,你找工作基本上没有竞争力。
3、第一阶段推荐的学习方式有哪些?
如果我能回到10多年前,现阶段我会怎样学习?
第一阶段可以通过两种方式学习:
①.开发板
优点:可以更系统地学习单片机的所有外设
缺点:代码不规范,对项目还没有想法,代码水平和集成能力无法提升。
②.项目
优点:可以让你学习单片机外设的实际应用,可以锻炼你的功能实现思路和代码水平。
缺点:无法学习项目中没有使用到的外设,并且由于基础不好学习过程比较困难。
4、第一阶段最大的问题是什么? 如何突破?
最大的痛点是单片机的所有外设都可以使用,但无法集成到一个项目中。
为什么做不到呢? 核心是缺乏编程思想和代码水平。
第一阶段的突破方式是多做一些小项目,比如智能汽车、电子钟,特别是商业项目。
第二阶段:普通单片机软件工程师
经过几个项目,单片机常用的外设都已经在项目中应用了,做一些基于单片机的小产品就足够了,特别是51和STM8单片机级别的项目。
但接下来就是另一个瓶颈期,你会遇到以下问题:
1.感觉我的代码不够好,比较乱,逻辑不清晰,代码集成的时候不稳定。
2. 做较大的项目时变得难以控制。 比如代码量超过50kb的项目,做起来就有点困难。
3、写出来的代码经不起曲折。 如果改变功能或者更换单片机,整个程序框架就会崩溃。
这一切我都经历过,被领导逼到痛苦地步的场景还历历在目。
很多工程师在经历了几年的经验之后仍然停留在这个阶段。
1、为什么这个瓶颈很难突破?
这个阶段是最难突破的。 是思维和编码水平的全面提升。 它是积累经验到一定阶段的结果,而不是学习某个技术点。
它与认知边界、机会和主动学习意识有关。
认知边界:在你的认知范围之内。 如果你周围都是菜鸟,你的认知边界就会被限制在菜鸟阶段。 如果你身边有强大的人,他们就会颠覆你的认知。 事实证明,程序还可以这样。 写作,这主要取决于你的圈子。
机会:你的圈子决定了你视野的高度。 你知道自己写代码不好,但是却没有渠道、没有机会去提高。 你遇到的公司产品都比较简单,你永远不会接触到比你更好的人。 如果你接触到一个人,别人不会系统地指导你。 在这种情况下,你永远无法进步,这与你的工作年限无关。
主动学习意识:有时候工作稳定了,人们也懒得理会,几年一晃就过去了,但如果想做得更好,就必须重视不断学习的重要性,并采取主动寻找学习的渠道和资源。 更多机会。
2.我是如何突破这个阶段的?
①. 跳出舒适区,选择辞职
我再也坚持不住了。 公司没什么可学的,工资又低。 经过激烈的思想斗争,我决定走出自己的舒适区,跳槽。
②. 遇到一个好的平台
好的平台不一定是BAT这样的大公司。 大公司分工很细,机会较少。 我认为最能帮助我成长的公司就是最好的平台。
后来我去了一家做智能家居产品的公司。 从始至终,我做了3个网关产品(代码大小超过110KB),1个蓝牙,2个WiFi+GSM。
③.遇到一个好师傅
在做这些产品之前,我对很多功能一无所知,因为我以前从未做过这些,而且之前做过的都是小项目。
幸运的是,公司有一位非常有能力的工程师,以前做过类似的产品,并且有现成的源代码和图纸可供参考。
到目前为止,他是我参加工作以来遇到的工程师。 他有最高的编码水平,最好的程序架构设计,对我的成长帮助最大。 因此,我一直认为他是我的“间接”师父。
为什么是“间接”大师?
因为我进去的时候他已经辞职了。
所以,在开发过程中,遇到很多技术难点的时候,我都得靠自己去摸索和理解他的编程思想和代码。
④. 主动学习意识
我当时对这个项目非常感兴趣。 我很好奇通过应用程序控制硬件的整个过程,TFT屏幕的菜单UI是如何制作的,传感器和网关是如何联网的等等。
那段时间,兴趣驱使我每天早上买一瓶红牛,八点第一个到公司,一直工作到晚上八点到九点。
不是为了在老板面前露面,不是为了薪水,只是为了满足好奇心。
一个项目从无到有的开发过程,是工程师最大的成长。
在我的职业生涯中,前五年左右我一直处于第二阶段。
我在想,如果我能早点遇到好的平台、好的大师、好的项目,我的成长是不是会快很多?
我相信答案是肯定的!
3、突破第二阶段有捷径吗?
以前我觉得没有捷径。 捷径就是不劳而获。
后来我发现我错了。 走捷径并不意味着你不必这样做,而是你应该把时间和精力集中在最重要的事情上。
如果让我回到零基础,首先我会系统的学习51开发板,然后我会不断的找项目做,找更有实力的高手带领我,从简单到复杂,打好基础而不是学习更高性能的微控制器、更复杂的RTOS。
项目数量决定增长速度,项目质量决定增长高度。
我认为这是一条捷径。 关键是看你能否找到好的学习资源和渠道。
不幸的是,市场上大多数教程,即使是那些收费几千元的教程,也只是教你如何学习单片机。 能够完成完整项目的人很少,能突破第二阶段的项目也基本没有。
因此,2021年我们推出了项目实战专项训练营。
对于对我们成长最重要的项目,我们会复制我们的成长方法,教大家如何从零开始,一步步打造项目,带领认可我们价值的人度过第一阶段和第二阶段。
我们不能保证每个人学会后都能成功突破第二阶段,但突破第二阶段的答案就在第3条和第6条中。
如果您想充分了解我们的思维和编码技能,您需要多加练习,并将我们的思维和编码框架应用到您未来的项目中。
只有突破第二阶段,能做的项目越多,机会就越多,工资自然也就越高。
第三阶段:高级单片机软件工程师
在这个阶段,你不仅可以实现功能,还可以从更高的维度设计你的程序架构和代码细节。
这是中大型项目必备的能力。 否则你的产品就很难稳定。 即使稳定,维护起来也会很麻烦。
什么是好的表现? 主要有两个层次:
1.良好的程序结构
程序架构是一个非常抽象的概念,主要体现在程序的可扩展性和可移植性上。
可扩展性:您的程序添加/修改功能是否不方便? 比如现在的产品有2个按钮,增加到6个需要改多少代码? 简而言之,需要的更改越少,可扩展性就越好。
可移植性:在微控制器开发领域,很多工程师对可移植性没有概念。 举个例子,如果你目前正在做一个使用STM32单片机的产品,后来STM32的价格上涨了,你的老板要求你改用GD32,那么你需要改的代码就越少。 这意味着该程序更加可移植。
在编写任何功能模块代码之前,必须考虑这两点,主要是为了加快产品开发周期,减少后期产品维护成本。
2、程序执行效率
对于同一个函数,不同人写的代码,CPU执行这个程序所花费的时间可能是不同的。 时间越短,这个程序就写得越好。
但对于一般产品来说,对程序执行效率的要求并不那么严格。 一般来说,我们用最少的代码来实现功能就足够了。
越满足以上两点,代码就越简单,你的编程思维和编码水平就会越高。
此外,其他能力也很重要,比如快速定位、解决问题的能力、电路调试能力、阅读数据手册的能力等。
然而,这些总是可以在项目过程中积累起来的。 与编程思维和编码水平不同,你能提升到什么水平,与时间无关,而是与机会有关。
最后的复活节彩蛋时间!!!
最近有同学向我要单片机的资料。 我专门花了一个月的时间,结合自己10年的产品开发经验,收集了史上最认真、最硬核、最实用的《高级单片机入门教程+工具包+》。 22个热门项目》,免费分享给大家。
资料包几乎涵盖了C语言、单片机、模拟与数字电子、原理图与PCB设计、单片机高级编程等内容,非常适合初学者入门进阶。
另外,我会在盒子底部泪流满面地分享我整理的22个热门开源项目,包括源码+原理图+PCB+文档,让你快速成为高手!
据说有朋友就是通过这个成功加入BAT的,一定要保存好,好好学习!
后期我也会成立一些技术交流群,让大家可以认识更多的大佬,有一个良好的圈子。 您对行业的了解将处于最前沿。
如果您想要上面的“MCU入门进阶教程工具包+进入MCU交流群”,可以点击下方⬇️卡片查看文章开头即可获取。
或者你可以寻找全网同名的“Boundless Microcontroller”。
以下是无极更多原创的个人成长经历、行业经验、技术资讯。