嵌⼊式软件⼯程师需要哪些知识
最近想不到好的专题,所以与⼤家⼀起聊聊,在我眼中,⼀名优秀的需要具备哪些能⼒。
嵌⼊式软件⼯程师需要哪些知识
基本职业技能
编码能⼒:⾄少精通C/C++语⾔进⾏coding。就嵌⼊式⾏业⽽⾔,这两种语⾔⽤得最多。如果掌握了它们,即便切换到其他语⾔,难度也不会太⼤。此外,还包括良好的编码习惯和风格,具体内容可以参看最初⼏期关于编码规范的⼀些讨论。关于这个能⼒,想说明的⼀点是,良好的编码能⼒并不等同于指针,数据结构⽤得多溜,各类运算符优先级记得多牢,代码写得多精简。可维护性,可移植性,可阅读性,可靠健壮性才是更加需要关注的点。
分析问题解决问题能⼒:这个能⼒包含⼏个层⾯。第⼀个层⾯是调试⼯具的使⽤熟练度,主要为进⾏代码
调试的时候,结合MCU的特性,如何熟练应⽤⼯具进⾏分析,例如watch/live watch, memory watch,break point设定技巧,插件的使⽤,查看寄存器寻HardFault 原因。第⼆层⾯是问题分析与解决⽅式⽅法。之前说过我创建了个QQ,经常有友会问各式各样的问题,其中的很多提问者根本就没⾃⼰分析过原因,或者根本就不知道怎么去分析。在还没有形成条件反射般的分析能⼒前,在解决复杂问题时,推荐使⽤鱼⾻图进⾏分析:先假设可能的原因,理清他们间的前后、因果关系,然后拆分为不同节点去各个击破排除。
硬件基础能⼒:嵌⼊式软件开发的特殊性要求即便是软件⼈员也需要具备基本的硬件能⼒,包括模电,数电,传感器等。
英语:不要以英语不好排斥阅读英⽂资料,除⾮猴年马⽉的时候,中国技术发达到所有芯⽚都是⾃⼰制造,所有技术标准都是⾃⼰制定。另外,良好的英语⼝语和书⾯能⼒,能⼤⼤拓宽你的就业⾯。
熟悉软件开发流程
⼤学⾥⾯以及培训速成机构很少讲解这⽅⾯的理念,所以导致⼤部分⼈员习惯性的⼀上来就开始编码。下图是软件开发编码阶段开始bug引⼊率,发现率以及修复成本的图例。由此可见,如果缺乏流程上把关,直接进⾏编码,后期的代价是⾮常⾼的。
软件最经典的开发流程为V-Model,其他流程体系基本上都⼤同⼩异,脱离不了这个模⼦。这块的能⼒要求为,要清楚不同阶段要做什么,交付物是什么,做哪些评审和测试保证软件质量。软件流程带来的两个主要好处在于:1. 通过不同阶段的设计开发评审验证测试,保证代码的质量; 2. 建⽴起闭环的路径,追踪需求在设计开发测试阶段的覆盖率,保存不会有遗漏。
学习能⼒
这个能⼒不仅仅是这⼀⾏所要求的,所有⾏业都要求。并且,对于嵌⼊式这⼀⾏⽽⾔,这个能⼒应该放在第⼀位。下个⽉你可能就需要开发不同⽅向的产品,明年你可能就需要⽤新的MCU,过⼏年可能C语⾔就淘汰。。。如果学习能⼒弱,节奏跟不上技术的变迁,不久的将来就会被⾏业淘汰。类似的,学习能⼒也包含两个⽅⾯。第⼀为学习⽅法和效率,这个⼩编学习能⼒也⼀般,给不出多好的建议。第⼆为学习的态度,这个体会就⽐较深了。作为⼀名软件⼩团队的team leader,常常需要分配任务给团队成员。因为产品是全新的⽅向,所以很多东西需要现学现⽤。有些成员能很快进⼊状态,短期内掌握新的知识并应⽤于新产品开发,有些成员学习进度缓慢,⽆从下⼿,需要⼈为⼲预才能往前。第⼆类⼈员的之所以进展缓慢的通病为,带着畏难不前的⼼态去学习,总是会以新员⼯的姿态放宽对⾃⼰的要求,认为进度慢是理所当然。带着这样的⼼态,在我看来是⼀种⾃⽢堕落的表现,对个⼈的成长极端不利。
后端工程师需要掌握哪些知识⾏业相关能⼒
做通讯设备,那就得精通相关的通讯接⼝和协议,做电源产品,那就得掌握电⼒电⼦基本的拓扑和控制⽅法,做电池管理系统,就得知晓电池特性。
还有⼀些其他的能⼒,⽐如说领导⼒,团队协作能⼒,沟通技巧这些都是其次的,主要还是⾃⾝的技术要硬,想要有过硬的技术不妨咨询⼀下创客学院,有好的技术⽼师带,做事情会事半功倍。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。