カーネル/システム/デバイスドライバープログラマになる方法 [閉まっている]


40

私は現在、Android OSを使用するソフトウェアエンジニアとして専門職として働いています。私たちは、プロジェクトの他の側面の中でネイティブデーモンとしてプラットフォームを統合することに取り組んでいます。私は主にJavaでSDKとAndroidアプリケーションの開発に携わっていますが、C / C ++のプラットフォームを支援しています。

とにかく、Linuxの低レベルの開発を専門的に行うことに大きな関心があります。私は現在のポジションに不満はなく、会社が私を許す限り(実際のところ、そこで働くことをとても楽しんでいます!)、ぶらぶらしますが、その方向に自分のやり方で働きたいです。私は、Linux Kernel Development(Robert Love)とThe Linux Programming Interface(Michael Kerrisk)に取り組んでおり(チャンスがあるたびにCスキルを強化することに加えて)、Monsterや同様のサイトを何気なくブラウジングしています。

私が見る問題は、エントリーレベルのポジションがないことです。この分野にどのように侵入しますか?私が「Linux Systems Programmer」または「Linux Device Driver Programmer」を見るときはいつでも、それらはすべて、最低 5-7年の関連する経験を必要とします。彼らは、中級レベルのプログラマーではなく、ロープを知っている人を求めています(私は7か月働いています...)。

だから、私は、stackoverflowのあなたの何人かが私がやりたいことだけをしている専門的な能力で働いていると仮定しています。どうやってそこに行きましたか?どのプラットフォームを使用してそこで作業しましたか?コンピューターエンジニアではなくCSCで学士号を取得しているので、私はより困難な時間を過ごすことになりますか?

明確化のために編集してください! 私はLinuxカーネル/ドライバーなどのオープンソースの性質を知っています。私の仕事はどこにいても貢献するつもりです。どのようなエントリーレベルのポジションが私に関連する仕事をさせ、それをして報酬を得ることができるのか、私はもっと興味があります!これまでのすべての返信をありがとう!


6
とても簡単です。Linuxはオープンソースです。ちょうどあなたが自分のものを知った後、多分...新機能、最適化、おそらくいくつかのドライバーのような大きなものを書き始め、いくつかのバグを修正し、開発リストに従ってください
Let_Me_Be

2
ただし、Linuxの分野を選択する前に、Linuxの動作といくつかの実践について十分に理解しておく必要があります。Linuxファイルシステムなどの知識が必要だとしましょう。
user2997313

回答:


36

私は会社のLinuxデバイスドライバーを作成し、私の部署でLinux開発について最もよく知っていることでこの役職に就き、彼らは私を新しい役割に昇進/採用しました。それは非常にジュニアレベルのスタイルのエントリだったので、それらは存在し、希望を失わないでください!

あなたへの当面のアドバイスは、焦点を絞ることができるかどうかを確認することです。カーネルプログラミングは、システムプログラミングとは大きく異なり、デバイスドライバープログラミングとは大きく異なります。

  1. カーネル開発者は、インターフェイス、データ構造、アルゴリズム、およびオペレーティングシステムのコアの最適化に重点を置いています。
  2. システムプログラマは、一般的なタスクまたは困難なタスクを自動化するデーモン、ユーティリティ、およびその他のツールを作成します。
  3. デバイスドライバーは、カーネル開発者が作成したインターフェイスとデータ構造を使用して、デバイス制御とIOを実装します。

非常に優れたカーネルプログラマーは、割り込みレイテンシとハードウェアの決定論についてはあまり知らないかもしれませんが、ロック、キュー、およびKobjectsがどのように機能するかについて多くを知っています。デバイスドライバープログラマーは、ロック、キュー、およびその他のカーネルインターフェイスを使用してハードウェアを適切に応答する方法を知っていますが、ページ割り当てのバグを修正したり、新しいスケジューラーを作成したりすることはありません。

そのため、おそらく開発リストやバグトラッカーを調査して、最も興味のあるものを選択し、どのような影響を与えたいかを確認してください。次に、それらのプロジェクトと取り組みに取り組み、経験を提供し、構築します。カーネルメインラインのコードに名前/電子メールが添付されている場合、履歴書/カバーレターで他の役職について指摘することができます:-)


3
興味深いが、おそらく魔法の弾丸ではありません。
マットジョイナー

7
魔法の弾丸はめったに存在しません。
エドS.

ご意見ありがとうございます!今のところ、焦点を絞ることに取り組んでいきます(最終的にはすべての面を理解したいと思います)。ドライバーの「人に行く」になる前に、あなたはどのような能力で(もしあなたが開示するのが好きなら)働いていましたか?
アコーディオン

4
信じられないかもしれませんが、ハードウェアと営業を使用しているお客様がそれを理解しようとして技術サポートを受けていました。メールと電話に答えました。しかし、Linuxのカーネルお​​よびユーザーランド開発での私の副業経験は、私をさらに助けてくれました。
ジョーフリードリッヒ

3

私は、モトローラや他のいくつかのハイテク企業で15年以上の経験を持つソフトウェア開発者です。私はBSCE学位を取得しています。だから私はアマチュアではありません。

この質問...侵入する方法...は、Linuxだけでなく、事実上すべての専門分野にとって一般的なものです。ソフトウェア工学は、開業医が専門化する必要があるという点で、医学のようになりました。しかし、10年のスペシャリストを経て会社が規模を縮小し、解雇すると、雇用市場が変化し、最新ではないことに気づきます。企業はかつてそれほど厳選されていませんでした-現在、ウィッシュリストにすべてのスキルを持っている唯一の候補者は、その企業または直接の競争相手のためにすでに働いているものです!かなりタフになります。

私は現在このような状況にありますが、困難ではありますが、採用に使用できるいくつかの戦略があります。しかし、最初に、雇用されると生産が期待されるため、技術に習熟しなければなりません。準備ができたら、次のことを考慮してください。

  1. 手始めに小さな会社を探してください。彼らは、大企業と同じように、彼らが雇う人についてそれほどうるさいことはできません。そこに1、2年を費やし、その後、資格を得るために履歴書で専門的な経験を持つことになります。

  2. 特にフルタイムで働いていない場合は、契約を検討してください。企業はフルタイムよりも請負業者にチャンスを与えたいと思っています。繰り返しますが、履歴書を作成する検証可能な経験があれば、それはドアを開きます。

  3. あなた自身で1つか2つの小さなプロジェクトを行い、将来の雇用主に提示するポートフォリオを作成します。これにより、小さな会社だけでなく中規模の会社にも参入できる可能性があります。

上記に加えて、Kforce、Aerotekなどの企業のプロのリクルーターを使用することを検討してください。雇用主はリクルート料を支払い、リクルーターはあなたが自分でできない方法であなたを販売するのを助けます。

実際、わずか7か月の経験を持つ「ジュニアプログラマー」は、新しいことをするために雇われようとするとき、私のような男よりも大きな利点があります。多くのお金を要求することはなく、必要に応じて海外での長期滞在を含めて何でもすることをいとわないことを知っているため、企業は「フレッシュアウト」/「新卒」を愛しています。企業は、私がすぐにもっと良い職に就きたいと思っていることを知っているので、私が職に応募したとしても、私をジュニア職に雇うことはありません。あなたの状況はそれほど悪くはありません。

がんばろう!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.