Industrie: Software­entwicklung

Verwendete JetBrains-Produkte: PyCharm

Organisationsgröße: 30+

Land: Deutschland

Scieneers

Scieneers ist ein IT-Unternehmen, dessen 35 Expert*innen für IT, Daten und Data Science sich leidenschaftlich mit Daten und datenbasierter Wertschöpfung beschäftigen. Sie bieten gezielte Data-Engineering- und Data-Science-Dienste an, um das in Daten schlummernde Potenzial auszuschöpfen und wertvolle Erkenntnisse aus ihnen zu gewinnen.

“PyCharm hat einen einzigartigen Funktionsumfang im Vergleich zu anderen IDEs. Das zentrale Alleinstellungsmerkmal sind die zuverlässigen und umfassenden Refactoring-Fähigkeiten. Eine weitere einzigartige Funktion von PyCharm ist die Unterstützung von erweiterten Run-Konfigurationen. Darüber hinaus mag ich das „Cockpit-Feeling“ von PyCharm: Eine zentralisierte Umgebung bietet mir schnellen Zugriff auf alle Tools, die ich für meine Arbeit benötige.”

— Moritz Renftle, Data Scientist, Scieneers GmbH

Können Sie uns etwas zu sich und zu Ihrem Unternehmen sagen?

Ich habe an der Universität Konstanz und am Karlsruher Institut für Technologie (KIT) Informatik mit den Schwerpunkten Datenbanken und Data Science studiert. Seit 2022 entwickle und implementiere ich bei Scieneers Datenlösungen für Unternehmen aus verschiedenen Branchen. Meine Arbeit erfordert ein breites Qualifikationsspektrum, darunter Datenanalyse, Entwicklung eigener Modelle, Studium der neuesten Verfahren im Bereich maschinelles Lernen und Bereitstellung von Datenpipelines in der Cloud.

Scieneers verstärkt die Teams der Kundenunternehmen oder bietet eigene Teams an, um komplette Datenprodukte zu konzipieren, zu entwickeln und in die Produktion zu bringen. Neben unseren Kunden in Wirtschaft und Forschung unterstützen wir zahlreiche gemeinnützige Projekte. Verschiedene Beispiele für unsere Arbeit sind auf unserer Website zu finden: https://www.scieneers.de.

Warum haben Sie sich für PyCharm als Ihre Haupt-IDE entschieden?

Erstens mag ich das „Cockpit-Feeling“ von PyCharm: Eine zentralisierte Umgebung bietet mir schnellen Zugriff auf alle Tools, die ich für meine Arbeit benötige. Dazu gehören ein Code-Editor, eine Versionsverwaltung, ein Terminal und ein Datenbank-Browser. Im Vergleich zur Nutzung dieser Tools in separaten Anwendungen verursacht PyCharm weniger Reibungsverluste und erfordert weniger „geistige Energie“ bei Kontextwechseln.

PyCharm bietet außerdem einen einzigartigen Funktionsumfang im Vergleich zu anderen IDEs. Das zentrale Alleinstellungsmerkmal sind die zuverlässigen und umfassenden Refactoring-Fähigkeiten. Im Vergleich zu anderen Tools führt PyCharm solche Refactorings sehr zuverlässig durch und sorgt dafür, dass mein Code weiterhin funktioniert.

Eine weitere einzigartige Funktion von PyCharm ist die Unterstützung von erweiterten Run-Konfigurationen. So kann ich beispielsweise mühelos eine Run-Konfiguration einrichten, die ein Python-Skript lokal als „Before launch“-Task ausführt, bevor die Hauptanwendung auf einem Remote-System ausgeführt wird.

Mir gefällt auch die Integration des Remote-SSH-Interpreters in PyCharm. Den SSH-Interpreter einzurichten kann etwas schwierig sein, je nach den Netzwerkeinstellungen und anderen Faktoren. Aber wenn er einmal läuft, funktioniert er sehr zuverlässig. Ich mag auch die Möglichkeit, Code auf einem Remote-System zu debuggen. Besonders nützlich ist dies zum Beispiel, wenn ich ein maschinelles Lernmodell auf einem Remote-System mit einer bestimmten GPU trainiere, die ich lokal nicht testen kann. Ich schätze auch die Einfachheit, mit der ich Remote-Jupyter-Notebooks über SSH in PyCharm ausführen kann. Und nicht zuletzt hilft mir PyCharm, bei der Arbeit für unterschiedliche Kunden versehentliche Code-Uploads zu verhindern, indem ich genau festlege, welche Verzeichnisse in welches Remote-System hochgeladen werden sollen.

Welche Herausforderungen in Ihrer Entwicklung konnten Sie mithilfe von PyCharm überwinden?

PyCharm hat mir bei folgenden Aspekten geholfen:

  • Reduzieren von Kontextwechseln zwischen mehreren Anwendungen und Tools.
  • Schnelle und zuverlässige Durchführung von Refactorings.
  • Einfaches Abkapseln von mehreren lokalen oder Remote-Ausführungsschritten in einer einzigen Run-Konfiguration.
  • Ausführen und Debuggen von Code auf Remote-Systemen unter Wahrung des Datenschutzes.
  • Experimentieren und Prototypisieren mit Remote-Jupyter-Notebooks.

Welche speziellen Vorteile bietet die Verwendung von Jupyter-Notebooks in PyCharm?

Das sind einige der Funktionen, die mir bei der Verwendung von Jupyter-Notebooks in PyCharm aufgefallen sind:

  • Zugriff auf die Refactorings von PyCharm.
  • Reibungsloses Extrahieren des Codes aus einem Notebook in ein separates Paket.
  • Zugriff auf den PyCharm-Debugger in Notebook-Zellen.
  • Ausführung von Jupyter über SSH-Interpreter auf einem Remote-System.

Können Sie einen Fall beschreiben, in dem die Debugging-Tools von PyCharm zur Identifizierung und Behebung von Problemen in einem Machine-Learning-Projekt beigetragen haben?

Wir hatten einen Bug in einem Vorverarbeitungsschritt unserer ML-Pipeline, der in unseren Modellen zu unplausiblen Werten führte. Um dieses Problem zu beheben, verwendete ich den PyCharm-Debugger auf einem Remote-System, auf dem die ML-Pipeline ausgeführt wurde. Wir waren uns ziemlich sicher, dass der Fehler in unserem eigenen Code lag und nicht in einer externen Bibliothek. Daher übersprang ich beim Debuggen mit der PyCharm-Funktion „Step into my code“ alle Aufrufe von Bibliothekscode. Durch Haltepunkte und das Plotten von intermediären Dataframes konnten wir das Problem effektiv aufspüren und beheben.

Können Sie uns etwas zur Rolle von PyCharm bei der Skalierung von ML-Modellen sagen?

Mit PyCharm können ML-Modelle skaliert und realistisch getestet werden, indem sie remote auf einem System ausgeführt werden, dessen Hardware der Deployment-Umgebung entspricht.

Haben Sie bereits AI-Assistant-Funktionen von PyCharm verwendet oder haben Sie dies vor?

Ich habe vor, sie bei der ersten sich bietenden Gelegenheit auszuprobieren. Es wäre toll, wenn man für die KI-Code-Completion ein lokales oder selbst gehostetes ML-Modell verwenden könnte.