我想了解一下嵌入式软件工程师待遇培训班的课程好学吗?

我打算报个班学习嵌入式就是鈈知道好学吗,待遇如何... 我打算报个班学习嵌入式就是不知道好学吗,待遇如何

可选中1个或多个下面的关键词搜索相关资料。也可直接点“搜索资料”搜索整个问题

需要看是在哪个城市工作了,不同城市消费水平不同待遇应该是有差别的。

权威部门统计我国嵌入式人才缺口每年50万人左右。根据前程无忧网发布的调查报告嵌入式软件开发是未来几年最热门和最受欢迎的职业之一,具有10年工作经验嘚高级嵌入式工程师年薪在30万元左右即使是初级的嵌入式软件开发人员,平均月薪也达到了3000—5000元中高级的嵌入式工程师月薪平均超过10000え。 

做软件实际上有高下之分开发语言从机器语言、汇编到C、C++,再到红透半边天的Java、C#等该学哪种呢?为什么有些开发者工资低洏有些开发者千金难求?为什么3年的Java高级程序员薪水仅仅8k-10k而一个Linux底层C语言程序员两年经验就敢要10k的薪水?

还是门槛比如月薪15k的Linux嵌入式開发职位,门槛就有Linux系统、Shell编程、Linux开发环境、C语言、ARM硬件平台、数据结构、Linux内核、驱动程序等粗略数数就有8道关口,他需要非常熟悉整個的计算机体系能做出实际的产品,而Java的开发者却仅仅是会使用名叫Java的语言工具始终高高飘在众多层次之上,开发项目非常快甚至鈳以不知道OSI模型,很可能自始至终都是软件蓝领

嵌入式开发本身也有高下之分,至少包含嵌入式应用程序工程师和底层的驱动内核工程師两种前者同样是使用现成工具进行简单劳动,比如使用J2ME开发小游戏或者进行一些界面开发而后者是根据芯片具体情况把操作系统(洳Linux)移植到上面,同时编写必要的驱动程序改写相应的内核代码。很显然后者是一个公司真正的技术核心而技术核心的工资很可能是其他开发者的数倍。所以说这么复杂且有等级划分的技术一般人都是需要选择报班来系统性的学习的,毕竟靠自学是很难达到需要的水岼的起码想获得高薪资有些难。比如说在创客学院学习后出去找工作刚开始最低四千到后面随着资历会慢慢的增加。整体还是可以的

关于将机器学习作为一项技能

作為软件工程师关键在于要紧跟框架、标准以及范式的最新状态软件工程师不停地努力学习,希望把最好的工具运用到工作中机器学习茬当今诸多的应用程序中找到了立足点,很自然地它就变成了许多工程师想要掌握的一项技能

但是,相比于新框架机器学习更难掌握莋为一个高效的实践者,你需要充分理解该领域的理论、广泛掌握当前最尖端的知识并且有能力以不确定的方式塑造问题。

网上很多的指南只会简单地教你如何在一个策划好的数据集上训练可以立即使用的模型并达到一个不错的准确度,然后就结束了事实上,要成为┅个优秀的机器学习工程师必须掌握更加广泛的技能

以下是我们与超过 50 个湾区和纽约顶尖的机器学习团队对话的精华部分,他们来到 Insight AI准备好解决其问题并加速实现人工智能应用的普及。

为什么机器学习不只是「另一个工具」

部署机器学习的解决方案不仅仅是在你的数据集上随意训练一个模型它需要理解以下内容:

你拥有的数据类型、它的统计学分布方式、它含有什么偏差。

适用于你的特定数据集的统計模型以及这些模型成功的可能性。

相关指标的优化以及你的模型输出的意义

换句话说,为了整合、部署以及调试模型除去工程学嘚知识,你还需要有统计学、线性代数和优化理论的基础知识

为一个问题搭建特定的机器学习解决方案,你需要考虑从数据的获取、标記和预处理到构建、更新并服务一个推理模型以及中间的一切等问题

最终,我们认为可以提前为标准的网站搭建一个数据接口(REST API)我們不能保证机器学习模型总是收敛或产生有用的输出。学习如何审视和传递有效的机器学习产出的最佳方式是理解其理论基础与数据分类の间联系的方式

转行人工智能你需要掌握这 5 项技能

为了理解机器学习,坚实的统计学基础知识是必须的这包括:

评估模型成功的不同方法(精确度、召回率(recall)、特征曲线下的面积等)。你选择的损失函数和评估指标如何测量你的模型输出的偏差

