Bill Mills, physicien et programmeur interdisciplinaire

Photo de Bill Mills
Salut, je m'appelle Bill Mills !

Sur quoi travailles-tu ?

Ces derniers temps, mon travail porte sur les nombreuses façons d'utiliser l'informatique pour que la science avance plus vite et soit plus amusante : les interfaces utilisateur l'expérience utilisateur et les bonnes pratiques de programmation. Je travaille pour TRIUMF, le laboratoire national du Canada sur la physique nucléaire, en tant que spécialiste des technologies web et chef de projet pour les expérimentations GRIFFIN. GRIFFIN est un nouveau spectromètre de rayons gamma disponible en ligne au sein de TRIUMF depuis fin 2014. Il est conçu pour enregistrer des données sur les particules radioactives plus efficacement et à un taux beaucoup plus élevé que toute les autres expériences précédentes, ce qui nous permet d'obtenir une image détaillée du noyau de l'atome à un niveau bien supérieur à avant.
Pour GRIFFIN, mon travail porte principalement sur la modernisation de la façon dont les scientifiques interagissent avec leur expérience. Auparavant, les scientifiques ne pouvaient utiliser que des visualisations très rudimentaires concernant les résultats de leurs expérimentations. Imaginez une longue liste de nombres affichées dans de nombreux tableaux dispersés à de multiples endroits. C'était comme ça depuis des décennies et cela suffisait tant que l'expérience n'impliquait qu'un nombre relativement restreint de résultats simples. Mais maintenant, les expériences modernes peuvent avoir des milliers de détecteurs et de flux de données (par exemple, GRIFFIN seul produira 200 To de données chaque semaine) et il y a une infrastructure énorme pour supporter tout ça.
Nos expériences ont grandi de façon trop fortes et sont maintenant devenues trop complexes pour que les résultats soient gérés avec des interfaces désorganisés et simpliste. z, start superscript, 18, end superscript, minus, 20, z, start superscript, 9, end superscript, plus, 100 est égal à left parenthesis, z, start superscript, 9, end superscript, minus, 10, right parenthesis, start superscript, 2, end superscript.\n\nDonc le polynôme est égal à left parenthesis, z, start superscript, 9, end superscript, minus, 10, right parenthesis, start superscript, 2, end superscript, plus, 110, minus, 100, ou left parenthesis, z, start superscript, 9, end superscript, minus, 10, right parenthesis, start superscript, 2, end superscript, plus, 10. Du coup, GRIFFIN doit avoir une interface utilisateur qui est aussi intuitive et facile à utiliser que possible, sans sacrifier les détails ou la puissance. C'est pour ça que depuis un an, je me sers de toutes les idées et de toutes les technologies que la communauté JavaScript a élaboré pour produire une interface utilisateur qui permettra aux scientifiques de faire de la science aussi vite que possible à leur arrivée au laboratoire.
Une version de développement du tableau de bord, que j'ai construit pour GRIFFIN, pour le premier test en ligne du détecteur SPICE.
Interface Web du calculateur d'efficacité des détecteur pour GRIFFIN et pour les détecteurs associés. Cette interface a remplacé les calculs fait à la main avec papier et crayon (!).
En plus de mon travail sur l'interface utilisateur, j'essaie aussi d'aider les scientifiques à moderniser la façon dont ils écrivent du code en les incitant à utiliser les outils utilisés par les vrais développeurs de logiciels. L'informatique est devenue si importante au cœur de notre méthodologie, que vous ne pouvez plus être un physicien sérieux aujourd'hui sans écrire beaucoup de code. Mais encore maintenant, la communauté des physiciens a encore du travail pour acquérir les bonnes compétences, et les bonnes pratiques en informatique. La plupart des physiciens apprennent à programmer simplement en devinant, jusqu'à ce qu'ils obtiennent quelque chose qui fonctionne (ou presque). Les principes comme le contrôle de version (versionning) et la collaboration de logiciels libres (open source) ont été développés par des programmeurs pour rationaliser le processus de développement. Si les scientifiques pouvaient apprendre et utiliser ces principes, nous pourrions non seulement améliorer la façon de faire de la science, mais aussi la rendre aussi plus ouvert et plus reproductible. Les laboratoires, dans tous les domaines, ont besoin de gens qui sont en mesure d'apporter des idées neuves (ne provenant pas de leur sphère habituelle), de façon à permettre que les techniques scientifiques puissent continuer à se développer et à évoluer. C'est exactement ce que j'essaie de faire entre la physique et l'informatique.

