前嵌入式工程经理在Reddit上的经验分享

date
Aug 15, 2024
slug
embedded-reddit-reposting
status
Published
tags
阅读
计算机技术
开拓视野
summary
  在嵌入式系统领域,存在许多常见的误解如“薪资不高”或“没有电路知识就无法进入这一行”,这些观点往往令初学者却步。Reddit上的这篇文章旨在澄清这些误解:嵌入式开发的薪资范围非常广,从低端到高端均有机会,并且一些高级嵌入式岗位的薪酬可与后端和人工智能开发持平。文章还区分了嵌入式软件工程师和全栈嵌入式工程师的不同职责,讨论了工作稳定性、薪酬结构、公司选择及工作与生活的平衡,帮助读者了解嵌入式领域职业发展和前景。
type
Post
URL
 
我在这个论坛上看到过很多关于嵌入式开发的错误说法。我也看到不少应届毕业生对嵌入式领域感兴趣(可能是因为网页开发领域的饱和),但他们听说“薪水不高”或“没有电路知识就很难进入这一行”。所以,我想写一篇简短的信息帖,为感兴趣的学生或从业人员提供一些信息。
 
首先,嵌入式开发的薪水不好这一说法是错误的。你可能会惊讶地发现,如果查看2023年上半年glassdoor或levels的报告,专门的嵌入式岗位与专门的后端岗位薪资并列第二(第一是专门的人工智能岗位)。然而,在薪资低端,嵌入式开发也可能是行业中最低的。这意味着嵌入式开发的薪资区间非常广,甚至是所有开发领域中最广的。这可能就是它口碑不佳的原因。
 
先来说说嵌入式开发人员的两种类型。由于没有正式名称,我自创了两个名称:“嵌入式软件工程师 (SWE embedded)”和“全栈嵌入式软件工程师 (Full Stack SWE embedded)”。
 
嵌入式软件工程师——在职位描述中,通常要求计算机科学 (CS)、电子与计算机工程 (ECE) 或电子工程 (EE) 学位。政府职位通常只需获得公共信任或秘密安全许可。这类工程师的知识水平可以分为三个阶段:初级、中级和高级。
  • 初级工程师的工作内容包括Linux用户空间应用程序、低层通信(如UART、SPI、I2C)、可能会涉及一些位操作、数据表寄存器映射、设备驱动修改、基础IC引导。你会逐渐理解C语言中的“volatile”(易失性)关键字,并开始明白在某些CPU上为什么要使用内存对齐的字访问。
  • 中级工程师则会涉及更高级的内容,如Linux内核修改(比如IRQ中断处理实现)、设备驱动程序、裸机启动、以及高效中断处理。你还会开始理解缓存命中/未命中/刷新等概念,且对C或C++语言相当熟悉。
  • 高级工程师除了涵盖以上工作外,还会更多地解决更复杂的问题,例如是否可以通过隔离DDR内存的某部分来进行进程间通信 (IPC),将一些系统中断转换为ARM上的快速中断 (FIQ) 以提升性能,优化指针操作的架构设计,统一产品的构建层次结构,并且对处理器的选型提供建议。
 
全栈嵌入式软件工程师——在职位描述中,这类职位通常要求电子与计算机工程 (ECE) 或电子工程 (EE) 学位,初级岗位有时也接受计算机科学 (CS) 学位。政府职位通常至少需要秘密或高度秘密的SCI安全许可。该职位的知识要求涵盖嵌入式软件工程师的大部分内容,但还要求具备电路知识,因为你将与硬件打交道。
 
全栈嵌入式工程师还可能涉及一些硬件相关的编程工作,如FPGA编程(VHDL、Verilog)、高级引导程序(例如BIOS)初始化、固件恢复管理等,而这些是嵌入式软件工程师不太会做的。
 
此外,全栈工程师的硬件部分增加了两个额外的知识层次:初学者和熟练者。没有“专家”层次,因为大多数情况下,公司会有电子工程师设计电路或PCB。
 