如何理解过拟合(overfitting)囷欠拟合(underfitting),以及偏差/变量权衡

模型的结果与置信度之间有什么联系。

当你在训练神经网络时实际上发生了什么?是什么使这些任務可行而其它的不行呢对待该问题的好方法是,在深入理解理论之前首先通过图和实例理解机器学习。

需要理解的概念有不同的损失函数工作的方法反向传播有用的原因,以及计算图究竟是什么深入理解构建函数模型并且与团队其他成员有效地对其进行沟通非常关鍵。以下是一些资源以高层概述开始,逐渐深入

另一个基础技能是有能力阅读、理解和实验研究论文。起初看上去这似乎是一个艰巨嘚任务所以一个不错的方法是从一篇后面附有代码的论文开始,并深入理解其实现

问任何一个数据科学家,他们会告诉你其 90% 的工作是數据再加工(data munging)它对于应用人工智能的重要性就如同你的模型的成功与你的数据的质量(和数量)高度相关一般。数据在许多方面起作鼡可分为以下几个类别:

数据获取(找到好的数据源,精确测定数据的质量和分类获取并推理标签)

数据预处理(补全缺失值(missing data)、特征工程、数据增强、数据归一化、交叉检验拆分)

数据后处理(使模型的输出有用,去除人为数据处理特殊情况和异常值)

熟悉数据整理的最好方法是掌握原始的数据集,并尝试使用它网上有很多的数据集并且许多社交媒体和新闻媒体网站都有着很好的应用程序接口。遵循以下步骤是一个不错的学习方法:

掌握一个开源的数据集并对其进行检测它有多大(观测值和特征值的数量)?数据是如何分布嘚是否有缺失值或者不含异常值?

开始在原始数据和有用数据之间构建一条转换的通道你是如何回填丢失值的呢?处理异常值最合适嘚方法是什么你如何归一化数据?你可以创造更具表现力的特征吗

检查你的转换数据集。如果一切看上去都不错进行下一步吧!

对┅些不收敛或者包含与调试代码非常不同的过程但是给出合理结果的机器学习算法进行调试。同样地找到正确的架构和超参数需要坚实嘚理论基础,良好的基础建设工作可以测试不同的配置

由于该领域在向前发展,调试模型的方法也在不断进化以下是从我们的讨论和蔀署反映了 KISS 理论和软件工程师之间的熟悉度的模型的经验中得来的「合理性检查(sanity checks)」。

尽快从已被证明可以在类似数据集上工作的简单模型入手掌握基线。古典统计学习模型(线性回归、最近邻等)或者简单的启发式方法或规则会让你明白 80% 的方法并且更快地进行实现叺门的时候,以最简单的方法去解决问题(查看谷歌机器学习规则的第一点)

如果你决定训练一个更加复杂的模型以在基线上有所提升,不妨从数据集的一小部分入手在分数据集上训练模型使其过拟合。这保证了你的模型最起码的学习能力不断地在模型上迭代直到你鈳以过拟合 5% 的数据。

一旦你开始在更多的数据上训练超参数就开始变得更重要了。理解这些参数背后的理论从而理解什么是要探索的合悝值

使用理论方法调节你的模型。写下你使用的最低限度的配置并总结其结果理想情况下,使用自动超参数搜索策略在最开始,随機搜寻可能就足够了尽可能地去探索更多理论方法吧。

许多步骤都能被你的开发技能加速这引出了最后一个技能。

许多应用型机器学習允许你充分利用软件工程技巧有时需要做些变换。这些技巧包括:

测试转换线路的不同方面(数据预处理和增强、输入和输出清除、模型推理时间)

构建模块化的代码和可重复的实验加速方法。

在训练的不同阶段备份模型(检查点)

建立一个分布式基础架构来运行訓练、超参数搜索或者更有效地推理。

上述资源会帮助你处理切实的机器学习问题但是应用人工智能领域变化的特别快,最好的学习方式是动手实践并且真正尝试构建一个完整方案解决实际的问题

找一个你可以构建的产品应该会很有意思。什么可以让你的人生更高效呢什么是可以提升使用数据完成的方法的工具?什么是解决一个有趣问题的数据驱动的方法

寻找与问题相关的数据集。对于如今大多数嫆易处理的问题你应该寻找标注数据。如果对于你的问题不存在标注数据集那么你就应该变得有创造性一点。什么是寻找相似数据或鍺高效标注数据的方法

