“汽车电子培训机构推荐”这个搜索词,我在后台一年能看到几十次,而且提问的时间点非常集中——每年三月和九月,招聘季前后。问的人大致分三类:一类是学机械、车辆工程出身,做了两三年结构或者工艺,发现天花板来得比想象中快;一类是电子信息、自动化专业的应届生,手里有单片机基础,但不知道该往哪个方向扎;还有一类是已经在做工业控制、消费电子固件的老兵,想借着智能汽车这波浪潮换个赛道。他们的问题几乎一模一样:报哪个班能最快上车。
我先把最实在的一句话放这儿:培训机构是加速器,不是发动机。它能帮你把零散的知识串成体系、把抽象的协议变成摸得着的报文、把简历上那句“了解CAN总线”变成“独立完成过某ECU的诊断服务开发与台架验证”。但它替代不了你自己动手的那几百个小时。所以这篇文章不打算给你一个“十大机构排行榜”——那种榜单要么是广告,要么半年就过期。我要做的是把汽车电子这个方向拆开,告诉你培训到底该培训什么、怎么判断一个机构值不值那个价、以及不管你报不报班,自己该怎么把这条路径走通。
1. 汽车电子到底在做什么:先把地图看清再谈报班
很多人报班踩的第一个坑,是根本没搞清楚自己要学的是哪一块。汽车电子不是一个岗位,它是一条很长的产业链,从芯片原厂到Tier1再到主机厂,每一层的技能栈都不一样。你交了两万块钱,结果学的是别人岗位上的东西,那就很尴尬了。
1.1 一辆车里的电子系统规模,比大多数人想象的夸张
传统燃油车上,ECU(电子控制单元)的数量在几十到一百多个之间;到了智能电动车时代,虽然域控制器把功能做了整合,但节点总数并没有减少,只是从“一个功能一个盒子”变成了“一堆功能塞进一个大盒子里”。这些ECU之间要通信,走的就是车内网络:CAN、CAN FD、LIN、FlexRay,以及这几年快速铺开的车载以太网。
一台中高端车型里跑的软件代码量,早就过了“上亿行”这个量级,而且这些代码分布在几十个供应商手里,接口必须是标准化的,这就催生了AUTOSAR这套软件架构规范。听起来很宏大,落到具体岗位上却很具体:有人专门写CAN驱动的寄存器配置,有人专门做诊断服务,有人专门搭HIL台架跑测试用例,有人专门负责功能安全的危害分析和风险评估。所以你在选培训之前,得先问自己一句:我到底想站在哪个位置上?
1.2 岗位地图:五条主流路线,技能栈差别很大
我把市面上招聘量最大的几类岗位梳理了一下,方便你对照自己的背景。
| 岗位方向 | 核心技术栈 | 入行门槛 | 适合背景 |
|---|---|---|---|
| 底层软件/驱动开发 | C语言、MCU寄存器、CAN/LIN驱动、AUTOSAR BSW、MCAL | 中高,需要硬件调试能力 | 电子、自动化、有单片机经验 |
| 应用层软件开发 | C、Simulink/Stateflow、控制算法、RTE接口 | 中,偏逻辑和建模 | 控制、车辆工程、软件 |
| 测试工程师 | CANoe、HIL、CAPL、Python、台架搭建 | 中低,最容易入门 | 各类工科,动手能力强 |
| 系统/架构工程师 | EEA架构、需求管理、SOA、通信矩阵设计 | 高,需要多年积累 | 有3-5年一线经验 |
| 功能安全/信息安全 | ISO 26262、ISO 21434、FMEA、TARA | 高,偏流程和文档 | 有项目经验,英语好 |
看这张表你会发现,测试岗是大多数人进车的第一个落脚点,因为它对硬件设计和算法要求相对低,但对工具链和动手能力要求高。而底层软件岗薪资天花板高,但需要你真的能对着示波器和逻辑分析仪啃寄存器。很多机构的课程设计其实是“底层+测试”混着讲,这本身没错,但你要清楚自己主线在哪,不然学完会觉得什么都懂一点,什么都拿不出手。
1.3 自学为什么容易卡壳:三个真实的拦路虎
我认识不少自学能力很强的人,最后还是卡住了,原因基本集中在三个地方。
第一是硬件门槛。CAN总线不是你在电脑上装个软件就能玩的,你需要至少两个节点才能通信,需要CAN收发器、终端电阻、USB-CAN分析仪。一套能跑起来的设备,便宜的几百块,正经的几千上万。很多人卡在“买了开发板不知道怎么接线”这一步就停了。
第二是资料零散。CAN协议本身是公开的,但真正有价值的是主机厂的通信矩阵DBC文件、诊断规范、网络管理规范,这些是拿不到的。你能在网上找到的,都是别人脱敏过的样例。所以自学最大的问题是:你不知道自己学的对不对,因为没有真实项目做参照。
第三个是缺乏反馈。写代码的人都知道,有人给你review一次代码,比你自己debug三天收获还大。汽车电子的很多规范——比如诊断服务的会话切换顺序、错误处理、超时机制——都是有“行规”的,你自己摸索很可能摸索出一套能跑但不符合行业惯例的实现,面试时一问就露馅。
2. 培训机构怎么挑:四条硬指标,胜过看十篇广告
既然要花钱,就得花得明白。我总结了一套判断标准,你可以拿着去问任何一家机构的课程顾问,看他们是正面回答还是绕着走。
2.1 讲师的真实项目背景,比任何头衔都值钱
课程顾问一定会跟你吹师资,这时候你要做的是追问三个具体问题:这位老师最近一次参与的量产项目是哪一年、是哪个域、他负责的是哪一块。如果回答含糊,只说“某某主机厂十年经验”,那基本可以打问号。真正做过量产的人,聊起项目会自然带出细节,比如某个信号因为EMC问题改过三次周期、某个诊断服务因为供应商不配合最后换了实现方式——这些细节编不出来。
还有一个更直接的判断方法:让讲师现场解释一个具体问题。比如你问“CAN总线的位定时里采样点为什么要设在75%到87.5%之间”,如果对方能结合信号传播延迟、晶振误差、总线长度给你算一遍,那是真懂;如果只是背了句“行业惯例”,那大概率是照着PPT念的。
2.2 课程大纲里的关键词,是判断含金量的照妖镜
我把常见大纲里的内容分成三类,你对照着看。
| 类别 | 关键词 | 说明 |
|---|---|---|
| 必须有 | CAN/CAN FD、UDS诊断、DBC、CANoe或同类工具、Bootloader、状态机 | 这些是车载软件的通用语言 |
| 有则加分 | AUTOSAR分层、HIL测试、CAPL脚本、Python自动化、功能安全概念 | 体现课程深度和完整性 |
| 危险信号 | 大篇幅讲STM32基础外设、大篇幅讲C语言语法、只讲理论不碰工具 | 说明课程注水或面向零基础硬凑时长 |
特别提醒一点:如果一个机构的课时里,有超过三分之一在讲“C语言指针”“STM32点亮LED”这类内容,那它本质上是个嵌入式入门班,只是挂了个汽车电子的名字。这类课不是不能上,但你得知道它值多少钱。
2.3 硬件投入是分水岭,便宜和贵往往差在这里
汽车电子的培训成本,很大一块压在硬件和软件授权上。CANoe一个授权一年就是几万块,HIL台架更是几十万起步。所以你要重点问:实操环节用的是什么设备?
- 如果只是用USB-CAN盒加开源工具,那成本低,但你学到的工具链和主机厂实际用的有差距。
- 如果有真实CANoe/CANalyzer环境、有台架、有实车或半实物仿真,那成本高,但学完能直接对接岗位。
- 最需要警惕的是“演示式教学”:老师在上面操作,你在下面看。这种课你上完还是不会自己动手。
对于预算有限的人,我反而建议不要盲目追求高端设备。你可以用低成本的方案先把原理吃透。比如用两块STM32开发板加TJA1050收发器,配合Linux下的SocketCAN和python-can,完全能把CAN报文收发、过滤、DBC解析这套流程跑通。原理搞明白了,再接触CANoe,上手会很快。工具只是工具,思路才是本事。
2.4 价格、周期与承诺,别被“包就业”三个字冲昏头
市面上汽车电子方向的线下脱产班,周期普遍在4到6个月,价格从一万多到三四万不等;线上班便宜些,几千到一万五,但自律要求高。凡是承诺“包就业”“保底月薪多少”的,我建议你直接降低预期。真正能帮你找到工作的,是你简历上那两三个能讲清楚细节的项目,以及面试时能不能把技术问题答到点子上。机构的推荐资源有用,但那是锦上添花,不是雪中送炭。
3. 核心知识点优先级:哪些必须啃透,哪些可以先放放
汽车电子的知识面很宽,全学完不现实。我按“投入产出比”给你排个序,你会发现真正决定你能不能上手干活的,其实就那么几块。
3.1 总线通信:CAN是绕不过去的第一关
CAN是车载网络的基石,学不透它,后面全是空中楼阁。它的核心机制包括:多主架构、基于报文ID的仲裁、非破坏性冲突解决、差分信号传输、错误检测与自动重发。这些概念听起来抽象,但每一条都对应着实实在在的工程问题。
举个最常见的例子:位定时怎么算。CAN没有独立的时钟线,所有节点靠各自的晶振计时,所以必须把时间切成一个个“时间份额”(Time Quantum,tq)。公式是:
- 波特率 = 时钟频率 / (BRP × (1 + BS1 + BS2))
- 采样点 = (1 + BS1) / (1 + BS1 + BS2)
假设你的CAN控制器时钟是8MHz,想跑500kbps:
BRP = 1 → 8MHz / 1 = 8MHz 总tq数 = 8MHz / 500kHz = 16 取 BS1 = 12, BS2 = 3, SJW = 1 则 1 + 12 + 3 = 16 tq ✓ 采样点 = (1 + 12) / 16 = 81.25%| 参数 | 取值 | 说明 |
|---|---|---|
| BRP | 1 | 分频系数 |
| BS1 | 12 | 相位缓冲段1 |
| BS2 | 3 | 相位缓冲段2 |
| SJW | 1 | 同步跳转宽度 |
| 采样点 | 81.25% | 落在推荐区间内 |
采样点为什么不能太低也不能太高?太低(比如低于75%),节点对总线电平的采样时机太早,容易受信号传播延迟影响;太高(比如高于90%),留给同步调整的余量不够,遇到晶振误差大的节点容易出错。这就是为什么行业里普遍推荐75%到87.5%这个区间。这种“为什么”才是你在培训里真正该学到的东西,而不是背一个数字。
3.2 UDS诊断与Bootloader:面试和工作的重头戏
UDS(统一诊断服务)是跑在CAN或以太网之上的应用层协议,负责让诊断仪和ECU对话。它的服务用十六进制标识,常见的就那么十几个,但每一个背后的会话状态机都要搞清楚。
| 服务ID | 名称 | 典型用途 |
|---|---|---|
| 0x10 | 诊断会话控制 | 切换到扩展会话或编程会话 |
| 0x27 | 安全访问 | 种子密钥鉴权,防止非法操作 |
| 0x22 | 读数据标识符 | 读取版本号、传感器值等 |
| 0x2E | 写数据标识符 | 写入配置参数 |
| 0x31 | 例程控制 | 触发自检、擦除Flash |
| 0x34/0x36/0x37 | 请求下载/传输数据/退出传输 | Bootloader刷写三件套 |
Bootloader是UDS里最考验工程能力的部分。它的流程大致是:进入扩展会话 → 安全访问解锁 → 切换到编程会话 → 擦除App区 → 分块传输新固件 → 校验 → 跳转到App。每一步都有坑:比如安全访问的种子密钥算法各家不同,分块传输要考虑帧长和流控帧的BS/STmin参数,校验失败要有回滚机制。你在培训里如果能把这一整套流程在真实硬件上跑一遍,比读十篇文章都有用。
3.3 AUTOSAR与EEA架构:知道全貌,知道自己在哪一层
AUTOSAR分经典平台(CP)和自适应平台(AP)。CP面向深嵌入式、实时性要求高的控制器,分层结构从下到上是MCAL、ECU抽象层、服务层、RTE、应用层。AP面向高性能计算平台,用SOA(面向服务架构)的方式做通信,多跑在中央计算单元上。
这块内容初学者最容易犯的错,是死磕规范文档。AUTOSAR规范几万页,你不可能全看完,也没必要。合理的做法是:先理解分层的意义(为什么要解耦、RTE到底做了什么、BSW配置项大概有哪些),然后针对你负责的那一层深入。比如你做底层,就重点看MCAL和CAN驱动;你做应用层,就重点理解RTE接口和SWC的概念。
电子电气架构(EEA)则是更高维度的东西,讲的是整车怎么分层、怎么分域、怎么从分布式走向中央计算加区域控制。这块知识对你面试系统岗有帮助,但对初级岗位不是必需。培训里如果有涉及,听听思路就好,不用强求掌握。
3.4 测试能力:HIL、台架与自动化脚本
测试是入行最容易的方向,但也是最容易被低估的。真正值钱的测试工程师,不是会点按钮的人,而是能把测试用例设计得覆盖边界、能把自动化脚本写得稳定、能从失败日志里定位到根因的人。
测试金字塔这个概念在车载领域同样适用:底层是单元测试,中间是集成测试(SIL/HIL),顶层是实车测试。HIL(硬件在环)是把真实的ECU接上仿真机,由仿真机模拟整车环境和传感器信号,这样可以在没有实车的情况下跑大量测试。dSPACE和Vector是主流工具,但国产方案这几年也在追赶。培训如果只讲到“什么是HIL”就结束了,那是不够的;至少应该让你亲手连一次线、改一次仿真模型、跑一次自动化用例。
3.5 功能安全与信息安全:加分项,不是必修课
ISO 26262讲的是功能安全,核心是ASIL等级划分、危害分析、安全机制设计;ISO 21434讲的是信息安全,核心是TARA分析和攻击面防护。这两块知识,初级岗位不要求,但如果你能在面试时聊几句,会显得你视野比同龄人宽。
我的建议是先把总线、诊断、测试这三块吃到肚子里,再回头看安全和架构。顺序错了,容易变成“什么都听过,什么都不会”。
4. 三种背景的路线图:别用同一套方案套所有人
培训机构的课程大多是标准化的,但每个人的起点不一样。下面这个路线图,你可以当成报班前的自查表,也可以当成自学的路线。
4.1 零基础或转行:先补地基,再上专业
如果你没写过几行C代码,也没碰过单片机,那我劝你先别急着报汽车电子的班。地基不牢,专业内容你听不进去。
第一步,花两三个月把C语言和一款MCU(推荐STM32)吃透。重点不是点亮LED,而是理解寄存器操作、中断、定时器、串口通信、GPIO的复用。这些是CAN驱动的前置知识。
第二步,再切入CAN。用两块开发板互发报文,自己写收发代码,用逻辑分析仪抓波形,对照协议文档看帧结构。这个过程会很慢,但走完一遍,你就不是“听说过CAN”的人了。
第三步,接触诊断和工具链。用python-can或SocketCAN发UDS请求,自己实现一个简单的诊断客户端。到这个阶段再报班,你会发现老师讲的每句话你都能接住,学习效率完全不同。
4.2 有单片机基础的:直接切入车载差异点
如果你已经能独立做工业控制项目,那你要补的不是编程,而是车载和工业的那些差异。差异在哪?
- 车载对可靠性和实时性要求更高,看门狗、错误恢复、通信超时是标配。
- 车载软件有严格的分层规范和接口标准,不能像工控那样随意。
- 车载开发重度依赖工具链,CANoe、DBC、诊断规范、刷写工具,这些是工控里遇不到的。
- 车载项目文档化程度高,需求、设计、测试用例都要留痕,这对很多人是新的工作方式。
这类人报班,重点应该放在工具链实操和项目规范上,而不是再学一遍C语言。
4.3 在职提升:用项目倒逼学习
已经在职的人最缺的是时间,所以不要追求“系统学完”,而是用项目倒逼。比如你手上正在做一个和诊断相关的需求,那就把UDS里相关的服务全部啃透,把Bootloader流程走一遍,把遇到的问题记成笔记。半年下来,你的深度会比泛泛而学的人强得多。
在职提升还有个技巧:主动去接“没人愿意接”的活。测试、文档、工具脚本这些事看着枯燥,但恰恰是积累最快的地方。你写得一手好CAPL或者Python自动化脚本,团队离不开你,你的价值就体现出来了。
5. 动手实操:机构里最该做的四个项目
判断一个培训值不值,最直接的标准就是看你毕业时手上有没有能讲清楚的项目。下面这四个,我认为是性价比最高的,你可以按这个清单去核对机构的实操安排。
5.1 项目一:CAN报文抓取、解析与DBC还原
这是最基础也最实用的项目。目标是用USB-CAN设备抓取一段真实或仿真的总线数据,然后用Python解析出物理值。
import can import cantools # 加载DBC文件 db = cantools.database.load_file('demo.dbc') # 打开CAN通道,500kbps bus = can.interface.Bus(channel='can0', bustype='socketcan', bitrate=500000) print("开始监听总线...") for msg in bus: try: decoded = db.decode_message(msg.arbitration_id, msg.data) print(f"ID=0x{msg.arbitration_id:X} 数据={decoded}") except KeyError: # DBC里没有定义的报文,直接跳过 continue这段代码看起来简单,但里面有几个细节值得琢磨。socketcan是Linux下的CAN驱动接口,Windows上要用别的后端。decode_message依赖DBC文件里的缩放因子和偏移量,如果你拿到的DBC不完整,解析出来就是错的。所以这个项目的真正价值,是让你理解“原始报文到物理值”这条链路——包括字节序(Intel还是Motorola)、信号起始位、长度、精度、偏移,这些概念在面试里被问到的概率极高。
做完这个项目,你还应该尝试反向操作:自己设计几个信号,写一个DBC文件,再用另一块板子按这个DBC发报文,验证能正确解析。这一步能让你彻底搞懂DBC的语法和含义。
5.2 项目二:手搓一个最小CAN节点
拿一块STM32F103,配一个TJA1050收发器,加两个120欧姆的终端电阻,你就有了一个最小CAN节点。目标是让它周期性地发送一帧自定义报文,并且能接收另一块板子发来的报文。
硬件连接要注意几点:CAN_H接CAN_H,CAN_L接CAN_L,收发器的TXD/RXD接MCU的CAN_TX/CAN_RX(注意是复用引脚)。终端电阻接在总线两端,中间节点不需要接。总线长度和波特率有关系,500kbps下总线最好不要超过100米,40米以内最稳。
初始化代码里最关键的是位定时配置,前面算过的那组参数直接用上:
// STM32 bxCAN 位定时配置示例(8MHz时钟,500kbps) CAN_InitTypeDef CAN_InitStructure; CAN_InitStructure.CAN_Prescaler = 1; // BRP CAN_InitStructure.CAN_Mode = CAN_Mode_Normal; CAN_InitStructure.CAN_SJW = CAN_SJW_1tq; CAN_InitStructure.CAN_BS1 = CAN_BS1_12tq; CAN_InitStructure.CAN_BS2 = CAN_BS2_3tq; CAN_InitStructure.CAN_TTCM = DISABLE; CAN_InitStructure.CAN_ABOM = ENABLE; // 自动离线恢复 CAN_InitStructure.CAN_AWUM = ENABLE; // 自动唤醒 CAN_InitStructure.CAN_NART = DISABLE; // 自动重传开启 CAN_InitStructure.CAN_RFLM = DISABLE; CAN_InitStructure.CAN_TXFP = DISABLE; CAN_Init(CAN1, &CAN_InitStructure);CAN_ABOM这一项建议打开。总线上出现连续错误时,控制器会进入离线状态,自动离线恢复能让它在一段时间后重新接入,这在实车上很重要,否则一个节点挂了整条总线都受影响。这种细节,只有真正搭过台架的人才会主动去配。
5.3 项目三:实现一个UDS诊断客户端
用Python或者CAPL实现一个诊断客户端,依次执行:进入扩展会话、安全访问、读取版本号、写入一个参数、再读回来验证。这个流程走通,你对UDS的理解就上了一个台阶。
import can import time bus = can.interface.Bus(channel='can0', bustype='socketcan', bitrate=500000) tx_id, rx_id = 0x7A0, 0x7A8 def send_uds(payload, timeout=1.0): msg = can.Message(arbitration_id=tx_id, data=payload, is_extended_id=False) bus.send(msg) start = time.time() while time.time() - start < timeout: resp = bus.recv(timeout=0.1) if resp and resp.arbitration_id == rx_id: return resp.data return None # 步骤1:进入扩展会话 (0x10 0x03) print("切扩展会话:", send_uds([0x02, 0x10, 0x03])) # 步骤2:请求种子 (0x27 0x01) seed_resp = send_uds([0x02, 0x27, 0x01]) print("种子响应:", seed_resp) # 步骤3:发送密钥(这里用简化算法占位) if seed_resp and seed_resp[0] == 0x67: seed = seed_resp[2:6] key = bytes([(b + 1) & 0xFF for b in seed]) # 仅示例 print("发送密钥:", send_uds([0x06, 0x27, 0x02] + list(key))) # 步骤4:读取版本号 (0x22 0xF1 0x89) print("读版本:", send_uds([0x03, 0x22, 0xF1, 0x89]))这段代码有两点要注意。第一,UDS请求的第一个字节是长度,这是ISO-TP单帧的格式,超过7个字节要拆成多帧并处理流控,这里没展开。第二,安全访问的密钥算法是各家自己的秘密,上面那个“加一”只是占位,真实项目里种子密钥是通过特定算法(比如AES或自定义查表)生成的,你要做的是把接口对接好,而不是去猜算法。
做完这个项目,你还应该故意制造几个错误场景:种子错误、会话超时、请求不存在的DID,看看ECU怎么回应否定响应码(NRC)。这些NRC码是排查问题的关键线索,能背下常见的十几个,你在实际工作中会省很多时间。
5.4 项目四:搭一个最小HIL验证环境
HIL听着高大上,但你可以用最小成本模拟它的思路。用一块开发板模拟传感器输入(比如通过PWM输出一个可变电压),用另一块作为被测ECU读取这个信号并做出逻辑判断,再用CAN把结果发出来。这个闭环搭起来,你就理解了HIL的本质:用可编程的信号源替代真实世界,用可重复的方式验证ECU行为。
进阶一点,你可以写一个Python脚本,自动遍历不同的输入值,记录每个输入对应的输出,最后生成一份测试报告。这就是自动化测试的雏形。别看它简陋,这个思路和主机厂里几十万的台架是一回事,区别只是规模和精度。
6. 常见问题与避坑:我把踩过的坑都写在这了
最后这部分是整篇文章里最“非标准”的内容,也是我觉得最有价值的部分。下面这些问题,有的是学员问我的,有的是我自己踩过的,整理成速查表方便你对照。
| 问题 | 典型表现 | 排查思路 |
|---|---|---|
| 总线通信失败 | 报文发不出去,错误帧满天飞 | 先查终端电阻,再查波特率和采样点,最后查接线 |
| 收到大量错误帧 | 总线负载异常高 | 检查是否有节点波特率不匹配,或线缆过长 |
| 诊断进不去扩展会话 | 一直返回否定响应 | 检查会话是否被占用,是否需要先唤醒,时序是否满足 |
| 安全访问总失败 | 种子拿到了,密钥过不了 | 检查密钥算法、字节序、是否有时效限制 |
| Bootloader刷写中断 | 传输到一半卡住 | 检查流控参数STmin和BS,检查Flash擦除时间 |
| DBC解析值不对 | 数值差一个量级或符号错误 | 检查字节序、缩放因子、偏移量和信号长度 |
除了这些技术问题,还有几个“软坑”值得单独说。
第一个坑:迷信“认证证书”。有些机构会发各种听起来很唬人的结业证书,但企业招聘时基本不看。企业看的是你的项目经历和面试表现。所以别为了证书去买课。
第二个坑:只学工具不会原理。CANoe用得很溜,但问他CAN仲裁是怎么回事就答不上来,这种人在面试时很容易被刷。工具是载体,原理才是内核。
第三个坑:忽略英语。汽车电子的规范和文档大量是英文的,AUTOSAR规范、芯片手册、诊断标准,全都得看英文。如果你的英语阅读是短板,趁早补,这比多学一个协议更重要。
第四个坑:项目经历造假。简历上写“负责某ECU开发”,面试官往下问三层细节你就露馅了。与其编,不如老老实实把上面那四个实操项目做扎实,虽然朴素,但每一个都能讲清楚前因后果,这比高大上的假经历有说服力得多。
还有一个我个人的观察:这个行业变化很快,两年前大家都在讲域控制器,现在讲的是中央计算加区域控制;两年前CAN FD还是高端配置,现在快成标配了。所以选培训的时候,别只看它教什么,更要看它有没有教你“怎么学新东西”的方法。协议会更新,工具会换代,但底层的通信原理、诊断逻辑、测试方法论是相对稳定的。把这些骨架搭起来,你以后换平台、换工具都不慌。
我个人在带新人的过程中发现,成长最快的往往不是基础最好的,而是最愿意动手的那批人。他们会在下班后自己搭个小总线玩,会把一个诊断问题追到底,会主动去看别人的代码和规范。培训能帮你省时间,但省不掉动手这一关。你在选择机构的时候,不妨把“实操占比”放在第一位,把“名师包装”放到最后一位。等你自己把一个最小节点从裸板调到能稳定收发报文那天,你会明白这句话的意思。