Bill Mills, Physiker und interdisziplinärer Programmierer

Hallo, ich bin Bill Mills!

Woran arbeitest du?

In diesen Tagen dreht sich meine Arbeit ganz um die vielfältigen Möglichkeiten wie gute Programmierung, User-Interfaces und Computer Benutzerfreundlichkeit helfen kann, die Wissenschaft schneller voran zu bringen und mehr Spaß zu machen! Ich arbeite für TRIUMF, Kanadas nationales Labor für Kernphysik, als Web-Technologie-Spezialist und Software-Projektleiter für das GRIFFIN-Experiment. GRIFFIN ist ein hochmodernes, neues Gamma-Strahlen-Spektrometer und wurde bei TRIUMF Ende 2014 in Betrieb genommen. Es wurde entworfen, um Daten über radioaktive Partikel effizienter und mit viel höheren Rate als in allen früheren Versuchen zu sammeln, was es uns erlaubt, ein viel detaillierteres Bild vom Atomkern zu bekommen als jemals zuvor.
Für GRIFFIN konzentriert sich meine Arbeit darauf, die Art, wie Wissenschaftler mit ihrem Experiment zusammenwirken, zu modernisieren. Frühere Experimente auf meinem Gebiet verließen sich auf einfache Anzeigen, die den Wissenschaftlern vermitteln sollten, was gerade bei ihrem Experiment abläuft. Das war vor Jahrzehnten in Ordnung, als ein Experiment vielleicht nur eine relativ kleine Zahl an einfachen Geräten einbezog - Aber moderne Experimente können Tausende von Detektoren und Datenströme haben (GRIFFIN allein wird 200 TB Daten pro Woche produzieren) und eine riesige unterstützende Infrastruktur noch dazu.
Unsere Experiment sind zu groß und zu kompliziert geworden, um sie mit ungeordneten Schnittstellen und einfacher Berichterstattung zu managen. Und als ob das nicht schlimm genug wäre, werden immer verschiedene Wissenschaftler vorbeikommen, um GRIFFIN zu nutzen - sie habe nicht die Zeit um zusätzlich zur Durchführung ihrer Experimente auch noch eine komplizierte Benutzeroberfläche zu lernen. Daher muss GRIFFIN eine Benutzeroberfläche haben, die intuitiv und so einfach zu bedienen ist wie möglich, ohne Details und Mächtigkeit zu opfern. Deshalb habe ich im vergangenem Jahr all die coolen Ideen und Technologien, die die JavaScript Gemeinschaft gebaut hat, genutzt, um eine Benutzeroberfläche zu bauen, die es den Wissenschaftlern ermöglicht, gleich wenn sie im Labor ankommen mit dem Forschen anzufangen.
Neben meiner Arbeit an Benutzeroberflächen versuche ich auch Wissenschaftlern beim Modernisieren der Art wie sie Code schreiben zu helfen, indem ich sie dazu bringe, Tools von echten Softwareentwicklern zu benutzen. IT ist so zentral für unsere Methodik geworden, dass man heute einfach kein ernsthafter Physiker seine kann, ohne eine Menge Code zu schreiben - aber bis jetzt muss die Physikgemeinschaft noch bei guter IT-Ausbildung und Techniken aufholen. Die meisten Physiker lernen programmieren, indem einfach sie raten, bis sie etwas bekommen, was (irgendwie) funktioniert. Strategien wie Versionskontrolle und Zusammenarbeit bei Open-Source Software wurden von Programmierern zur Straffung des Entwicklungsprozesses entwickelt; Wenn Wissenschaftler aus diesen Strategien lernen könnten, könnten wir nicht nur die Art und Weise, wie wir Wissenschaft betreiben überladen, sondern sie offener und reproduzierbar zu machen. Labors in allen Bereichen brauchen Menschen, die in der Lage sind, frische Ideen von außerhalb ihrer üblichen Bereiche ein zu bringen, so dass wissenschaftliche Techniken weiterhin wachsen und sich weiter entwickeln können und das ist genau das, was ich zu tun versuche zwischen Physik und Datenverarbeitung heute.

Wie hast du Programmieren gelernt?

