如何成为内核/系统/设备驱动程序程序员?[关闭]


40

我目前以软件工程师的身份从事Android操作系统的工作。我们致力于将平台作为本地守护程序集成到项目的其他方面。我主要从事Java开发SDK和Android应用程序的工作,但获得有关C / C ++平台的帮助。

任何人,我都非常有兴趣从事Linux的低级专业开发工作。我对目前的职位并不感到不满意,只要公司允许我徘徊(事实上,我很喜欢在那里工作!),但是我想朝这个方向努力。我一直在研究Linux内核开发(Robert Love)和Linux编程接口(Michael Kerrisk)(除了在每次获得机会时都增强我的C技能),并随意浏览Monster和类似的网站。

我看到的问题是,没有入门级职位。一个人如何进入这一领域?每当我看到“ Linux系统程序员”或“ Linux设备驱动程序程序员”时,他们都需要至少 5-7年的相关经验。他们想要的是一个懂行的人,而不是初级程序员(我已经工作了7个月了……)。

所以,我假设,一些从事stackoverflow的人以我想做的专业工作。你是怎么到达那里的?您使用什么平台在那工作?我是否会因为CSC的学士学位而不是计算机工程师(他们会遇到更多的嵌入式,ASM等问题)而变得更加困难?

编辑澄清! 我知道linux内核/驱动程序等的开源性质。无论我的工作在哪里,我都计划做出贡献。我更好奇什么样的入门级职位可以让我从事相关工作并获得报酬!感谢到目前为止的所有答复!


6
很简单。Linux是开源的。只需按照开发清单进行操作,修复一些错误,在您了解自己的知识之后,就可以开始编写更大的知识,例如新功能,优化,也许是一些驱动程序……
Let_Me_Be 2011年

2
但是,在选择Linux的任何领域之前,您应该对Linux的工作有透彻的了解,并有一些实际经验。比方说,你必须有Linux文件系统的知识等等
user29973

Answers:


36

我为我的公司编写Linux设备驱动程序,并且由于最了解本部门的Linux开发而进入这个职位,他们促进/雇用了我担任新职务。这基本上是初级样式的条目,因此它们确实存在并且不会失去希望!

我为您提供的直接建议是,看看您是否可以缩小关注范围。内核编程与系统编程有很大不同,与设备驱动程序编程也有很大不同。

  1. 内核开发人员专注于操作系统核心的接口,数据结构,算法和优化。
  2. 系统程序员编写守护程序,实用程序和其他工具来自动化常见或困难的任务。
  3. 设备驱动程序使用内核开发人员编写的接口和数据结构来实现设备控制和IO。

一个优秀的内核程序员可能对中断延迟和硬件确定性不了解很多,但是她将对锁,队列和Kobjects的工作原理了解很多。设备驱动程序程序员将知道如何使用锁,队列和其他内核接口来使其硬件正常且响应良好地工作,但他不太可能修复页面分配错误或编写新的调度程序。

因此,可以通过调查开发列表或错误跟踪器来选择您最感兴趣的部分,然后查看您想产生什么样的影响。然后,通过从事那些项目和工作来贡献和积累经验。将您的姓名/电子邮件附加到内核主线中的代码后,您将可以在简历中找到其他职位的经验:-)


3
有趣,但也许不是魔术。
马特·乔纳

7
魔术子弹很少存在。
Ed S.

谢谢您的意见!我将暂时缩小我的工作范围(最终希望对所有方面有所了解)。在成为驾驶员的“追随者”之前,您以什么身份(如果您有空透露)?
手风琴文件

4
信不信由你,但我为使用硬件和销售的客户提供技术支持,试图了解它:我回答了电子邮件和电话。但是我在Linux内核和用户领域开发方面的经验为我提供了更多帮助。
乔·弗里德里希

3

我是一位在Motorola和其他一些高科技公司工作超过15年的经验的软件开发人员。我拥有BSCE学位。所以我不是业余爱好者。

这个问题……如何打入……不仅对于Linux,而且对于几乎任何专业领域都是一个普遍的问题。软件工程已经变得像医学一样,从业者必须专业化。但是,当您的公司缩减规模并在成为专家10年后解雇您时,您会发现就业市场已经发生变化,并且您不是最新的。公司过去并没有那么挑剔-现在,拥有愿望清单中所有技能的唯一候选人通常是已经为该公司工作或直接竞争者的人!它变得相当困难。

我现在处在这种情况下,尽管困难重重,但您可以使用一些策略来聘用他们。但是首先,您必须精通该技术,因为如果雇用它,您将被期望进行生产。准备就绪后,请考虑以下事项:

  1. 寻找一家小公司。他们不能像大公司那样对雇用的人如此挑剔。在那儿呆一两年,然后,您将具有履历方面的专业经验,有资格获得这份简历。

  2. 考虑签约,特别是如果您不是全职工作的话。与全职工作相比,公司更愿意抓住机会与承包商合作。同样,一旦您有可验证的履历,便会打开大门。

  3. 自己做一个或两个小项目,并创建一个投资组合以呈现给潜在的雇主。这可能不仅为进入小型公司打开了大门,而且也为中型公司打开了大门。

除上述之外,请考虑使用来自Kforce,Aerotek等公司的专业招聘人员。雇主支付招聘费用,招聘人员将以您无法自行完成的方式帮助您出售产品。

实际上,一个只有7个月工作经验的“初级程序员”在试图雇用新人时比我这样的人有巨大的优势。公司喜欢“新鲜” /“新毕业生”,因为他们知道您不会要求很多钱,并且愿意在需要时做任何他们想问的事情,包括在海外的长期工作。即使我申请了一个初级职位,公司也不会雇用我,因为他们知道我将寻找一个更好的职位。您的情况还不错。

祝好运!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.