Ingénieur de recherche en modélisation numérique et développement logiciel (H/F)
Description
Vos missions en quelques mots
Missions :
- Contribuer à la maintenance, à l'évolution et à la valorisation des logiciels scientifiques développés et utilisés par l'équipe.
- Participer au développement logiciel, en renforçant la qualité, la fiabilité et la reproductibilité des codes scientifiques.
- Accompagner la diffusion des logiciels scientifiques et favoriser l'adoption de bonnes pratiques de développement collaboratif et d'outils d'intelligence artificielle générative au sein de l'équipe.
Activités :
- Participer à la maintenance, au nettoyage et à la restructuration de codes scientifiques existants (MANIAC, NMRFromMD, MICROSEP).
- Améliorer la lisibilité, la modularité, la robustesse et la pérennité des codes scientifiques.
- Concevoir et mettre en œuvre des tests automatisés pour assurer la fiabilité et la validation des codes.
- Automatiser les procédures de compilation, de test et de validation des logiciels.
- Préparer les codes scientifiques à leur diffusion et à leur publication : gestion et préparation des versions avec Git, archivage et rédaction de documentation technique.
- Contribuer à la diffusion et à l'adoption de bonnes pratiques de développement logiciel au sein de l'équipe (qualité et revue de code, tests automatisés, documentation technique, gestion de versions et intégration continue).
- Explorer et utiliser des outils d'intelligence artificielle générative (LLM) pour assister le développement, l'analyse et la documentation des codes scientifiques.
- Assurer une veille technologique sur les outils et pratiques émergents en matière de développement logiciel et d'intelligence artificielle, et favoriser leur appropriation au sein de l'équipe.
Contexte de travail :
L'ingénieur de recherche contribuera à la maintenance, à l'évolution, à la fiabilisation et à la valorisation de plusieurs codes scientifiques existants (MANIAC, NMRFromMD, MICROSEP). Son activité s'inscrira dans une démarche de développement logiciel au sein de l'équipe, en favorisant l'adoption d'outils collaboratifs, l'automatisation des procédures de développement et de validation, ainsi que la diffusion des bonnes pratiques. Il participera également à l'exploration et à l'intégration d'outils d'intelligence artificielle générative dans les activités de développement, d'analyse et de documentation scientifique.
Profil recherché
Competences :
- Maîtrise des langages de programmation Python, Matlab, Fortran et C++.
- Connaissance de CUDA pour le développement et l'exploitation de calculs sur GPU.
- Maîtrise des environnements Linux et du scripting Shell (Bash).
- Maîtrise des outils de développement collaboratif : Git, GitLab ou GitHub.
- Connaissance des outils de compilation et de construction logicielle : CMake, Make.
- Connaissance des outils de tests automatisés et d'intégration continue, notamment GitLab CI.
- Capacité à configurer, exécuter et optimiser des calculs sur des infrastructures CPU et GPU.
- Capacité à analyser, comprendre et faire évoluer des codes scientifiques existants.
- Maîtrise des bonnes pratiques de développement logiciel : qualité et revue de code, modularité, tests et documentation.
- Capacité à travailler en équipe et à partager ses connaissances et ses compétences.
- Capacité à rédiger des documents techniques et de la documentation logicielle.
Contraintes et risques :
Niveau d'études minimum requis
- Niveau Niveau 7 Master/diplômes équivalents
- Spécialisation Informatique, traitement de l'information, réseau de transmission des données
Langues
- Français Seuil