Ich begann mein Leben als Programmierer während meiner Arbeit als Doktorand am ATLAS-Experiment an der LHC am CERN - und es war eine Katastrophe! Ich hatte exakt einen Programmierkurs im Grundstudium und in dem war ich durchgefallen. Ich wusste überhaupt nichts übers Programmieren und war überzeugt furchtbar schlecht darin zu sein - und dann als Doktorand programmierte ich plötzlich die ganze Zeit. Ich wurstelte mich fünf Jahre durch das Schreiben eines komplizierten Analyse-Pakets, was den Kern meiner Dissertation war - aber es war tatsächlich nicht der Zeitpunkt an dem ich wirklich lernte zu Programmieren. Was ich von meinen Erfahrungen im Hauptstudium gelernt habe war, wie verloren und hilflos professionelle Wissenschaft in Bezug auf eine gute IT-Kultur war - und was für einen enormen Sprung vorwärts wir machen könnten, wenn wir lernten es richtig zu tun.
Es ist nach dem Hauptstudium, als ich wirklich lernte, zu programmieren. Wie es für viele beruflich Akademiker der Fall war, waren Jobs in der Wissenschaft nach dem Hauptstudium rar gesät. Während ich Arbeit suchte, mein Partner, ein bekannter Web-Entwickler aus der Vancouver Web-Entwickler-Szene, schlug mir vor, mir selbst etwas JavaScript beizubringen, und damit zu beginnen auf lokalen Software-Meetup-Gruppen innerhalb der Stadt aufzutauchen. Das war ein brillianter Vorschlag, da es sich herausstellte, dass Vancouver eine lebendige Software-Startup-Szene hatte (und immer noch hat), die mich mit offenen Armen willkommen hieß und mich während ich mir selbst die Grundlagen von Web-Design und -Entwicklung beibrachte unterstützten. Durch den Austausch mit der Vancouver-Szene merkte ich, dass es nicht nur eine sehr reiche Kultur von IT-Technologie, sondern auch -Techniken gab. Es war dieses verfeinerte Handwerkszeug das der IT in der Wissenschaft gefehlt hat, und seither habe ich daran gearbeitet beide Welten zusammen zu bringen.

Was tust du, wenn du nicht arbeitest?

Wenn ich nicht programmiere, lehre ich wahrscheinlich die Programmierung! Ich bin Mentor für Ladies Learning Code, ein Bildung-Beratung-Programm das helfen soll, die Hindernisse für Frauen, die am Programmierenlernen interessiert sind, zu beseitigen. Ebenfalls freue ich mich, dass ich meine Ausbildung für das Unterrichten bei Software Carpentry, einem Bootcamp für das Unterrichten der Programmierung für Wissenschaftler, fast abgeschlossen habe. Ich baue auch gerade InterdisciplinaryProgramming.com auf, eine Dienstleistung, die freiwillige Entwickler mit Wissenschaftlern, die nach einer Praxisanleitung fürs Codieren suchen, zusammenbringen soll, und ich suche nach einer Möglichkeit die Maker-Bewegung ins Labor zu bringen, indem ich meine Kollegen in Ökologie und Landwirtschaft unterstütze, über den Bau von Arduino-Elektronik Prototypen und andere Offenen Hardware Optionen für die Modernisierung ihrer Experiment lerne.
Ich versuche auch, an möglichst vielen Konferenzen teil zu nehmen, um mit Programmierern über die Zusammenarbeit zu reden, um die Wissenschaft schneller und besser zu machen - hier bin ich an der LXJS in Lisabon, Portugal, im Jahr 2013 mit der brillianten Angelina Fabbro, während wir über Wissenschaftler und Programmierer, die sich zusammenschließen, sprechen:
Wenn ich wirklich richtig vom Computer weg bin, versuche und finde ich Zeit mich bei Umweltgruppen in meiner Gemeinde freiwillig zu engagieren; Ich bin leidenschaftlich dabei, unsere Beziehung zur Natur zu korrigieren, und schrieb einige Zeit lang Inhalt und Forschungsergebnisse für SPEC in Vancouver.

Was ist dein wichtigster Tipp für neue Programmierer?

Vergiss nie, dass es so etwas wie eine angeborene Fähigkeit nicht gibt. Es ist einfach, auf große Programmierer zu schauen und sich wirklich unzureichend zu fühlen, wie du wirst niemals gleichziehen oder ein ‘echter’ Programmierer sein. Aber ich hatte die Ehre gehabt, einige der derzeit größten Programmierer im Web zu treffen und alle haben die die gleiche Erfahrung gemacht - sie fühlten sich alle wie Schwindler und Betrüger als sie anfingen und keiner keiner von ihnen dachte dass es einfach am Anfang war, egal wie einfach sie es heute aussehen lassen. Wenn du eine einzige Zeile Code geschrieben hast, dann bist du ein echter Programmierer - und wenn du mit Codieren und dem Lernen weiter machst, wirst du eines Tages auch ein Meister sein.
Lade