Comment devenir un programmeur de noyau / systèmes / pilote de périphérique? [fermé]


40

Je travaille actuellement à titre professionnel en tant qu'ingénieur logiciel travaillant avec le système d'exploitation Android. Nous travaillons à l’intégration de notre plateforme en tant que démon natif parmi les autres facettes du projet. Je travaille principalement en Java en développant le SDK et les applications Android, mais je peux aider avec la plate-forme en C / C ++.

Quoiqu’il en soit, j’ai un grand intérêt à travailler professionnellement en développant un faible niveau pour Linux. Je ne suis pas mécontent de mon poste actuel et je resterai aussi longtemps que l'entreprise me le permettra (en fait, j'aime bien travailler là-bas!), Mais j'aimerais travailler dans ce sens. Je travaille avec le développement du noyau Linux (Robert Love) et l'interface de programmation Linux (Michael Kerrisk) (en plus de renforcer mes compétences en C à chaque occasion) et de parcourir avec désinvolture Monster et des sites similaires.

Le problème que je vois est qu'il n'y a pas de postes de niveau débutant. Comment peut-on percer dans ce domaine? Chaque fois que je vois un "programmeur de systèmes Linux" ou un "programmeur de pilotes de périphériques Linux", ils ont tous besoin d' au moins 5 à 7 années d'expérience pertinente. Ils veulent quelqu'un qui connaisse les ficelles du métier, pas un programmeur de niveau junior (je travaille depuis 7 mois maintenant ...).

Je suppose donc que certains d’entre vous sur stackoverflow agissent à titre professionnel en faisant exactement ce que je voudrais faire. Comment êtes-vous arrivé là? Quelles plateformes avez-vous utilisées pour vous y rendre? Est-ce que je vais avoir des moments plus difficiles parce que j'ai mon baccalauréat en SCC, par opposition à un ingénieur en informatique (où ils feraient l'expérience d'un peu plus intégré, asm, etc.)?

EDIT POUR CLARIFICATION! Je suis conscient de la nature opensource du noyau Linux / des pilotes, etc. Je prévois de contribuer quel que soit le lieu de mon travail quotidien. Je suis plus curieux de savoir quels types de postes de premier échelon me permettront de faire un travail pertinent et d'être payé pour le faire! Merci pour toutes vos réponses jusqu'à présent!


6
Très simple. Linux est opensource. Suivez simplement la liste de développement, corrigez quelques bugs, commencez à écrire de plus gros éléments comme de nouvelles fonctionnalités, des optimisations, peut-être des pilotes ...
Let_Me_Be

2
Mais avant de choisir n’importe quel domaine sous Linux, vous devez avoir une connaissance approfondie du fonctionnement de Linux et de quelques travaux pratiques. Disons que vous devez avoir une connaissance du système de fichiers Linux, etc.
utilisateur29973

Réponses:


36

J'écris des pilotes de périphérique Linux pour mon entreprise et je me suis retrouvé à occuper ce poste en sachant tout sur le développement Linux dans mon département. Ils m'ont ensuite promu / embauché dans un nouveau rôle. C'était vraiment une entrée de niveau junior, donc elles existent et ne perdent pas espoir!

Mon conseil immédiat pour vous est de voir si vous pouvez affiner votre champ de vision. La programmation du noyau est très différente de la programmation système, de la programmation du pilote de périphérique.

  1. Les développeurs du noyau se concentrent sur les interfaces, les structures de données, les algorithmes et l'optimisation pour le noyau du système d'exploitation.
  2. Les programmeurs système écrivent des démons, des utilitaires et d'autres outils pour automatiser des tâches courantes ou difficiles.
  3. Les pilotes de périphérique utilisent les interfaces et les structures de données écrites par les développeurs du noyau pour implémenter le contrôle de périphérique et l'IO.

Un très bon programmeur de noyau en sait peut-être peu sur la latence des interruptions et le déterminisme matériel, mais il en saura beaucoup sur le fonctionnement des verrous, des files d’attente et des Kobjects. Un programmeur de pilote de périphérique saura utiliser les verrous, les files d'attente et les autres interfaces du noyau pour que son matériel fonctionne correctement et de manière réactive, mais il ne sera pas aussi susceptible de corriger un bogue d'allocation de page ou d'écrire un nouveau planificateur.