从探索数据入手,看看你尝试完成的任务在你所拥有数据的数量和质量下是否可行在你开始 TensorFlow 之前,网上搜索人們解决过的相似问题是一个不错的主意哪些是你可以阅读的相关博文与论文,有助于你加快探索新方法

找一些灵感,然后深入研究吧!记住尽管机器学习工程的核心是构建产品,但是它还包含一个不可或缺的理论层面你会探索一些模型和范式,这些东西在未来也许被证明是不成功的但是这非常好,因为它会使你更好地了解问题的复杂性

人工智能是一个令人兴奋、不断变化的领域,它对机器学习笁程师的需求很大铺天盖地的新闻都在围绕这个主题进行报道。我们建议听取一些可靠的资源和新闻从而将与该领域密切相关的一些創新中分离 PR 和抽象研究。以下是一些有所帮助的资源

Hacker News:这是一家关注计算机科学、数据科学和创业精神的社会新闻网站。由 Y Combinator 运营—一家著名的公司孵化器别被名字骗了!「hacker」这个单词最初的用法与网络罪犯没什么关系,而是指一些通过编程技巧聪明地解决问题的人

Insight Blog:峩们时刻在进步。在我们 AI blog 中有一些推文关于之前的不同工程并且可以为有趣的问题的结局提供不错的灵感。

嵌入式系统无疑是当前最热门最囿发展前途的IT应用领域之一嵌入式系统用在一些
特定专用设备上, 通常这些设备的硬件资源(如处理器、存储器等)非常有限并
且对荿本很敏感,有时对实时响应要求很高等特别是随着消费家电的智能化,嵌入
式更显重要像 我们平常常见到的手机、PDA、电子字典、可視电话、 VCD/DVD/MP3
电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家
仪器、航天航空设备等等都是典型的嵌入式系统。嵌入式将会是我们数字化生存的基
础,一台PC里其实就已经嵌入了10几个单片机,一辆高档轿车大约要用到六七十个单片
机;嵌入式处理器无所不在,無处不在,全世界的年产量超过100亿片,这是怎样惊人的
嵌入式系统是软硬结合的东西

搞嵌入式开发的人有两类:

一 类是学电子工程、通信工程等偏硬件专业出身的人他们主要是搞硬件设计,有
(像PC的BIOS一样往下驱动硬件,往上支持操作系统)最初级的硬件驱动程序等
。他们的优勢是对硬件原理非常清楚不足是他们更擅长 定义各种硬件接口,但对
复杂软件系统往往力不从心(例如嵌入式操作系统原理和复杂应用軟件等)

另一类是学软件、计算机专业出身的 人,主要从事嵌入式操作系统和应用软件的开
发如果我们学软件的人对硬原理和接口有較好的掌握,我们完全也可写BSP和硬件
驱动程序嵌入式硬件设计完 后,各种功能就全靠软件来实现了嵌入式设备的增
值很大程度上取决於嵌入式软件,这占了嵌入式系统的最主要工作(目前有很多公司
将硬件设计包给了专门的硬 件公司稍复杂的硬件都交给台湾或国外公司设计,国
内的硬件设计力量很弱很多嵌入式公司自己只负责开发软件,因为公司都知道嵌
入式产品的差异很大程度 在软件上,在软件方面是最有"花头"可做的)所以我们
搞软件的人完全不用担心我们在嵌入式市场上的用武之地,越是智能设备越是复杂系
统软件越起關键作 用,而且这是目前的趋势


从事嵌入式软件开发的好处是:

(1) 目前国内外这方面的人都很稀缺。一方面是因为这一 领域入门门槛较高,不
仅要懂较底层软件(例如操作系统级、驱动程序级软件)对软件专业水平要求较高
(嵌入式系统对软件设计的时间和空间效率要求较高), 而且必须懂得硬件的工作
原理所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新目前
发展太快,很多软硬件技术出现时间不长或正在出现 (如ARM处理器、嵌入式操作系
统、MPEG技术、无线通信协议等)掌握这些新技术的人当然很找。嵌入式人才稀缺
身价自然就高,越有经验价格就越高 其实嵌入式人才稀少,根本原因可能是大多
数人无条件接触,这需要相应的嵌入式开发板和软件,叧外需要有经验的人进行指导开

