web-dev-qa-db-fra.com

Comment devenir programmeur de pilotes noyau / systèmes / périphériques?

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 plate-forme en tant que démon natif parmi d'autres facettes du projet. Je travaille principalement dans Java développement du SDK et Android, mais obtenez de l'aide avec la plate-forme en C/C++.

Quoi qu'il en soit, j'ai un grand intérêt à travailler professionnellement en développant un bas 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 y travailler!), Mais j'aimerais travailler dans cette direction. J'ai travaillé par le biais du développement du noyau Linux (Robert Love) et de l'interface de programmation Linux (Michael Kerrisk) (en plus de renforcer mes compétences en C à chaque occasion que j'obtiens) et en parcourant nonchalamment Monster et des sites similaires.

Le problème que je vois est, il n'y a pas de positions d'entrée de gamme. Comment peut-on pénétrer dans ce domaine? Chaque fois que je vois "Linux Systems Programmer" ou "Linux Device Driver Programmer", ils nécessitent tous au minimum 5-7 ans d'expérience pertinente. Ils veulent quelqu'un qui connaît les cordes, pas un programmeur de niveau junior (je travaille depuis 7 mois maintenant ...).

Donc, je suppose que certains d'entre vous sur stackoverflow travaillent à titre professionnel en faisant exactement ce que j'aimerais faire. Comment êtes-vous arrivé là? Quelles plateformes avez-vous utilisées pour vous y rendre? Vais-je avoir une période plus difficile parce que j'ai mon baccalauréat au SCC par opposition à un ingénieur en informatique (où ils feraient l'expérience d'un peu plus intégré, asm, etc.)?

EDITER POUR LA CLARIFICATION! Je suis conscient de la nature opensource du noyau/pilotes linux, etc. Je prévois de contribuer quel que soit mon travail de jour. Je suis plus curieux de savoir quels types de postes de niveau d'entrée me permettront de faire un travail pertinent et d'être payé pour le faire! Merci pour toutes vos réponses jusqu'à présent!

40
accordionfolder

J'écris des pilotes de périphériques Linux pour mon entreprise, et j'ai atteint ce poste en connaissant le plus le développement Linux dans mon département et ils m'ont promu/embauché dans un nouveau rôle. C'était vraiment une entrée de style junior, donc ils existent et ne perdent pas espoir!

Mon conseil immédiat pour vous est de voir si vous pouvez affiner votre concentration. La programmation du noyau est très différente de la programmation système est très différente 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 cœur du système d'exploitation.
  2. Les programmeurs système écrivent des démons, des utilitaires et d'autres outils pour automatiser les tâches courantes ou difficiles.
  3. Les pilotes de périphériques utilisent les interfaces et les structures de données écrites par les développeurs du noyau pour implémenter le contrôle des périphériques et les E/S.

Un très bon programmeur de noyau peut ne pas en savoir beaucoup sur la latence des interruptions et le déterminisme matériel, mais elle en saura beaucoup sur le fonctionnement des verrous, des files d'attente et des Kobjects. Un programmeur de pilote de périphérique saura comment utiliser les verrous, les files d'attente et les autres interfaces du noyau pour que leur 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 examinant les listes de développement ou les suiveurs de bogues, et voyez quels types 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, vous aurez alors de l'expérience que vous pouvez indiquer dans votre CV/lettre de motivation pour d'autres postes :-)

36
Joe Friedrichsen

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

Cette question ... comment s'introduire ... est une question courante 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. Mais lorsque votre entreprise réduit ses effectifs et vous licencie après 10 ans de spécialisation, vous constatez que le marché du travail a changé et que vous n'êtes pas à jour. Les entreprises n'étaient pas si sélectives - souvent, le seul candidat qui a toutes les compétences dans la liste de souhaits est souvent celui qui travaille déjà pour cette entreprise ou un concurrent direct! C'est devenu assez difficile.

Je suis dans cette situation maintenant et bien que ce soit difficile, il y a quelques stratégies que vous pouvez utiliser pour être embauché. Mais d'abord, vous DEVEZ devenir compétent dans la technologie, car s'il est embauché, vous devrez produire. Une fois que vous vous sentez prêt, pensez à ce qui suit:

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

  2. Pensez à contracter, surtout si vous ne travaillez pas à temps plein. Les entreprises sont beaucoup plus disposées à tenter leur chance avec un entrepreneur qu'à temps plein. Encore une fois, une fois que vous avez une expérience vérifiable pour mettre votre CV, cela ouvre des portes.

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

En plus de ce qui précède, envisagez d'utiliser 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 lorsqu'il essaie d'être embauché pour faire quelque chose de nouveau. Les entreprises AIMENT les "nouveaux diplômés"/"nouveaux diplômés" car elles savent que vous ne demanderez pas beaucoup d'argent et seront disposées à faire CE QU'ILS DEMANDENT, 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 fait la demande car elles savent que je chercherai à partir immédiatement pour un meilleur poste. Votre situation n'est pas si mauvaise.

Bonne chance!

3
guest