Alors, choisissez ce qui vous intéresse le plus, peut-être en sondant les listes de développement ou les suiveurs de bogues, et voyez quel type d’impact vous souhaitez avoir. Ensuite, contribuez et développez votre expérience en travaillant sur ces projets et efforts. Lorsque votre nom / email est attaché au code dans la ligne principale du noyau, alors vous aurez l'expérience que vous pouvez indiquer dans votre CV / lettre de motivation pour d'autres postes :-)


3
Intéressant, mais peut-être pas une solution miracle.
Matt Joiner

7
Les balles magiques existent rarement.
Ed S.

Merci pour votre participation! Je vais travailler pour réduire ma concentration (pour finir, j'aimerais avoir une compréhension de toutes les facettes) pour le moment. À quel titre (si vous avez le loisir de divulguer) avez-vous travaillé avant de devenir le «type de rendez-vous» des conducteurs?
dossier accordéon le

4
Croyez-le ou non, mais j'étais le support technique pour les clients utilisant le matériel et les vendeurs essayant de le comprendre: j'ai répondu à un courrier électronique et à des appels téléphoniques. Mais mon expérience parallèle dans le développement de noyau et d’utilisateur pour Linux m’a aidé davantage.
Joe Friedrichsen

3

Je suis un développeur de logiciels avec plus de 15 ans d'expérience chez Motorola et quelques autres entreprises de haute technologie. J'ai un diplôme de BSCE. Donc je ne suis pas amateur.

Cette question ... comment entrer ... est commune, non seulement pour Linux mais pour pratiquement tous les domaines de spécialisation. Le génie logiciel est devenu tout comme la médecine dans la mesure où les praticiens doivent se spécialiser. Toutefois, lorsque votre entreprise réduit ses effectifs et vous licencie après 10 ans d’expertise, le marché du travail a changé et vous n’êtes plus d'actualité. Les entreprises n’étaient pas si sélectives: souvent, les seuls candidats possédant toutes les compétences énumérées dans la liste de souhaits sont ceux qui travaillent déjà pour cette entreprise ou pour un concurrent direct! C'est devenu assez difficile.

Je suis dans cette situation maintenant et bien que ce soit difficile, il existe quelques stratégies que vous pouvez utiliser pour être embauché. Mais d’abord, vous DEVEZ maîtriser la technologie, car si vous êtes embauché, vous devrez produire. Une fois que vous vous sentez prêt, considérez les points suivants:

  1. Cherchez une petite entreprise pour commencer. Ils ne peuvent pas être aussi pointilleux au sujet de qui ils embauchent comme sont les grands types. Passer un an ou deux là-bas et après cela, vous aurez l'expérience professionnelle sur le CV pour se qualifier.

  2. Pensez à sous-traiter, surtout si vous ne travaillez pas à temps plein. Les entreprises sont beaucoup plus disposées à tenter leur chance qu’à temps plein. Encore une fois, une fois que vous avez une expérience vérifiable à mettre sur votre CV, cela ouvre des portes.

  3. Faites un petit projet ou deux par vous-même et créez un portefeuille à présenter aux employeurs potentiels. Cela pourrait ouvrir la porte à une entrée non seulement dans une petite entreprise, mais également dans une entreprise de taille moyenne.

En plus de ce qui précède, envisagez de faire appel à un recruteur professionnel d'une entreprise telle que Kforce, Aerotek, etc. L'employeur paie les frais de recrutement et le recruteur vous aidera à vous vendre d'une manière que vous ne pouvez pas faire vous-même.

En fait, un "programmeur junior" avec seulement 7 mois d’expérience a un énorme avantage sur un gars comme moi qui essaie d’être embauché pour faire quelque chose de nouveau. Les entreprises ADORENT les "nouveaux arrivants" / "nouveaux diplômés", car elles savent que vous ne demanderez pas beaucoup d'argent et seront disposées à faire tout ce qu'elles demanderont, y compris de longs séjours à l'étranger, si nécessaire. Les entreprises ne m'engageront pas pour un poste subalterne, même si j'en ai postulé un, car elles savent que je chercherai à en partir immédiatement. Votre situation n'est pas si grave.

Bonne chance!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.