Big Data ist eines der heißesten Themen in der Welt der Technik. Wenn Sie als Entwickler auf der Suche nach einer herausfordernden beruflichen Veränderung sind, könnte Data Engineering eine gute Wahl für Sie sein. Aber was bedeutet diese Rolle und wie können Sie in diesen Bereich wechseln? Wir haben unseren Big-Data-Architekten Csaba interviewt, der als Software-Ingenieur ins Unternehmen kam und dann zum Data Engineer wurde. Er hat uns erzählt, warum er sich für diesen Karriereweg entschieden hat und wie Sie das auch tun können.
Ich habe mich vor fast 10 Jahren für ein Praktikum beworben, aber ich wurde abgelehnt. Überraschenderweise riefen sie mich einen Monat später zurück, weil sie eine weitere Stelle zu besetzen hatten. Diesmal habe ich abgelehnt, weil ich bereits in einem anderen Unternehmen gearbeitet hatte. Allerdings war ich in diesem Unternehmen so unengagiert, dass mein Mitbewohner mich überredete, zu kündigen und mich für Aliz zu entscheiden. Das war eine der besten Entscheidungen meines Lebens. Seitdem arbeite ich hier.
Als ich ins Unternehmen kam, gab es nur 2 Projekte und 8 Kollegen. Als kleines, junges Unternehmen war es schwer, neue Projekte zu finden, und ich konnte mir nicht aussuchen, woran ich arbeiten wollte. Ich begann als Junior-Java-Entwickler zu arbeiten. Wir entwickelten ein Cloud-basiertes SaaS-Produkt für den öffentlichen Sektor mit dem traditionellen Java Enterprise Stack. Ich hatte jedoch noch viele Möglichkeiten, mich weiterzuentwickeln. In weniger als 2 Jahren wurde ich technischer Leiter, was eine große Herausforderung war, aber ich habe es geschafft. Dank der herausragenden Motivation und harten Arbeit des Teams konnte das Unternehmen schnell wachsen. Wir schlugen erfolgreich neue Wege ein, z. B. wurden wir Google Cloud-Partner. Ich wechselte in die Datentechnik und arbeite jetzt als Big-Data-Architekt.
Es war eine Art gemeinsame Entscheidung innerhalb des Unternehmens. Die Geschäftsleitung war bestrebt, eine einzigartige Spezialisierung zu finden, die uns von anderen Unternehmen abhebt. Sie sind sehr offen und zugänglich, wenn es um strategische Entscheidungen geht, und fragten mich auch nach meiner Meinung. Da ich mich sehr für Big Data interessierte und mich während meines Masterstudiums darauf spezialisiert hatte, schlug ich ihnen vor, in diesem Bereich tätig zu werden.
Sowohl Data Engineering als auch Google Cloud waren zu dieser Zeit neu. Es gab keine etablierten Best Practices, so dass wir buchstäblich "Learning by doing" betrieben. Wir begannen mit einem Proof of Concept für die Verarbeitung von Transaktionsdaten in Echtzeit mit Cloud Dataflow und BigQuery. Glücklicherweise war unser erster Kunde unglaublich geduldig, während wir mit Entdeckungen und Experimenten beschäftigt waren. Da der Stack für uns und für alle anderen damals völlig neu war, stießen wir auf einige Sackgassen. Es war unvermeidlich, dass wir auf dem Weg dorthin Fehler machen würden. Oft mussten wir unseren Code neu strukturieren. Es dauerte einige Zeit, bis wir die besten Praktiken für diesen neuen Stack herausgefunden hatten. Es war eine sehr spannende Erfahrung. Ich persönlich habe eine Menge gelernt. Das Projekt wurde zu einer Erfolgsgeschichte und der Kunde war zufrieden.
Software-Engineering ist ein weit gefasster Begriff, der jede Art von Programmierung vom Schreiben von Front-End-Code bis hin zu Back-End-Code umfassen kann. Data Engineering ist eine Spezialisierung - wir bauen die Dateninfrastruktur auf, organisieren die Sammlung strukturierter und unstrukturierter Daten, ihre Verarbeitung und Speicherung und stellen die Mittel bereit, um Rohdaten in wertvolle und verwertbare Erkenntnisse zu verwandeln. Data Engineers konzentrieren sich auf den Entwurf und die Implementierung von Datenpipelines, den Aufbau von Data Lakes und Data Warehouses.
Für mich persönlich besteht der spannendste Unterschied darin, dass ich als Dateningenieur oft den ungeschlagenen Weg gehen muss. Wenn man eine Anwendung auf einem traditionelleren Tech-Stack aufbaut, findet man im Internet eine Menge vorhandener Vorlagen und Lösungen. Wenn man jedoch mit einem datenbezogenen Problem konfrontiert wird, bei dem modernste Tools zum Einsatz kommen, stehen die Chancen gut, dass man der erste auf der Welt ist, der eine Lösung findet.
Der Programmieraufwand hängt von dem zu lösenden Problem und den Anforderungen des Kunden ab. Die Verarbeitung von Datenströmen erfordert in der Regel eine maßgeschneiderte Lösung, so dass mehr Codierung erforderlich ist (etwa 70 % der Zeit des Ingenieurs). Es gibt jedoch auch Kunden, die keine eigenen technischen Teams haben und daher versuchen, den Kodierungsaufwand mit Drag-and-Drop-Datentransformationstools wie Cloud Data Fusion zu minimieren. In diesen Fällen gibt es mehr Abfrage- und Integrationsaufgaben und nur etwa 30 % Kodierung.
Meiner Meinung nach kann man, wenn man in einer Sprache kodieren kann, auch in jeder anderen Sprache problemlos kodieren. Die Syntax ist ein wenig anders, aber die Konzepte sind ähnlich. Wenn Sie sich entscheiden müssen, mit welcher Sprache Sie anfangen, würde ich Java oder Python vorschlagen, da dies die gängigsten Open-Source-Sprachen in der Big-Data-Welt sind. Wir verwenden beide, je nach den Präferenzen der Kunden und dem von uns verwendeten Tech-Stack. Für eine Echtzeit-Stream-Verarbeitungslösung mit Apache Beam und Cloud Dataflow bevorzugen wir Java. Wenn wir eine Batch-ELT-Pipeline mit Airflow erstellen müssen oder wenn künstliche Intelligenz (KI) und Datenwissenschaftler stark in das Projekt eingebunden sind, verwenden wir Python.
Nun, es ist möglich, aber nicht so einfach. Data Engineers bauen die Datenstruktur auf und führen die Datenmodellierung für Data Scientists durch, die mit den Daten arbeiten, sobald sie in den Tabellen sind. Natürlich entwickeln Dateningenieure nützliche Fähigkeiten und sammeln wertvolle Erfahrungen (Batch-Verarbeitung, Aufbau der Pipeline für das maschinelle Lernmodell und Inbetriebnahme eines Modells), was ihre Arbeit einfacher und schneller macht. Die Datenwissenschaft ist jedoch ein anderes Fachgebiet, das mehr Hintergrundwissen in Mathematik und Statistik erfordert.
Daher können ältere Ingenieure nur dann zu Datenwissenschaftlern werden, wenn sie auf der Junior-Ebene beginnen. Wenn Sie Data Engineering lernen wollen, weil Sie Datenwissenschaftler werden wollen, ist es viel klüger, zunächst Data Science zu lernen.
Die Cloud kümmert sich um den Infrastruktur-Overhead (Installation virtueller Maschinen, Betriebssysteme und Netzwerkeinstellungen), sodass sich die Entwickler auf die Programmierung konzentrieren können. Es gibt mehr Spielraum für Experimente - Sie können in wenigen Minuten genügend Ressourcen einrichten und Ihre Testergebnisse sofort sehen.
Die wichtigsten Cloud-Anbieter haben eine Menge Gemeinsamkeiten. Ich mag GCP, weil die Dienste die gleichen sind, die Google intern nutzt. Das bedeutet, dass die Tools wirklich kampferprobt sind und die Skalierbarkeit garantiert ist. Außerdem gibt es einige einzigartige Dienste wie BigQuery, die in den Angeboten anderer Cloud-Anbieter nicht zu finden sind.
Dieses agile Unternehmen bietet ein großartiges Umfeld für eine kontinuierliche persönliche und berufliche Entwicklung. Ich kann mit Spitzentechnologie an interessanten Anwendungsfällen arbeiten. Ich bin in den gesamten Lebenszyklus der Projekte eingebunden und meine Meinung wird immer berücksichtigt.
Mir gefällt, was ich tue, also möchte ich dasselbe tun - nur besser. Ich fühle mich in einem dynamischen, kundenorientierten Umfeld wohl und sehe mich daher in der Zukunft als technischer Berater. Außerdem liegt mir die Weitergabe von Wissen sehr am Herzen, daher werde ich mich auch stärker darauf konzentrieren, aktiv an lokalen Meetup-Communities und Tech-Konferenzen teilzunehmen.
Haben Sie irgendwelche Branchenpräferenzen? Nicht wirklich. Ich arbeite gerne in neuen Bereichen, weil ich dort wertvolle Erkenntnisse gewinnen und meinen Horizont erweitern kann. Ich arbeite auch gern in einem vertrauten Bereich - wie der Luftfahrt -, wo ich mein Branchenwissen einsetzen kann, um Abkürzungen zu finden und Probleme schneller zu lösen.
Heutzutage gibt es großartiges Schulungsmaterial und es ist einfach, gute Dokumentation und hilfreiche Informationen auf Stack Overflow zu finden. Wir haben ein unternehmenseigenes Coursera-Konto, über das wir von Google selbst entwickelte Schulungen absolvieren können. Für den Anfang ist das nützlich, aber meiner Erfahrung nach muss man an realen Projekten arbeiten, um wirklich Wissen zu erwerben.