Data Science ist eine Disziplin im stetigen Wandel – neue Entwicklungen und technische Möglichkeiten erscheinen im Eiltempo. Um da Schritt zu halten, ist eine Auseinandersetzung mit den Methoden maßgeblich. Während die Medien ständig neue Begriffe zum Großthema Digitalisierung definieren, gehen wir
einen Schritt zurück und schauen mit Data Scientist Florian Löwenstein und Software-Entwickler Martin Guist hinter die Kulissen: Was für eine Sprache spricht eigentlich ein Data Scientist? Ein Gespräch über Methodik, die Data-Science-Sprachen R, Python und Julia und die Zukunft der Datenarbeit.
Was ist eurer Meinung nach sinnvoller: Eine Data-Science-Sprache herausragend oder die verschiedenen Sprachen grundlegend zu beherrschen?
Martin: Viel wichtiger ist für mich das Bewusstsein für die Idee: Ich möchte eine bestimmte Sache automatisiert ausführen um ein bestimmtes Ergebnis zu bekommen und verfolge damit ein langfristiges Ziel. Gleichzeitig ist es hilfreich zu verstehen, wie die dahinterstehende Analyse und der Algorithmus funktionieren. Jede Sprache kann ähnliche Analysen ausführen, jedoch unterschiedlich bequem. Wichtiger ist also die Frage: Wie gehe ich mit dieser Sprache um? Daher empfehle ich, sich nicht auf eine Sprache festzulegen, sondern zu verstehen, wie das Rezept funktioniert und dieses dann umzusetzen.
Florian: Ich halte es schon für sinnvoll, den Schwerpunkt auf die Sprache zu legen, in der sich der einzelne Data Scientist besonders gut auskennt und die ihm oder ihr liegt – allein um die Anfangshürde möglichst niedrig zu halten. An einem gewissen Punkt sollte man jedoch auch in der Lage sein, die unterschiedlichen Einsatzszenarien der Sprachen zu kennen und zu unterscheiden: Wo hat die eingesetzte Sprache Vorteile? Wie kann ich die Nachteile meiner präferierten Programmiersprache ausgleichen? Welche Sprache passt besser zum Projekt? Um dann dem Kundenwunsch gerecht zu werden, ist eine Grundkenntnis von Python und R gleichermaßen schon maßgeblich.
Die meisten Data-Science-Projekte werden bei eoda mit R realisiert. Sind andere Programmiersprachen dann überhaupt ein Thema?
Florian: Jeder Mitarbeiter bei eoda kommt zwangsläufig mit R in Kontakt – mit R hat bei uns alles begonnen. Aber Data Science funktioniert nicht ohne Weiterbildung. Außerdem macht es auch einfach Spaß, sich vielfältig mit Data Science zu beschäftigen. Um also die Frage zu beantworten: Ja, andere Programmiersprachen sind definitiv ein Thema bei uns. Neben R setzen wir zunehmend auf Python. Ein Python-Analyseprojekt können wir genauso schnell realisieren, wie ein R-Analyseprojekt. Dasselbe gilt auch für andere Data-Science-Sprachen und -Methoden wie beispielsweise Deep Learning – es gibt immer Kollegen, die sich bereits intensiv mit dem Thema auseinandergesetzt haben.
Auch wenn wir in unserem Arbeitsalltag häufig mit R arbeiten, sind wir uns den potenziellen Schwachstellen bewusst und können im Einzelfall entscheiden, wann der Einsatz einer anderen Sprache mehr Sinn macht.
Martin: Gerade in der Softwareentwicklung setze ich eigentlich voraus, dass jeder Kollege mindestens die Grundregeln jeder Sprache beherrscht und hier unterstützend tätig sein kann. Wir profitieren dabei von einem nachhaltigen Zusammenspiel zwischen Software- und Data-Science-Kompetenz.
Was waren eure ersten Berührungspunkte mit R, Python und Julia?
Florian: In meiner vorherigen Arbeit als Datenanalyst habe ich hauptsächlich mit SPSS gearbeitet, bemerkte dann aber eine gewisse Limitierung bei der Arbeit mit der Sprache – ich habe schlichtweg ein erhöhtes Maß an Flexibilität gebraucht. Da konnte R dann natürlich glänzen. Ich habe mich dann intensiv mit der Sprache auseinandergesetzt und bei eoda diverse Projekte damit realisiert. Irgendwann stellte ich mir dann die Frage: Was willst du noch lernen? Python als sehr aufgeräumte Sprache mit einer abgewandelten Syntax hat mich dann natürlich gereizt. In meiner Arbeit als Data Scientist stelle ich mittlerweile schon fest, dass der Trend zu Python und R geht. So schließt sich dann der Kreis.
Martin: Bei mir ist das ähnlich. Zusätzlich interessiere ich mich sehr für Julia: Eine neue Sprache, die sowohl den Anspruch hat sehr zeitgemäß und demnach aufgeräumt zu sein und gleichzeitig ein hohes Maß an Performance gewährleisten soll. Im Gegensatz zu Python und R ist Julia keine interpretierte Sprache, damit scheint der Performancegewinn realistisch. Noch wissen wir nicht, ob die Sprache einschlagen wird und hält, was sie auf den ersten Blick verspricht. Aber es besteht durchaus das Potenzial, dass sie die besten Eigenschaften bestehender Data-Science-Sprachen vereint. Jeder zukunftsorientierte Data Scientist sollte die weitere Entwicklung der Sprache unbedingt verfolgen.
Wann nutzt ihr R, wann Python? Was sind die Vorteile?
Florian: Bei der Prototypenentwicklung ist R ganz eindeutig das Mittel der Wahl mit dem Ziel zu evaluieren, ob sich für den jeweiligen Use Case überhaupt ein valides Analysemodell entwickeln lässt und die gewünschten Ergebnisse liefert. R als Statistiksprache wird von einer vielfältigen Methoden-Bibliothek ergänzt, ständig kommen neue Pakete hinzu. Bevor ich also aufwändig Code schreiben muss, nur um das Potenzial einer Idee zu prüfen, kann ich diesen großen Fundus nutzen und spare so Zeit. So komme ich als Coder und natürlich auch der Kunde schneller an sein Ziel.
Bei jeder Analyse, die zeitkritisch ist, bekommt R dann aber Schwierigkeiten und Python wäre die bessere Alternative. Ein Beispiel ist maßgeschneiderte Werbung oder die allbekannten Online-Empfehlungen. Hier werden die Daten sehr schnell analysiert und die Ergebnisse verwertet, wir sprechen hier von Sekunden oder wenigen Minuten. Wenn es um das Einlesen großer Daten geht und keine Datenbank zur Verfügung steht, dann ist Python flexibler in der Nutzung.
Aber es ist immer eine Frage der Zielsetzung. Ein anderes Beispiel wäre hier ein typischer Predictive-Maintenance-Case: Wann fällt meine Maschine aus? Hier ist es wichtig, die Antwort mit einem gewissen Zeitvorlauf zu erhalten um anschließend reagieren zu können; den Techniker informieren, beispielsweise. Denn was nützt mir eine Meldung wenige Sekunden vor Maschinenausfall? Das geht gut in R, auch über den Prototyp hinaus.
Martin: Prinzipiell gilt es immer abzuwägen: Was will der Kunde für ein Ergebnis? Welche Frage will er beantwortet wissen? Und wie schnell muss die Antwort wirklich zur Verfügung stehen? Dabei müssen noch weitere Faktoren als allein die Sprachwahl berücksichtigt werden, beispielsweise die richtige Hardware oder die technische Anbindung. Auf Linux-Systemen ist Python sehr angenehm in der Handhabung, das macht Python in der Linuxverwaltung zu einer Topsprache. Ich kann mit Python darüber hinaus nicht nur Data Science betreiben, sondern auch handfeste Oberflächen und Applikationen bauen – das ist ein sehr großer Vorteil. Außerdem gibt es mittlerweile viele Pakete, die sowohl in R- als auch in Python-Bibliotheken zur Verfügung stehen und ähnlich funktionieren. Beispielsweise das bekannte R-Paket ggplot. Da entwickelt sich gerade ein ähnlich vielversprechendes Ökosystem, was aber heute noch lange nicht mit den R-Bibliotheken mithalten kann.
Jede Sprache hat also Vor- und Nachteile, die es zu berücksichtigen gilt. Wie gehen Software-Teams damit um? Sollten Softwareentwickler das aufgreifen und Data-Science-Anwendungen programmieren, die multilingual funktionieren?
Martin: Das beste Produkt kann noch so gut entwickelt sein, wenn es am Markt vorbei kreiert wird. Wir haben uns also gefragt, welche Features der Data Scientist wirklich braucht und sind in diesem Kontext immer wieder auf das Potenzial der Mehrsprachigkeit gestoßen. Also: Ja, Softwareentwickler sollten diese Wünsche unbedingt aufgreifen.
Die Vorstellung, von jeder Sprache das Beste zu nutzen, hat dabei einen unglaublichen Charme: Datenmanagement mit Python, für die Analyse nutze ich R und das alles in einer Entwicklungsumgebung, die noch viele weitere Features bietet. Oder ich habe bereits gut funktionierende Skripte, die ich unkompliziert anbinden und automatisiert ausführen kann. Wir schaffen mit dem data science environment so nicht nur zwischen den Sprachen einen Austausch, sondern auch zwischen den einzelnen Fachabteilungen – ganz ohne Sprachhürden.
Florian: Auch aus Kostensicht macht das total Sinn: Um an einem Projekt zu arbeiten und sofort loslegen zu können, braucht eine kleine Data-Science-Abteilung dann je Sprache nur noch einen Entwickler – wenn überhaupt. Die Sprachpräferenz des jeweiligen Entwicklers spielt künftig einfach nicht mehr zwingend eine so große Rolle, es gibt kaum noch sprachlich bedingte Limitierungen. Wenn dann die Rahmenbedingungen stimmen, also die Kombination mehrerer Sprachen durch technische Hürden nicht ins Stocken gerät, wird das Potenzial von Data Science gekonnt ausgeschöpft.
Wie definiert sich perspektivisch der Begriff Data Science? Welche Entwicklungen sind zu erwarten?
Martin: Die Programmiersprachen entwickeln sich stetig weiter, Julia markiert da möglicherweise einen neuen Meilenstein. Data Scientists werden unabhängiger von der Sprache: Die Idee von einer Lösung, einem Programm kann vielfältig umgesetzt werden: Sie verbiegen sich nicht mehr durch Syntax-Limitierungen sondern schreiben eher intuitiv.
Florian: Dem stimme ich zu, glaube jedoch auch, dass jeder weiterhin Sprach-Präferenzen haben wird. Es wird immer R-Entwickler geben und Data Scientists, die lieber mit Python arbeiten. Weiterhin wird das Thema Open Source großgeschrieben, da müssen sich auch die Universitäten in ihren Lehrplänen hinbewegen. Auch Konzepte wie Künstliche Intelligenz und Deep Learning werden weiter ausgereift und erhalten vermehrt Einzug in unseren Arbeitsalltag.
Jedem Data Scientist empfehle ich daher den Blick über den Tellerrand und das ständige Hinterfragen der eigenen Arbeitstechnik: Ist eine kommerzielle Sprache wirklich noch zukunftsfähig? Haben Black-Box-Lösungen eigentlich wirklich Vorteile? Auch große Konzerne entdecken aktuell den Mehrwert von Open Source – das wird den Markt weiter verändern und spiegelt unser Verständnis von Data Science wider: transparent, zielgerichtet und nachhaltig.
Martin und Florian, vielen Dank für das Gespräch.