两者都属于工程范畴。如果说工程意味着应用物理学,那么嵌入式开发确实需要你运用物理学知识,因为你在与硬件打交道。然而,全栈嵌入式工程师需要更多的物理知识。我认为这与计算机科学 (CS) 与电子与计算机工程 (ECE) 或电子工程 (EE) 的教育背景差异有关。比如,两者都可能需要了解傅里叶变换 (FFTs)、射频 (RF)、奈奎斯特频带 (Nyquist Zones) 等,但由于美国的大部分工程学校通过了ABET认证,全栈工程师在数学要求和电路课程上会有更多的基础,因此能更快掌握这些知识(这是企业看重的)。
 
关于物理学的深入程度:一个合适的比喻是,你不需要像物理学家那样推导玻尔兹曼常数,但你需要理解它在ADC(模数转换器)中的含义。高级嵌入式软件工程师可能知道它与确定ADC的最精确值有关,但高级全栈嵌入式工程师则会理解它与ADC的噪声底限直接相关。
 
工作保障:根据我所掌握的报告和市场分析数据,嵌入式工程师的工作稳定性通常比平均水平高得多,大部分人在一家公司工作超过10年。当然——这也取决于公司——如果没有涨薪,你的薪资可能会停滞。
公司选择:你有很多选择:国防部人员、政府承包商(如洛克希德·马丁、雷神公司、博思艾伦)、较小的精品政府承包商,以及私营公司(如福特、西门子、SpaceX、亚马逊、谷歌)。注意,不同公司之间薪资水平差距很大,尤其是根据你的经验而定。
薪酬:如果你觉得自己在技能链中的排名较低,可以选择大公司(无论是公共的还是私营的)。只要他们雇佣非嵌入式开发人员,你的薪水几乎可以与他们持平。
 
如果你是高级全栈嵌入式工程师,雷神公司目前在华盛顿特区提供19.8万美元的基本薪资,而洛克希德·马丁提供20.3万美元的基本薪资(不清楚奖金和股票期权情况)。此外,一些大公司还有“臭鼬工厂”项目(洛克希德·马丁发明的术语),你将成为国防部人员,但仍为公司员工。项目完成后,奖金可能会非常丰厚。
 
不过我认为,如果你是高级全栈嵌入式工程师,你应避开大公司,因为私营政府精品承包商才是你的核心领域。我有个朋友在一家私营政府精品承包商工作,年薪为32万美元。这类公司还会根据你参与的政府合同支付年度分红,等同于股票期权。它们通常很难找到,因为它们规模小且高度专业化,通常只有一个主要政府项目(如夜视仪),因此很少有职位空缺。不过,通过谷歌搜索你所在地区的政府合同公司是一个不错的寻找方法。
 
远程工作:这取决于你所在的公司。你主要处理硬件,因此如果为政府工作,可能需要在受保护的信息设施 (SCIF) 或政府基地工作。私营部门的比例大约是50/50。很多公司仍然保留了疫情期间的远程工作安排,因此仍以居家办公为主。
工作地点:嵌入式开发的“集群”通常围绕美国政府设施分布。与其他开发领域不同,你可能在当地找不到私营公司。不过,正如我前面提到的,嵌入式开发的工作稳定性很好。
工作与生活平衡:这主要取决于公司。老实说,大多数情况下,你每周的工作时间少于40小时。但有时可能会工作更长时间。刚开始时你应该尽可能多学习,嵌入式开发是需要长时间培训的岗位,所以公司宁愿让你留在工资单上,也不愿在需要时临时外包。
加班:见上文。通常没有强制加班,但这取决于公司。有些二级或三级政府承包商可能提供自愿加班,并支付加班费。比如,洛克希德·马丁公司与政府签订合同,然后聘请佳能公司制造光学传感器,这就是二级承包商。还有很多三级承包商,它们过于专业化,无法制造完整产品,但专注于制造产品的特定部分。
 
