99%的初学者都走了弯路,该做什么?

从零基础到独立开发项目代码的水平,我大概经历了几个阶段。我的硬件基础知识、单片机、C语言主要是通过这个开发板学习的。经历几个项目沉淀以后,单片机常用外设都在项目上应用过了,做一些基于单片机的小产品也够用了,特别是51、STM8单片机级别的项目。

后来我也在想,如果我回到10多年前,只有行业知识,没有技术记忆,从零开始学习单片机需要多长时间才能达到现在的水平?

也许3年,也许4-5年,但肯定不会超过10年。

如果我把这10年的成长经历总结给你,是不是意味着你可以少走很多弯路呢?

这两年我遇到了至少1W+的单片机初学者,他们问了各种各样的问题。

我得出的结果是:99%的初学者都走了弯路,而且很迷茫、焦虑,不知道下一步该做什么。

他们很大一部分是初学者,在职业定位上存在一个严重的问题,就是硬件和软件都想学习独立设计的水平。

抱歉,今天我要给你泼一盆冷水:这几乎是不可能的!

这就是全栈工程师的水平。 如果没有几十个项目的积累,新手很难达到这个水平。

以硬件设计为例。 即使你做了10年,你也不敢设计任何产品硬件。 如果换成以前没做过的产品,麻烦还是够多的。

前期学习一定要注重,不要有软硬兼施的想法。

当我第一次了解单片机时,我不知道有硬件工程师和单片机工程师。 我以为这些都是一个人做的。

事实上,除了非常小的公司之外,大多数公司都会以软硬两个职位作为一个项目的标准。 毕竟技术行业也是有专业的。

在新手阶段,你只能专注于两者之一:硬件工程师或单片机工程师。

如果是我,我会首先选择单片机工程师,因为他们大多工资比硬件高,有核心竞争力。

这个方向需要学习硬件,但不需要学得太深。 把握这个度非常重要。 如果走得太远,就要多走几条弯路。

假设我回到11年前,零基础。 我该如何学习才能快速达到目前的水平?

很多人会好奇,我现在达到什么水平了?

首先声明一下,我不是一个伟大的人,我只是有丰富的项目经验。

目前我可以做出稳定的单片机项目,只要不涉及复杂的算法。 我指的是软件,不是硬件。

能够独立稳定产品软件对我来说就足够了。 技术的终点是解决痛点、创造价值。

做好、稳定的背后,隐藏着很多知识,比如编程思维、程序架构设计、程序可扩展性和可移植性等。

这些知识只有中大型项目才需要,否则会不稳定。

从零基础到独立开发项目代码的水平,我大概经历了几个阶段。

99%的初学者都走了弯路,该做什么?

这个非常重要。 只有认清自己目前处于哪个阶段,才能知道下一步如何改进。

第一阶段:初级阶段

这个阶段是零基础入门阶段。

1.第一阶段你学到什么?

学习C语言、基本电路、51/STM32单片机外设等基础知识,但你将无法完成项目。

2.我最初是如何学习的?

第一步:学习STC89C52开发板

我的基础硬件知识、单片机、C语言主要是通过这个开发板学习的。

第二步:基于开发板制作电子钟

学习了基本语法和单片机外设后,我利用开发板上的数码管显示屏充当电子时钟的功能,巩固自己的编程基础,锻炼自己的代码集成能力。

第三步:尝试找工作

没有工作或项目经验,没有人想要你。

第四步:启动智能汽车项目,解决没有项目经验的问题

99%的初学者都走了弯路,该做什么?

这是我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年我们推出了项目实战专项训练营。

99%的初学者都走了弯路,该做什么?

对于对我们成长最重要的项目,我们会复制我们的成长方法,教大家如何从零开始,一步步打造项目,带领认可我们价值的人度过第一阶段和第二阶段。

我们不能保证每个人学会后都能成功突破第二阶段,但突破第二阶段的答案就在第3条和第6条中。

如果您想充分了解我们的思维和编码技能,您需要多加练习,并将我们的思维和编码框架应用到您未来的项目中。

只有突破第二阶段,能做的项目越多,机会就越多,工资自然也就越高。

第三阶段:高级单片机软件工程师

在这个阶段,你不仅可以实现功能,还可以从更高的维度设计你的程序架构和代码细节。

这是中大型项目必备的能力。 否则你的产品就很难稳定。 即使稳定,维护起来也会很麻烦。

什么是好的表现? 主要有两个层次:

1.良好的程序结构

程序架构是一个非常抽象的概念,主要体现在程序的可扩展性和可移植性上。

可扩展性:您的程序添加/修改功能是否不方便? 比如现在的产品有2个按钮,增加到6个需要改多少代码? 简而言之,需要的更改越少,可扩展性就越好。

可移植性:在微控制器开发领域,很多工程师对可移植性没有概念。 举个例子,如果你目前正在做一个使用STM32单片机的产品,后来STM32的价格上涨了,你的老板要求你改用GD32,那么你需要改的代码就越少。 这意味着该程序更加可移植。

在编写任何功能模块代码之前,必须考虑这两点,主要是为了加快产品开发周期,减少后期产品维护成本。

2、程序执行效率

对于同一个函数,不同人写的代码,CPU执行这个程序所花费的时间可能是不同的。 时间越短,这个程序就写得越好。

但对于一般产品来说,对程序执行效率的要求并不那么严格。 一般来说,我们用最少的代码来实现功能就足够了。

越满足以上两点,代码就越简单,你的编程思维和编码水平就会越高。

此外,其他能力也很重要,比如快速定位、解决问题的能力、电路调试能力、阅读数据手册的能力等。

然而,这些总是可以在项目过程中积累起来的。 与编程思维和编码水平不同,你能提升到什么水平,与时间无关,而是与机会有关。

最后的复活节彩蛋时间!!!

最近有同学向我要单片机的资料。 我专门花了一个月的时间,结合自己10年的产品开发经验,收集了史上最认真、最硬核、最实用的《高级单片机入门教程+工具包+》。 22个热门项目》,免费分享给大家。

99%的初学者都走了弯路,该做什么?

资料包几乎涵盖了C语言、单片机、模拟与数字电子、原理图与PCB设计、单片机高级编程等内容,非常适合初学者入门进阶。

另外,我会在盒子底部泪流满面地分享我整理的22个热门开源项目,包括源码+原理图+PCB+文档,让你快速成为高手!

99%的初学者都走了弯路,该做什么?

据说有朋友就是通过这个成功加入BAT的,一定要保存好,好好学习!

后期我也会成立一些技术交流群,让大家可以认识更多的大佬,有一个良好的圈子。 您对行业的了解将处于最前沿。

如果您想要上面的“MCU入门进阶教程工具包+进入MCU交流群”,可以点击下方⬇️卡片查看文章开头即可获取。

或者你可以寻找全网同名的“Boundless Microcontroller”。

以下是无极更多原创的个人成长经历、行业经验、技术资讯。

99%的初学者都走了弯路,该做什么?

单片机

单片机原理及应用/信号控制实验设计性必修定时器

2024-2-8 18:05:08

单片机

单片机与微处理器的区别和区别?单片机的定义和原理

2024-2-8 19:02:22

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索