Recrutement
Stage - Architecture d'un compilateur pour le temps réel
Stage de fin d’étude: 4-6 mois
Poste à Grenoble
Gratification: 1400e
Stage avec possibilité de pré-embauche
Contexte du stage
Nous sommes une entreprise experte en développement de systèmes critiques, dont la raison d’être est d’amener l’industrie du logiciel vers le zéro défaut.
Dans le cadre du développement de notre nouveau produit IReflex, nous avons conçu le langage Reflex, permettant de modéliser des systèmes temps-réels avec un modèle d’abstraction d’un automate industriel (PLC).
Le programme Reflex peut être exécuté indifféremment sur un automate industriel, être entièrement simulé sur ordinateur ou être généré dans un langage impératif.
On aime la technique, mais on sait que ce sont les pratiques qu’on met en place qui font la différence entre un échec et une réussite sur un projet logiciel. Et comme on veut que le stage soit une réussite, on va mettre en place ce qu’on veut faire bien.
Avec un vocabulaire accessible :
– On réalise les fonctionnalités au fur et à mesure par petites étapes – On fait des tests automatisés pendant le développement pour vérifier que l’outil marche
– On bosse ensemble pour partager la connaissance
Plus concrètement:
– On fait du développement Agile itératif/incrémental (un backlog de user stories et une organisation type Kanban)
– On fait du Behavior Driven Development sur les tests à haut niveau, et des tests unitaires en dessous. On vise le bon compromis entre taux de couverture et maintenabilité des tests (ça risque de tourner autour de 95%)
– On organise du pairing autant que possible, avec le tuteur ou d’autres collègues pour partager la connaissance, pour faire de la revue de code, etc. Un créneau quotidien minimum est mis en place pour t’éviter la frustration d’un blocage.
– Continuous testing/continuous integration.
Que vas tu faire ?
Les objectifs du stage:
1. La ou le stagiaire passe un super stage
2. Que cette personne ait envie de poursuivre l’aventure du développement logiciel agile chez Sogilis
3. L’outil est assez mature pour être présenté à la communauté
Au cours de ce stage, tu participeras à l’architecture d’un compilateur pour un langage dont la sémantique est prévue pour modéliser des problèmes temps-réel.
Le langage Rust sera utilisé pour le développement de ce compilateur.
Lors du stage, en fonction de votre sensibilité et de vos compétences, vous travaillerez sur l’analyse syntaxique ou le parcours d’arbre pour la génération de code sur différentes cibles.
Pour qui ?
Ce stage est un stage de pré-embauche donc on vise le long terme. Ce qui nous semble essentiel pour que le stage se passe bien :
– Chercher un stage de fin d’études (pour être dispo à l’embauche après, sinon ça marche pas :p)
– Avoir envie d’apprendre
– Avoir envie de travailler en équipe et communiquer
– Être autonome dans sa zone de confort mais être capable de solliciter de l’aide face à un blocage
– Être capable d’écrire du code et de la documentation en anglais technique