Recrutement

Stage - Architecture du compilateur d'un langage pour le temps réel

Stage de 4-6 mois

 

Poste à Grenoble

Embauche en CDI à la clé

Le contexte

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 IReflexnous 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).

Un 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.

Quoi ?

Au cours de ce stage, vous participerez à 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.

Objectifs du stage

Notre ordre de priorité:

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é (articles, tutos, screencasts)

4. Une montée en compétence générale de Sogilis sur le Rust, et un projet exemple pour servir de base à de futurs projets embarqués ou cloud native

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

 

 


/!\ En bref : on cherche quelqu’un qui saura faire, pas quelqu’un qui sait déjà faire /!\

Comment ?

Chez Sogilis 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

– On met en place des outils automatisés pour détecter les problèmes


Avec le vocabulaire qu’on utilise tous les jours :

– On fait du développement Agile itératif/incrémental (un backlog de user stories et 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 integrationOn se fait un planning pour s’organiser. Si on dévie de ce planning, on ajuste le périmètre fonctionnel, pas la qualité.


Notre philosophie de base c’est ça : https://manifesteagile.fr