(2)与企 业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不
低)搞企业应用软件的IT企业,这个用户的系统搞完了又得去搞下一个用户的,
而 且每个用户的需求和完成时间都得按客户要求改变往往疲于奔命,重复劳动
相比而言,搞嵌入式系统的公司都有自己的产品计划,按自己的节奏行事所开发
的产品通常是通用的,不会因客户的不同而修改┅个产品型号开发完了,往往有
较长一段空闲时间(或只是对软件进行一些小修补)有时间进行充电和休整。另
外从事嵌入式软件的烸个人工作范围相对狭窄,所涉及的专业技术范围就是那些(
ARM、RTOS、MPEG、802.11等)时间长了这些东西会越搞越 有经验,卖卖老本几
句指导也够讓那些初入道者琢磨半年的。若搞应用软件可能下一个客户要换成一个
完全不同的软件开发平台,那就苦了

(3) 哪天若想创业,搞自已的產品那么嵌入式是一个不错的主意,这可不像应用软
件那样容易被盗版我们这届有个同学自己有点此类小生意,具体做什么的没细问,
他烸月要进货几千片8位单片机,现在自己已经有车有房了。还有现在开发的饭馆用的
点菜PDA(WinCE平台可无线连网和上网),据说销路不错饭馆點 点PDA让客户点
菜,多显派头档次这些PDA的硬件设计一般都是请别的公司给订做(这叫“贴牌”
:OEM),都是通用的硬件我们只管设计软件僦变成自己的产品了。

同学们若学习嵌入式显然应偏重于嵌入式软件,特别是嵌入式操作系统方面应是
对于搞嵌入式软件的人,最重偠的技术显然是(实际上很多公司的招聘广告上就是这
(1) 掌握主流嵌入式微处理器的结构与原理
(2) 必须掌握一个嵌入式操作系统
(3) 必须熟悉嵌入式软件开发流程并至少做过一个嵌入式软件项目

在嵌入式软件方面最重要的课程包括:

(1) 嵌入式微处理器结构与应用:这是一门嵌入式硬件基础课程,我们说过嵌入式
是软硬件结合的技术,搞嵌入式软件的人应对ARM处理器工作原理和接口技术有充 分
了解包括ARM的汇编指令系統。若不了解处理器原理怎么能控制硬件工作,怎么
能写出节省内存又运行高速的最优代码(嵌入式软件设计特别讲究时空效 率)怎
麼能写出驱动程序(驱动程序都是与硬件打交道的)?很多公司招聘嵌入式软件人员
时都要求熟悉ARM处理器将来若同学到公司中从事嵌入式软件开 发,公司都会给你
一本该设备的硬件规格说明书 (xxx Specification)你必须能看懂其中的内存分布
和端口使用等最基本的说明(就像x86汇编一样),否则怎么设计软件有些同学觉
得嵌入式处理 器课程较枯燥,这主要是硬件课程都较抽象的原因还有同学对ARM汇
编不感兴趣,以为嵌入式開发用C语言就足够了其实不应仅是将汇编语言当成一个
程序设 计语言,学汇编主要是为了掌握处理器工作原理的一个不熟悉汇编语言嘚
人,怎么能在该处理器写出最优的C语言代码在嵌入式开发的一些关键部分,有时
还必 须写汇编如Bootloader等(可能还包括BSP)。特别是在对速喥有极高要求的
场合(如DSP处理器的高速图像采集和图像解压缩)目前还会用到 汇编写程序的,
尽管用到的机会相对C要小得多。当你在一个嵌入式公司工作时在查看描述原理的
手册时,可能很多都是用汇编描述的这是因为很多硬件设计人 员只会写或者喜欢
用汇编描述,此時你就必须看懂汇编程序否则软硬件人员可能就无法交流。很多嵌
入式职位招聘时都要求熟悉汇编

(冷火)等,但ARM占据了绝对主流(有资料说手机中几乎90%都是ARM处理器)ARM是
一个只卖知识产权的公司,目前获得 购买了ARM CPU核授权许可的大公司很多包括
处理器都是采用ARM 9内核,指令┅级是相同的)而众多中小公司又购买了这些处
理器,设计了各种各样的开发板如华恒等国内很多著名嵌入式公司都生产基于Samsung
S3C2410的开发板,供最终用户使用或供教学实验在ARM这个食物链上,ARM公司是
大鱼Intel、Samsung等公司是小鱼,而华恒等则是 虾米最终用户(我们这些要
采购嵌叺式开发板的)则是喂虾米的。Intel早期生产的是低端ARM(Strong ARM相

阅读上一篇:阅读下一篇:

我要回帖

更多关于 嵌入式软件工程师待遇 的文章

 

随机推荐