it-swarm.cn

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

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

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

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

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

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

40
accordionfolder

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

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

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

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

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

36
Joe Friedrichsen

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

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

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

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

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

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

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

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

祝好运!

3
guest