评论 1
This guy embeds.
I know for a fact that Raytheon is paying over $130k with a $30k sign-on bonus if you have a secret clearance and 5 years of experience. New grads probably in the 85k with a 10k bonus range. The embedded SWE there have to do very little FPGA and OS work since they use COTS operating systems and have other teams dedicated to digital logic.
这个人真的做嵌入式。
我知道雷神公司确实支付超过13万美元的薪水,并提供3万美元的签约奖金,前提是你有秘密安全许可和5年的经验。刚毕业的新人可能薪资为8.5万美元,外加1万美元的奖金。那里的嵌入式软件工程师几乎不需要做FPGA和操作系统的工作,因为他们使用的是商用现成操作系统 (COTS),并且有其他团队负责数字逻辑。
 
评论 2
I'll add to this anyone developing chips and designing systems on chips. AMD, Nvidia, Qualcomm, Intel, Tesla, Facebook, Apple, Microsoft, Google, Amazon... As you grow with a co. more and more of your compensation will be via stock (and you'll get stock purchase plans, etc) so it can make sense to pick a co you'd invest in and hold publicly if you didn't work there.
我还想补充一点,任何从事芯片开发和设计系统级芯片 (SoC) 的公司,像AMD、Nvidia、Qualcomm、Intel、Tesla、Facebook、Apple、Microsoft、Google、Amazon等……随着你在公司内成长,你的薪酬将越来越多地以股票形式发放(你还会获得股票购买计划等),所以选择一家即使你不在那里工作也会投资的公司是有意义的。
 
评论 3
If I were 22 again, I'd be doing embedded. This is the software that is going to dominate the future. We're on the verge of the robotics revolution. In 10 or 15 years, web dev will be considered "quaint".
如果我再年轻到22岁,我会选择做嵌入式开发。这将是未来主导的技术。我们正处于机器人革命的前夜。再过10或15年,网页开发将被认为是“老派”技术。
 
评论 4
As a career embedded developer and now leadership position, this is all 100% accurate, but I caution to say, far from the complete picture - my career has been complex to say the least (I won't do defense for a variety of reasons). At my level, I do a lot more juggling/integration of features and people than actual programming - but still have to understand complex problems.
作为一名职业嵌入式开发人员,现在在领导岗位上,我可以说这完全正确,但还远远不是全貌——至少我自己的职业生涯非常复杂(我出于各种原因不会做国防相关工作)。在我的级别,我更多地是在整合功能和管理人员,而不是实际编程——但仍然需要理解复杂的问题。
 
评论 5
Sweet info! I work as an embedded software dev and mainly work with our operating system as well as drivers. I sometimes get the feeling that the "embedded pays low, and only low" comes as an artifact of an older time. Since pay tends to be attached to physical products and since you'd see electrical engineers doing some of the software, (and from what I've heard sometimes it's just an afterthought) then the idea of embedded became attached to just that.
很有用的信息!我是一名嵌入式软件开发人员,主要处理操作系统和驱动程序。我有时会觉得“嵌入式薪酬低且只有低薪”这个想法是源自过去的老旧观念。因为薪酬往往与实体产品挂钩,而你会看到一些电气工程师在做软件(据我所知,有时这只是事后才考虑的事情),因此嵌入式开发与这些概念联系在了一起。
 
评论 6
As career embedded developer and now leadership position, this is all 100% accurate, but I caution to say, far from the complete picture - my career has been complex to say the least (I won't do defense for a variety of reasons). At my level, I do a lot more juggling/integration of features and people than actual programming - but still have to understand complex problems.
作为一名嵌入式开发的资深从业者,现在身居领导岗位,我完全同意上述观点,但必须说明,这还不是全貌——我的职业生涯很复杂(我因为种种原因不会从事国防类工作)。在我的层级,我更多的是在协调功能和人员,而不是编程,但依然需要理解复杂问题。
 
🌈
➡️ 已结合直译与GPT-4o翻译结果比对、精校 ➡️ 原文链接:Embedded from a former embedded engineering manager : r/cscareerquestions (reddit.com)
 

© ziyuan_yin 2024