Habr, hallo! Es ist interessant, wie viele Programmierer und Entwickler Data Science oder Data Engineering entdeckt haben und eine erfolgreiche Karriere im Bereich Big Data aufbauen. Ilya Markin, Software-Ingenieur bei
Directual , ist nur einer der Entwickler, die auf Data Engineering
umgestiegen sind. Wir sprachen über Erfahrungen in der Rolle des Teamleiters, ein beliebtes Werkzeug in der Datenentwicklung, Ilya über Konferenzen und interessante Profilkanäle von Javisten, über Directual von der Benutzerseite und technisch, über Computerspiele usw.
- Ilya, danke, dass du dir die Zeit genommen hast, dich zu treffen. Ich gratuliere Ihnen zum relativ jüngsten Übergang zu einem neuen Unternehmen und zur Geburt einer Tochter, Sie haben viele Sorgen und Sorgen. Sofort die erste Frage: Was war so interessant, dass Ihnen angeboten wurde, in Directual zu arbeiten, dass Sie DCA verlassen haben?- Wahrscheinlich muss ich Ihnen zuerst sagen, was ich bei DCA getan habe. Nach Abschluss des
Big Data Specialist- Programms bin ich zu DCA (Data-Centric Alliance) gekommen. In diesem Moment interessierte ich mich aktiv für das Thema Big Data und erkannte, dass dies genau der Bereich ist, in dem ich mich entwickeln möchte. Schließlich gibt es dort, wo viele Daten vorhanden sind, viele interessante technische Probleme, die gelöst werden müssen. Das Programm hat mir geholfen, schnell in das Ökosystem der großen Dattelwelt einzutauchen, wo ich die notwendigen ersten Kenntnisse über Hadoop, YARN, das Map-Reduce-Paradigma, HBase, Spark, Flink und vieles mehr und dessen Funktionsweise unter hoher Last erhielt.
Ich wurde von den Jungs von DCA zu einem Interview eingeladen. DCA ist ein wichtiger Teilnehmer am RTB-Markt (
Real Time Bidding ist eine Werbetechnologie, mit der Sie eine Auktion zwischen Verkäufern und Käufern von Echtzeitwerbung organisieren können. Gegenstand des Bietens bei einer Online-Auktion ist das Recht, eine Anzeige einem bestimmten Benutzer zu zeigen. RTB basiert auf der maximalen Genauigkeit der Auswahl eines Zielbesuchers. ca. ). DCA hatte eine hohe Abdeckung von Runet-Benutzern: Etwa 600 Millionen Cookies, ein Cookie ist nicht gleich dem Benutzer - ein Benutzer kann viele Cookies haben: verschiedene Browser, verschiedene Geräte. Bei Besuchen von Internetseiten pro Tag erhielten wir Dutzende Terabyte an Daten. All dies wurde verarbeitet und der Cookie wurde in einem bestimmten Satz von Segmenten markiert. So konnten wir beispielsweise Liebhaber von Katzen im Alter von 20 bis 25 Jahren identifizieren, die in Moskau leben, um sie weiter einzuladen, Futter für ihre geliebte Katze in der Nähe des Hauses zu kaufen. Und es gibt viele solcher Beispiele, es gibt sehr einfache, es gibt komplexe. Unter der Haube gab es viel Java, Scala und C ++. Ich kam als Entwickler zum Unternehmen und wurde sechs Monate später Teamleiter.
Ich verließ DCA Ende des Frühlings, als ich die Führungslast satt hatte und begann, mich mit technischen Positionen zu befassen. Es stellte sich heraus, dass ich eine Woche lang keinen Code schreiben konnte. Wir haben uns mit dem Team getroffen, interessante Lösungen besprochen, die Architektur durchdacht und Aufgaben gemalt. Wenn ich etwas von der Liste für mich genommen habe, hatte ich manchmal keine Zeit, die Aufgabe zu erledigen, weil es viele Fälle von Teamleitern gab. Vielleicht liegt das Problem in mir und ich konnte die Zeit nicht richtig zuordnen.
Und doch habe ich nützliche Erfahrungen gesammelt. Erstens, mit einem Team und einem Unternehmen zusammenarbeiten: Es ist interessant, an der Schnittstelle zwischen Entwicklung und Geschäft zu sein, wenn Sie eine Anfrage zur Implementierung einer Funktionalität erhalten, denken Sie, bewerten Sie die Möglichkeiten. Oft müssen Sie eine Entscheidung treffen, die in dieser speziellen Situation nützlicher ist: Schreiben Sie schnell etwas „auf das Knie“ oder verbringen Sie 2 Wochen oder sogar mehr, aber geben Sie eine stabile, normale Lösung heraus.
- Und welche Entscheidungen wurden am häufigsten getroffen - „am Knie“ oder in 2 Wochen?- Ein Entwickler im Herzen ist immer ein Perfektionist, er kann sich endlos auf eine interessante Aufgabe einlassen, sie neu gestalten, sie optimieren. Natürlich müssen Sie wissen, wann Sie aufhören müssen. Es wurden Entscheidungen getroffen, die irgendwo dazwischen lagen.
Zweitens war ich endlich in der Lage, an Entscheidungen teilzunehmen und mir darüber im Klaren zu sein, was im Unternehmen passiert. Ich mag es nicht nur in meiner Box zu sitzen und zu codieren, ich möchte wissen, was mit dem Produkt passiert, wie es sich zeigt, wie Benutzer reagieren.
Drittens begann ich Interviews zu führen, die ich sozusagen „auf der anderen Seite der Barrikaden“ besuchte. Das erste Interview war sehr aufregend zu führen, ich las den Lebenslauf und dachte: "Verdammt, jetzt wird der Star kommen und ich weiß nicht einmal die Hälfte von dem, was er geschrieben hat. Worüber werde ich überhaupt mit ihm sprechen? “ Und im Kommunikationsprozess werden Sie nüchtern und verstehen, warum die Nachfrage auf dem IT-Personalmarkt das Angebot übersteigt. Es ist schwierig, einen guten Spezialisten zu finden. Meistens sitzt er dort, wo er mit allem zufrieden ist. Ein vorgefertigter Spezialist für Ihre spezifischen Aufgaben und Technologien, der nicht umgeschult / umgeschult werden muss, unrealistisch zu finden ist, muss Verbindungen herstellen, Freunde, Bekannte und Kollegen fragen. Networking ist hier sehr wichtig. So brachte ich zum Beispiel meinen Freund in die Firma, in der ich mir sicher war und mit dem ich früher gearbeitet hatte. Sie nahmen auch einen Universitätsabsolventen mit, der wenig Erfahrung mit unserem Stack hatte, aber während des Interviews wurde mir klar, dass er ein sehr vielversprechender Typ war.
Oft arbeiten Leute mit Frameworks und nicht mit bestimmten Tools. Ich denke, das ist momentan ein Problem. Ein Kandidat verfügt über zwei Jahre Erfahrung als Hadoop-Big Data-Entwickler. Sie fragen sich, wie Hadoop funktioniert, aus welchen Teilen es besteht und was eine Person nicht weiß. Da Hadoop bestimmte Schnittstellen zur Vereinfachung der Arbeit bereitstellt, reicht dies für eine Reihe von Aufgaben aus. Und oft überschreitet eine Person nicht einmal die Grenzen dieser Schnittstellen, dh den Code, den sie von diesen noch erhält. Und was mit dem gepackten Code passiert, nachdem er ihn an das System gesendet hat, interessiert die Person nicht mehr. Für viele ist das genug, sie wollen nicht tiefer verstehen. Die Durchführung eines Vorstellungsgesprächs ist nicht nur eine hervorragende Erfahrung bei der Einstellung, sondern gibt auch Vertrauen in sich selbst als Spezialist, was sehr nützlich ist.
Warum direkt. Als ich Koordinator für das
Data Engineer- Programm war, kamen Artyom Marinov und Vasya Safronov von Directual, um mit uns zu sprechen. Artyom hat mich übrigens einmal bei DCA interviewt (wieder über die Vorteile des Networking) und mich jetzt zum Reden eingeladen. Sie brauchten einen Rockman, aber sie waren bereit, einen Javista in Betracht zu ziehen, der versteht, wie JVM unter der Haube funktioniert. Also bin ich hier gelandet.
- Was war so interessant, dass Ihnen angeboten wurde, in Directual zu arbeiten? Was hat dich angezogen?-
Directual ist ein ehrgeiziges Start-up, das alle angekündigten Projekte umsetzt,
dh hält, was es verspricht. Ich freute mich, Teil des Teams zu werden und mich aktiv an allen Implementierungen zu beteiligen. Und für mich war es wichtig, dass sich das Unternehmen durch die Zusammenarbeit mit Kunden bezahlt macht und nicht vom Geld der Anleger lebt.
Ich werde sowohl von der Benutzerseite als auch von der Rückseite ein wenig über das Projekt sprechen.
Der Slogan von Directual lautet: „Lass die Menschen kreieren!“. Dies ist genau die Hauptidee - um es jeder Person, die keine Kenntnisse und Erfahrung im Schreiben von Code hat, zu ermöglichen, in unserem visuellen Editor zu programmieren.
So funktioniert es: Ein Benutzer kann über einen Browser auf unserer Plattform „Cubes rollen“ (lesen - die Funktionsknoten eines Prozesses), dh ein Skript sammeln, das eingehende Daten verarbeitet. Die Daten können absolut beliebig sein. Die verarbeiteten Ausgabedaten können eine andere Idee haben - von einem Bericht in PDF bis zum Senden einer Benachrichtigung an mehrere Administratoren. Einfach ausgedrückt, jeder Geschäftsprozess kann in wenigen Minuten programmiert werden, ohne dass Code geschrieben werden kann. Das Unternehmen arbeitet in zwei Richtungen - Boxed-Lösungen für Unternehmenskunden sowie eine Cloud-Option für eine Vielzahl von Benutzern.
Um klarer zu machen, wie dies funktioniert, werde ich einige Beispiele geben.
In jedem Online-Shop gibt es eine Reihe von Funktionsstufen (in unserem Fall „Würfel“) - von der Präsentation des Produkts beim Kunden über das Hinzufügen zum Warenkorb bis hin zur Lieferung an den Endverbraucher. Über die Plattform können wir Daten sammeln und analysieren: die Häufigkeit der Einkäufe, die Zeit, zu der sie getätigt wurden, den Pfad des Benutzers usw., wodurch wir enger mit Kunden interagieren können (z. B. saisonale Angebote entwickeln, individuelle Rabatte entwickeln). Dies bedeutet jedoch keineswegs, dass unsere Plattform ein Designer für die Erstellung von Online-Shops ist!
Directual kommt sowohl mit der Automatisierung von Logistikprozessen und der Arbeit der Personalabteilung großer Unternehmen als auch mit der Schaffung jeder anderen technologischen Lösung gut zurecht - von einer Gewächshausfarm bis zu einem Smart Home. Auf der Plattform können Sie beispielsweise mit wenigen Klicks einen Telegramm-Bot erstellen - fast jeder Mitarbeiter, der den Kern des Systems schreibt, hat einen eigenen Bot. Jemand hat einen Bibliothekarassistenten gemacht, jemanden - einen Bot, der hilft, englische Wörter zu lernen.
Wir nehmen einigen Programmierern teilweise die Arbeit „weg“, da sie sich jetzt nicht mehr an sie wenden müssen, um Hilfe zu erhalten, technische Spezifikationen vorzubereiten oder die Ausführung der Arbeiten zu überprüfen. Jetzt reicht es aus, nur zu wissen, wie Ihr Unternehmen funktionieren soll. Sie müssen die Prozesse selbst verstehen, und wir erledigen den Rest.
- Hören Sie, aber es gibt Software für eine Grünfarm zum Beispiel für eine lange Zeit. Wie bist du anders- Ja, es gibt zwar spezifische Lösungen für Grünfarmen. Sie entwickeln diese Software jedoch nicht selbst, sondern kaufen eine fertige Lösung. Mit unserer Plattform können Sie die Software für sich selbst anpassen, für Ihr Unternehmen und Ihre Aufgaben müssen Sie keine Entwickler einstellen.
- Und was genau machst du?- Das Unternehmen ist in zwei Teile gegliedert: die Entwicklung des Kerns unseres Systems und des Projektbüros, das, wenn ich so sagen darf, tatsächlich unser Nullkunde ist. Ich entwickle den Systemkern.
Wie gesagt, wir möchten jedem die Möglichkeit geben, an unserer Plattform zu arbeiten. Dafür arbeiten wir an unserer Cloud. Und es gibt viele Probleme. Was ist die Schwierigkeit: Zum Beispiel gibt es 10 Tausend Benutzer, sie haben mehrere Datenflussszenarien und jeder Fluss hat 10 bis 20 Zweigwürfel. Stellen Sie sich die Last auf dem Bügeleisen vor. Und wir müssen in der Lage sein, alles klar zu unterscheiden, damit die Prozesse eines Kunden nicht die Prozesse eines anderen Kunden stören und die Arbeit nicht verlangsamen. Wenn ein Kunde ein Problem hat, das wir lösen müssen, sollten wir die Arbeit eines anderen Kunden nicht beeinträchtigen.
Da der Benutzer nicht darüber nachdenken muss, wie alles unter der Haube funktioniert, ist er frei von der Wahl des Speichers. Wir unterstützen verschiedene Datenbanken - es können sowohl relationale Datenbanken als auch NoSql sein. Im Allgemeinen verhält sich das System bei ihnen gleich. Der Client muss jedoch nicht darüber nachdenken. Beim Erstellen eines Kontos hilft das System je nach Aufgabe bei der Auswahl des Speichers.
Unsere Plattform ist ein gutes Beispiel für ein hoch ausgelastetes verteiltes System. Meine Aufgabe ist es, guten Code zu schreiben, damit alles einwandfrei funktioniert. Als Ergebnis habe ich hier bekommen, was ich wollte: Ich arbeite mit den Werkzeugen, die mich interessieren.
- Und wie sind Sie zur Arbeit mit Daten gekommen?- An meinem ersten Arbeitsplatz beschäftigte ich mich hauptsächlich mit der gleichen Art von Aufgaben in einem ziemlich engen Segment (read - parsil xml :)), und es langweilte mich schnell. Ich fing an, Podcasts anzuhören, und erkannte, wie groß die Welt ist, so viele Technologien, über die alle reden - Hadoop, Big Data, Kafka. Dann wurde mir klar, dass ich studieren musste, und das Programm "
Big Data Specialist " erschien sehr günstig. Wie sich herausstellte, habe ich nicht versagt: Das erste Modul (Verarbeitung und Analyse von Weblogs: MapReduce, Hadoop, Maschinelles Lernen, DMP-Systeme - Anmerkung des Autors) war für mich sehr nützlich, ich wollte dies nur lernen, aber das zweite Modul befasst sich mit Empfehlungssystemen Ich wusste einfach nicht, wo ich mich bewerben sollte, ich habe es nie angefasst. Und dann bin ich zu DCA gegangen, um mit dem zu arbeiten, was mich schon interessiert. Dort erzählte mir ein Kollege, dass es neben dem Datenwissenschaftler auch einen Dateningenieur in diesem Bereich gibt. Er sagte, wer er sei und wie das Unternehmen nützlich sein könne.
Danach haben Sie gerade den Pilotstart des
Data Engineer- Programms angekündigt. Natürlich habe ich mich entschieden, loszulegen. Ich kannte bereits einige der Produkte, die auf dem Programm standen, aber für mich war es ein guter Überblick über die Tools, strukturierte alles in meinem Kopf und ich verstand endlich, mit was ein Dateningenieur arbeiten sollte.
- Die meisten Unternehmen teilen jedoch nicht diese beiden Positionen, zwei Berufsprofile einer Person. Sie versuchen, nach universellen Spezialisten zu suchen, die Daten sammeln und aufbereiten. Sie erstellen das Modell und werden unter hoher Last zum Produkt gebracht. Was denkst du, womit ist das verbunden und wie richtig ist es?- Ich mochte Pavel Klemenkovs Auftritt im Big Data Specialist-Programm (er arbeitete damals bei Rambler & Co) sehr, er sprach über ML-Pipeline und erwähnte Mathematikprogrammierer. Er sprach gerade über solche universellen Spezialisten, dass sie es sind, es gibt nur wenige von ihnen und sie sind sehr teuer. Deshalb versucht Rambler & Co, sie zu Hause zu entwickeln, um nach starken Jungs zu suchen. Es ist wirklich schwer, solche Spezialisten zu finden.
Ich glaube, wenn Sie wirklich viele Daten haben und eine gründliche Arbeit mit ihnen benötigen (und nicht nur das Geschlecht und Alter einer Person vorhersagen oder beispielsweise die Wahrscheinlichkeit eines Klicks erhöhen), sollten dies zwei verschiedene Personen sein. Hier gilt die 20/80-Regel: Ein Datenwissenschaftler ist zu 80% Datenwissenschaftler, zu 20% - er kann etwas schreiben und in das Produkt einfügen, und ein Dateningenieur - zu 80% Softwareentwickler und zu 20% weiß er, was Modelle sind und wie sie bewerben und zählen, ohne in die Mathematik zu gehen.
- Erzählen Sie uns von der für Sie wichtigsten Entdeckung in Data Science \ Data Engineering? Vielleicht hat die Verwendung eines Tools / Algorithmus Ihren Ansatz zur Lösung von Problemen radikal verändert?- Wahrscheinlich die Tatsache, dass Sie mit genügend Daten viele nützliche Informationen für Ihre zukünftigen Aktionen extrahieren können. Auch wenn Sie manchmal nicht wissen, was diese anonymen Rohdaten sind, können Sie dennoch etwas auf ihrer Grundlage tun: In Gruppen unterteilen, einige Merkmale finden, einfach einige Regelmäßigkeiten mithilfe mathematischer Methoden für Zahlen ableiten. Analysten könnten dies zwar auch schon früher tun, aber die Tatsache, dass es jetzt zugänglicher geworden ist, hat die Kraft des Eisens erhöht - es ist cool! Der Schwellenwert für die Eingabe von Data Science ist jetzt gesunken. Sie müssen nicht viel wissen, damit Sie bereits versuchen können, mit einigen Tools etwas zu tun.
- Was war die größte Jobakte? Welche Lektion haben Sie daraus gelernt?- Wahrscheinlich werde ich dich verärgern, ich hatte das noch nie zuvor, vielleicht vor mir. Ich dachte ehrlich, erinnerte mich, aber es gab nichts Vergleichbares, sehr langweilig. Es ist wie bei den Administratoren: Wenn Sie das Essen nicht "fallen lassen", die Basis nicht "abwischen", sind Sie kein echter Administrator. Nun, ich bin wahrscheinlich kein echter Entwickler.
- Welche Data Engineering Tools verwenden Sie am häufigsten und warum? Was ist dein Lieblingswerkzeug?- Ich mag Apache Kafka sehr. Ein cooles Tool, sowohl in Bezug auf die Funktionalität, die es bietet, als auch in Bezug auf das Engineering. Die Besonderheiten von Kafkas Arbeit liegen in der engen Beziehung zwischen dem Programmcode und dem Betriebssystem, unter dem es funktioniert - Linux (lesen Sie - „es funktioniert schnell und gut“). Das heißt, dort werden verschiedene native Linux-a-Funktionen verwendet, mit denen Sie auch auf schwacher Hardware eine hervorragende Leistung erzielen können. Ich glaube, dass es in unserer Region so sein sollte - es reicht nicht aus, nur die Programmiersprache und einige Frameworks dafür zu kennen. Wenn Sie etwas wirklich Cooles erstellen möchten, das nicht nur für Sie, sondern auch für andere angenehm zu verwenden ist, müssen Sie tiefer gehen und wissen, wie Ihr Code im System und auf der Hardware funktioniert.
- An welchen Konferenzen nehmen Sie teil? Welche Profilspalten \ Blogs \ tg-Kanäle lesen Sie?- Wie gesagt, alles begann mit Podcasts, nämlich mit
Debriefing - von
Leuten aus der Java-Welt.
Es gibt auch
https://radio-t.com - einen coolen russischsprachigen Podcast zu High- und IT-Technologie-Themen, einer der beliebtesten (wenn ich mich nicht irre) in unserer Sprache.
Ich verfolge die Nachrichten von
JUG.ru , die Jungs machen coole Hardcore-Konferenzen, arrangieren Meetings. Ich versuche auch zu denen nach Moskau, nach St. Petersburg zu gehen. Die Top-Java-Konferenz ist Jpoint in Moskau (auch bekannt als Joker in St. Petersburg). Ich gehe immer zu Jpoint oder schaue online.
Ich schaue mir an, was
Confluent tut - Leute, die Unternehmensunterstützung für Kafka verdienen und die Hauptverantwortlichen dafür sind. Sie entwickeln auch praktische Tools rund um Apache Kafka in Open Source. Ich versuche, ihre Versionen zu verwenden.
Netflix Tech Blog auf Medium ist eine coole Ressource über Lösungen einer der größten Plattformen für die Bereitstellung von Videoinhalten für einen Benutzer. Hochlast- und verteilte Systeme von den meisten "Ich will nicht")
Telegrammkanäle:
https://t.me/hadoopusers - ein Ort, an dem Sie in unserer Sprache zu datentechnischen Themen kommunizieren können;
https://t.me/jvmchat — java , , .
— , - ?— , - , . - : « , ?» , - java, C# C++, , - . , . , — “
” — , “ -- ”, : , -, 2D/3D-, , , , . , : , , , . , . .
-:
— Java Python?— Java, .
— Data Science Data Engineering?— Data Engineering
— ?- Es kommt darauf an, aber bisher eher auf einen Darsteller.- Familie oder Beruf?- Vor einiger Zeit gab es eine Karriere und jetzt die Familie.- Zu Hause kochen oder in ein Restaurant gehen?- Ich esse gerne leckeres Essen. Ich denke, ich koche gut, aber das passiert selten. Deshalb wahrscheinlich in ein Restaurant gehen.