Comment as-tu appris à programmer ?

J'ai commencé ma vie de programmeur comme étudiant diplômé travaillant sur l'expérience ATLAS du LHC au CERN - ça a été une catastrophe ! J'avais eu un seul cours de programmation en tant qu'étudiant. Je ne savais rien du tout sur le codage, et j'étais convaincu de ne pas avoir un niveau terrible. Et puis, en étant étudiant au doctorat, j'écrivais du code beaucoup plus souvent, presque tout le temps. Là, ça a été mieux ! Pendant cinq ans, j'ai cherché à écrire un logiciel d'analyse assez sophistiqués qui était le coeur de ma thèse de doctorat. Mais en fait, ce n'est même pas là que j'ai vraiment appris à programmer. Ce que j'ai appris lors de mes expériences à l'école a été à quel point le monde des professionnels des sciences était pauvre et à la dérive en terme de connaissances de l'informatique. Et j'ai compris aussi à quel point les chercheurs pouvaient être plus efficaces si on pouvait les aider à apprendre comment programmer correctement.
C'est après mes études que j'ai vraiment appris à programmer. Pour beaucoup de professionnels des sciences, les emplois de chercheurs en science sont très peu nombreux. En cherchant un travail dans ce domaine, un développeur web réputé de Vancouver, m'a suggéré d'enseigner moi-même le JavaScript auprès de groupes dans ma ville. Et c'est comme ça que j'ai pu voir qu'il y avait un grand nombre de startup qui m'ont accueilli à bras ouverts, et j'ai pu enseigner les rudiments du design et du développement web. J'ai réalisé qu'il y avait une culture très riche, non seulement en technologie informatique, mais aussi en technologie. It was this refined craftspersonship that was missing from computing in science, and I’ve been working to bring those two worlds together ever since.

Que fais-tu lorsque tu ne programmes pas ?

When I’m not programming, I’m probably teaching about programming! I’ve mentored for Ladies Learning Code, an educational outreach program to help break down barriers for women interested in learning to code, and I’m very excited to be almost finished my certification to teach for Software Carpentry, a bootcamp workshop program designed to teach coding to scientists. I’m also currently building InterdisciplinaryProgramming.com, a free service to match volunteer developers with scientists looking for coding mentorship, and am exploring the possibility of bringing the maker movement to lab by helping my colleagues in ecology and agriculture learn about Arduino electronics prototyping and other open hardware options for modernizing their experiments.
J'essaie aussi d'aller au maximum de conférences possible pour parler aux programmeurs et les inciter à travailler ensemble pour rendre la science plus rapide et meilleure. Me voici ici, au LXJS à Lisbonne en 2013 avec la brillante Angelina Fabbro, nous parlons de la façon dont les scientifiques et les programmeurs peuvent s'associer :
Quand je suis vraiment très loin d'un ordinateur, j'essaie et trouver du temps pour faire du bénévolat avec des groupes de protection de la nature. J'aime essayer de modifier nos relations avec la nature et d'écrire des articles et faire de la recherche pour le "SPEC" à Vancouver depuis un certain temps.

Quel est ton petit conseil pour les nouveaux programmeurs ?

Ne jamais oublier qu'il n'y a pas de compétence innée. Il est facile de regarder les grands programmeurs et se sentir vraiment différents, sentir que ce n'est pas accessible. Mais j'ai eu le privilège de rencontrer certains des plus grands programmeurs sur le web aujourd'hui, et ils ont tous eu la même expérience : ils ont tous commencés en faisant des choses toutes petites, toutes simples, et aucun d'entre eux n'a pensé que c'était facile. Même si aujourd'hui, pour eux, c'est évidemment plus facile. Si vous avez écrit une seule ligne de code vous-même, alors vous êtes un VRAI programmeur. Et si vous continuez à coder et à apprendre, un jour, vous deviendrez un expert, un maître du genre, vous aussi.