Contexte
L'année dernière, j'ai effectué un stage dans un groupe de recherche en physique dans une université. Dans ce groupe, nous avons principalement utilisé LabVIEW pour écrire des programmes pour contrôler nos configurations, faire l'acquisition de données et analyser nos données. Pour les deux premiers objectifs, cela fonctionne assez bien, mais pour l'analyse des données, c'est vraiment pénible. En plus de cela, tout le monde était principalement autodidacte, donc le code qui était écrit était généralement un gâchis (pas étonnant que chaque doctorant ait rapidement décidé de tout réécrire à partir de zéro). Le contrôle de version était inconnu et impossible à mettre en place en raison des réglementations strictes en matière de logiciels et de réseaux du service informatique.
Maintenant, les choses ont fonctionné étonnamment bien, mais comment les gens des sciences naturelles font-ils leur développement logiciel?
Des questions
Quelques questions concrètes:
- Quels langages / environnements avez-vous utilisés pour développer des logiciels scientifiques, en particulier l'analyse de données? Quelles bibliothèques? (par exemple, qu'utilisez-vous pour tracer?)
- Y a-t-il eu une formation pour des personnes sans expérience significative en programmation?
- Aviez-vous quelque chose comme le contrôle de version et le suivi des bogues?
- Comment feriez-vous pour essayer de créer un environnement décent pour la programmation, sans trop gêner les scientifiques individuels (en particulier les physiciens sont des gens têtus!)
Résumé des réponses à ce jour
Les réponses (ou mon interprétation d'entre elles) jusqu'à présent: (2008-10-11)
- Langues / packages qui semblent être les plus utilisés:
- Le contrôle de version est utilisé par presque tous les répondants; le suivi des bogues et d'autres processus sont beaucoup moins courants.
- Le cours Software Carpentry est un bon moyen d'enseigner les techniques de programmation et de développement aux scientifiques.
- Comment améliorer les choses?
- Ne forcez pas les gens à suivre des protocoles stricts.
- Créez vous-même un environnement et montrez-en les avantages aux autres. Aidez-les à commencer à travailler eux-mêmes avec le contrôle de version, le suivi des bogues, etc.
- La révision du code des autres peut aider, mais sachez que tout le monde ne peut pas l'apprécier.