web-dev-qa-db-ja.com

カーネル/システム/デバイスドライバープログラマーになるには?

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

とにかく、私は専門的にLinuxの低レベルを開発することに大きな関心を持っています。私は現在の立場に不満はなく、会社が私を許可する限りはぶらぶらします(実際、私はそこで働くことをとても楽しんでいます!)、私はその方向に向かって働きたいと思います。私はLinuxカーネル開発(Robert Love)とLinuxプログラミングインターフェイス(Michael Kerrisk)に取り組んでおり(偶然に私のCスキルを強化することに加えて)、モンスターや類似のサイトをさりげなく閲覧しています。

私が目にする問題はエントリーレベルの位置がないことです。このフィールドにどのように侵入するのですか? 「Linuxシステムプログラマー」または「Linuxデバイスドライバープログラマー」が表示される場合は、それらすべてに最低でも 5〜7年の関連する経験が必要です。彼らは、中級レベルのプログラマーではなく、ロープを知っている人を望んでいます(私は今7か月間働いています...)。

それで、私は、stackoverflowの一部の人が、私がやりたいことだけを行う専門的な能力で働いていると想定しています。どうやってそこに着いたのですか?そこでの作業にどのプラットフォームを使用しましたか?コンピュータエンジニアとは対照的に、CSCの学士号を取得しているので、もっと困難な時期になるでしょうか?

明確化のために編集! Linuxカーネル/ドライバーなどのオープンソースの性質を知っています。私の日常業務に関係なく、貢献することを計画しています。どんなエントリーレベルのポジションが私に関連する仕事をして、それをすることで給料をもらえるのか、もっと興味があります!これまでのすべての返信をありがとう!

40
accordionfolder

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

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

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

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

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

36

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

この質問...侵入方法...は、Linuxだけでなく、実質的にあらゆる専門分野に共通の問題です。ソフトウェアエンジニアリングは、開業医が専門化しなければならない点で医学のようになっています。しかし、あなたの会社が10年のスペシャリストになってから規模を縮小して解雇すると、雇用市場は変化し、最新ではなくなります。企業は以前はそれほど選択的ではありませんでした-たいていの場合、ウィッシュリストのすべてのスキルを持つ唯一の候補者は、その企業または直接の競合他社ですでに働いている人です!かなりタフになります。

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

  1. 最初に小さな会社を探します。彼らは巨人のように彼らが雇う人についてそれほどうるさくすることはできません。そこに1〜2年を費やし、その後、資格を取得するために履歴書でプロの経験を積むことになります。

  2. 特にフルタイムで働いていない場合は、契約を検討してください。企業は、フルタイムよりも請負業者にチャンスをとる方がはるかに進んでいます。繰り返しになりますが、履歴書を提出する検証可能な経験があると、ドアが開きます。

  3. 自分で小さなプロジェクトを1つまたは2つ作成し、将来の雇用主に提示するポートフォリオを作成します。これは、小規模企業だけでなく中規模企業への参入の扉を開くかもしれません。

上記に加えて、Kforce、Aerotekなどの会社の専門の採用担当者を使用することを検討してください。雇用主が採用料を支払います。採用担当者は、自分ではできない方法であなたを販売するのに役立ちます。

実際、7か月しか経験のない「ジュニアプログラマー」は、何か新しいことをするために雇われようとするとき、私のような人よりも大きな利点があります。企業は「フレッシュアウト」/「新卒」を愛しています。彼らはあなたが多くのお金を要求しないことを知っており、必要に応じて海外で長いスティントを含め、何でも質問することをいとわないでしょう。採用したとしても、すぐに優秀な人材を求めていることを知っているので、企業は私を採用しません。あなたの状況はそれほど悪くない。

幸運を!

3
guest