Recrutement

Stage - Développement d'un outil open source de visualisation de métriques de code en Rust

Stage de 4-6 mois

 

Poste à Grenoble

Embauche en CDI à la clé

Le contexte

Dans le développement, il est courant d’avoir à travailler sur une base de code existante, et d’avoir à se l’approprier rapidement. 

Dans cette démarche, identifier les points critiques est crucial. Il existe plusieurs outils pour visualiser des métriques du code (codescene.io, Sonarqube). 

Ces outils sont tops, mais leur temps de mise en place les réserve aux personnes les plus motivées.

Quoi ?

Pour rendre ces outils accessibles à plus de personnes, on veut réaliser une application qui rend ces services avec les caractéristiques suivantes:

Application locale -> Aussi facile à installer et lancer qu’un bloc-note

Métriques simples -> On préfère faire peu de choses et le faire bien:

              – Nombre de contributeurs par fichier (extrait de l’historique git)

              – Taille des fichiers

Visualisation graphique -> Sélectionner les informations utiles, les présenter de manière accessible

Open Source -> Un code source accessible, un dépôt accueillant pour la réutilisation et les contributions

Rust -> Un langage populaire, performant. Enfin un remplaçant potentiel sérieux au C.

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 :

Ce qui est indispensable:

– Chercher un stage de fin d’études (pour être dispo à l’embauche après, sinon ça marche pas :p)

– Préférer comprendre le détail des choses plutôt que s’arrêter quand quelque chose semble fonctionner

– Avoir envie d’apprendreexplorer

– 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

– Ne pas être choqué·e par l’écriture inclusive 🙂

– Être à l’aise dans un langage système (C/C++/Go/Rust) ou un langage générique (Python/Java/C#…)

– Avoir envie d’apprendre Rust

Ce qu’il est sympa d’avoir, mais pas indispensable:

– Connaître le langage Rust (c’est un peu tricher mais ça passe aussi :p)

– Tests automatisés

– Linux et la ligne de commande

– git

– Appels systèmes pour manipuler les fichiers

– Test Driven Development

– Connaître le monde de l’Open Source

/!\ 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/

L'offre en quelques mots