"Wenn Sie etwas wirklich Cooles erstellen möchten, müssen Sie tiefer graben und wissen, wie Ihr Code im System und auf der Hardware funktioniert."

    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 für Directual , ist nur einer der Entwickler, die auf Data Engineering umgestiegen sind. Wir sprachen über die Erfahrung, ein tmlid zu sein, ein bevorzugtes Werkzeug in der Datentechnik, Ilya sprach über Konferenzen und interessante Profilkanäle von Javista, über Directual von der Benutzerseite und Technik, über Computerspiele usw. - Ilya, danke, dass Sie sich die

    image

    Zeit für ein Treffen genommen haben. Herzlichen Glückwunsch zum relativ jüngsten Übergang zu einem neuen Unternehmen und zur Geburt Ihrer Tochter. Es gibt viele Sorgen und Sorgen. Gleich die erste Frage: Was war für Sie so interessant, dass Sie Directual durchführten, dass Sie DCA verlassen haben?

    - Wahrscheinlich müssen Sie mir zuerst sagen, was ich in DCA gemacht habe. Nach dem Big Data Specialist- Programm bin ich in die DCA (Data-Centric Alliance) eingestiegen . Zu diesem Zeitpunkt interessierte ich mich aktiv für das Thema Big Data und erkannte, dass dies der Bereich ist, in dem ich mich entwickeln möchte. Denn wo es viele Daten gibt, gibt es viele interessante technische Probleme, die gelöst werden müssen. Das Programm half mir, mich schnell in das Ökosystem des Big Date der Welt einzutauchen. Dort bekam ich das notwendige Grundwissen über Hadoop, YARN, Map-Reduce, HBase, Spark, Flink und vieles mehr und wie es unter hoher Last funktioniert.

    Ich wurde von den Jungs von DCA zu einem Interview eingeladen. DCA ist ein wichtiger Teilnehmer auf dem RTB-Markt ( Real Time Bidding ist eine Werbetechnologie, mit der Sie eine Auktion zwischen Verkäufern und Käufern von Echtzeitwerbung organisieren können. Das Verhandlungsobjekt bei einer Online-Auktion ist das Recht, Anzeigen bei einem bestimmten Nutzer zu zeigen. Ed.). DCA hatte eine große Reichweite von Runet-Benutzern: ungefähr 600 Millionen Cookies, ein Cookie ist dem Benutzer nicht gleichwertig - ein Benutzer kann viele Cookies haben: verschiedene Browser, verschiedene Geräte. Wir haben täglich Dutzende Terabytes an Daten bei Besuchen von Webseiten erhalten. All dies wurde verarbeitet und der Cookie wurde in bestimmten Segmenten angeordnet. So könnten wir zum Beispiel Katzenliebhaber zwischen 20 und 25 Jahren in Moskau leben, um ihnen weiterhin anzubieten, Futter für ihre geliebte Katze in der Nähe des Hauses zu kaufen. Und es gibt viele solcher Beispiele, es gibt ziemlich einfache, es gibt komplexe Beispiele. Es gab viel Java, Scala und C ++ unter der Haube. Ich kam als Entwickler zu dem Unternehmen und wurde sechs Monate später Teamleiter.

    Ich habe DCA am Ende des Frühlings verlassen, zu dieser Zeit war ich müde von der Verwaltungslast und begann, technische Positionen zu untersuchen. Es stellte sich heraus, dass ich den Code für eine Woche nicht schreiben konnte. Wir haben uns mit dem Team getroffen, interessante Lösungen besprochen, die Architektur durchdacht, Aufgaben gemalt. Wenn ich etwas von der Liste nahm, hatte ich manchmal keine Zeit, um die Aufgabe zu erledigen, da es viele Fälle von Timlide gab. Vielleicht liegt das Problem bei mir und ich konnte die Zeit nicht richtig zuordnen.

    Und trotzdem habe ich eine lohnende Erfahrung gemacht. Arbeiten Sie zuerst mit dem Team und mit dem Business: Es ist interessant, an der Schnittstelle von Entwicklung und Business zu sein. Wenn Sie eine Anfrage zur Implementierung einiger Funktionen erhalten, denken Sie, bewerten Sie die Möglichkeiten. Oft ist es notwendig, eine Entscheidung zu treffen, die in dieser speziellen Situation nützlicher ist: Schreiben Sie schnell etwas "auf das Knie" oder verbringen Sie 2 Wochen oder sogar mehr, geben Sie jedoch eine durchgängig funktionierende, normale Lösung heraus.

    - Und welche Lösungen wurden am häufigsten gewählt - "am Knie" oder in 2 Wochen?

    - Der Entwickler ist immer ein Perfektionist. Er kann sich endlos mit interessanten Aufgaben beschäftigen, sie wiederholen, optimieren. Natürlich müssen Sie wissen, wann Sie aufhören müssen. Lösungen wählen, die sich irgendwo in der Mitte befanden.

    Zweitens war ich schließlich in einer Position, in der Sie an Entscheidungen teilnehmen können, um zu wissen, was im Unternehmen passiert. Ich mag es nicht, einfach in meiner Box zu sitzen und zu codieren. Ich möchte wissen, was mit dem Produkt passiert und wie es sich zeigt, wie Benutzer reagieren.

    Drittens begann ich zu interviewen, ich war sozusagen „auf der anderen Seite der Barrikaden“. Das erste Interview war sehr aufregend zu lesen, den Lebenslauf zu lesen und dachte: „Verdammt, jetzt kommt der Stern und ich weiß nicht mal die Hälfte von dem, was er geschrieben hat. Worüber ich überhaupt mit ihm reden werde. “ Und im Verlauf der Kommunikation werden Sie nüchtern und verstehen, warum die Nachfrage im IT-Markt 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 werden muss, um überhaupt unrealistisch zu sein, Sie müssen Verbindungen herstellen, Freunde, Bekannte und Kollegen fragen. Vernetzung ist hier sehr wichtig. Ich brachte zum Beispiel meinen Freund in die Firma, in der ich sicher war und mit der ich zuvor am vorherigen Platz gearbeitet hatte. Nahm auch einen kürzlich abgeschlossenen Hochschulabschluss,

    Oft arbeiten die Leute mit Frameworks und nicht mit spezifischen Tools. Ich denke, das ist jetzt ein Problem. Ein Kandidat mit zweijähriger Erfahrung mit Hadoop-Big Data-Entwickler kommt, Sie fragen sich, wie Hadoop funktioniert, aus welchen Teilen es besteht und die Person weiß es nicht. Da Hadoop bestimmte Schnittstellen zur Vereinfachung der Arbeit bietet, reicht dies für einen bestimmten Aufgabenbereich aus. Und oft geht eine Person nicht einmal über den Umfang dieser Schnittstellen hinaus, das heißt, den Code, den er von hier zu diesem bekommt. Und was passiert mit dem gepackten Code, nachdem er an das System gesendet wurde, kümmert die Person nicht mehr. Dies ist genug für viele, sie wollen es nicht tiefer verstehen. Die Durchführung eines Interviews ist eine hervorragende Erfahrung, nicht nur bei der Einstellung, sondern gibt Ihnen auch Vertrauen in sich als Spezialisten, was sehr nützlich ist.

    Warum direkt? Als ich Koordinator für das Data Engineer- Programm war, kamen Artem Marinov und Vasya Safronov von Directual zu uns, um mit uns zu sprechen. Artyom hat mich übrigens einmal bei DCA interviewt (wieder über die Vorteile des Networking) und lud mich jetzt ein, zu reden. Sie brauchten einen Rocky, aber sie waren bereit, einen Javista in Betracht zu ziehen, der versteht, wie Jvm unter der Haube arbeitet. Also war ich hier

    - Was ist so interessant, dass Sie Directual angeboten haben? Was hat dich angezogen?

    - Directual ist ein ehrgeiziges Startup, das alle angekündigten Projekte umsetzt, das heißt, was es verspricht. Ich habe mich gefreut, Teil des Teams zu sein und an allen Implementierungen aktiv mitzuwirken. Und für mich war es wichtig, dass sich das Unternehmen durch die Arbeit mit Kunden bezahlt macht und nicht vom Geld der Investoren lebt.

    Ich werde ein wenig über das Projekt sowohl vom Benutzer als auch von der Rückseite sprechen.

    Direkter Slogan - „Lass die Leute schaffen!“. Dies ist die Hauptidee: Jeder, der nicht über das Wissen und die Erfahrung beim Schreiben von Code verfügt, kann in unserem visuellen Editor programmieren.

    Funktionsweise: Der Benutzer kann über den Browser unserer Plattform „Cubes aufrollen“ (Read - Funktionsknoten eines Prozesses), dh das Skript sammeln, das zur Verarbeitung eingehender Daten verwendet wird. Daten können völlig beliebig sein. Die verarbeiteten Ausgabedaten können eine andere Ansicht haben - von einem Bericht über ein PDF bis zum Senden einer Benachrichtigung an mehrere Administratoren. Einfach ausgedrückt, kann jeder Geschäftsprozess in wenigen Minuten programmiert werden, ohne Code schreiben zu können. Das Unternehmen arbeitet in zwei Richtungen - Box-Lösungen für Firmenkunden sowie die Cloud-Option für eine Vielzahl von Anwendern.

    Um die Funktionsweise klarer zu machen, möchte ich einige Beispiele nennen.
    In jedem Online-Shop gibt es eine Reihe von Funktionsstufen (in unserem Fall „Cubes“) - von der Anzeige der Waren an den Kunden über das Hinzufügen zum Warenkorb bis hin zur Lieferung an den Endverbraucher. Mithilfe der Plattform können wir Daten sammeln und analysieren: Häufigkeit der Einkäufe, Zeitpunkt der Fertigstellung, Pfad des Benutzers usw. Dadurch können wir enger mit Kunden interagieren (z. B. saisonale Angebote entwickeln, individuelle Rabatte). Dies bedeutet jedoch keinesfalls, dass unsere Plattform der Designer für die Erstellung von Online-Shops ist!

    Directual bewältigt die Automatisierung von Logistikprozessen und die Arbeit der Personalleitung großer Unternehmen sowie die Erstellung anderer technologischer Lösungen - von einer Farm zum Anbau von Grünpflanzen bis zu einem intelligenten Zuhause. Auf der Plattform können Sie beispielsweise mit wenigen Klicks einen Telegramm-Bot erstellen. Wir haben fast jeden Mitarbeiter, der den Systemkern schreibt, einen eigenen Bot. Jemand hat einen Assistenten für Bibliothekare gemacht, jemanden - einen Bot, der Englisch lernen hilft.

    Wir "wählen" gewissermaßen die Arbeit einiger Programmierer aus, da es jetzt nicht mehr nötig ist, sie um Hilfe zu bitten, TK vorzubereiten und die Leistung der Arbeit zu überprüfen. Jetzt müssen Sie nur wissen, wie Ihr Unternehmen funktionieren soll, Sie müssen die Prozesse selbst verstehen, wir erledigen den Rest.

    - Hören Sie zu, aber die Software für die Farm zum Anbau von Kräutern ist schon lange vorhanden. Was unterscheidet dich?

    - Ja, es stimmt, es gibt konkrete Lösungen für umweltfreundliche Produktionsbetriebe. Sie entwickeln diese Software jedoch nicht selbst, sondern kaufen eine fertige Lösung. Mit Hilfe unserer Plattform können Sie die Software für sich selbst, für Ihr Unternehmen und Ihre Aufgaben anpassen. Sie müssen keine Entwickler einstellen.

    - Und was genau machst du?

    - Das Unternehmen ist in zwei Teile unterteilt: Die Entwicklung des Kerns unseres Systems und des Projektbüros, das in der Tat unser Nullkunde ist, wenn ich das sagen darf. Ich entwickle einen 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.000 Benutzer, es gibt mehrere Datenflussszenarien, und in jedem Stream gibt es 10-20 Verzweigungsblöcke. Stellen Sie sich vor, was für eine Belastung das Eisen hat. Und wir müssen in der Lage sein, alles klar zu differenzieren, damit die Prozesse eines Kunden die Prozesse eines anderen Kunden nicht stören und die Arbeit nicht behindern. 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 dies alles unter der Haube funktioniert, kann er die Lagerung nicht wählen. Wir unterstützen verschiedene Datenbanken - es können sowohl relationale Datenbanken als auch NoSql sein. Im Allgemeinen verhält sich das System genauso wie sie. Der Kunde muss jedoch nicht darüber nachdenken - bei der Erstellung eines Kontos hilft das System je nach Aufgabe, die beste Wahl des Speichers zu treffen.

    Unsere Plattform ist ein gutes Beispiel für ein hoch belastetes verteiltes System. Meine Aufgabe ist es, guten Code zu schreiben, damit dies alles einwandfrei funktioniert. Als Ergebnis bekam ich hier, was ich wollte: Ich arbeite mit den Tools, die mich interessieren.

    image

    - Und wie kamen Sie zur Arbeit mit Daten?

    - Bei meinem ersten Job war ich hauptsächlich mit ähnlichen Aufgaben in einem eher engen Segment beschäftigt (read - parsil xml :)) und ich mochte es schnell nicht. Ich fing an, Podcasts zu hören, ich erkannte, wie groß die Welt ist, so viele Technologien, von denen alle sprechen - Hadoop, Big Data, Kafka. Dann wurde mir klar, dass ich lernen muss und das Programm „ Big Data Specialist". Wie sich herausstellte, habe ich nicht verloren: Das erste Modul (MapReduce, Hadoop, Machine Learning, DMP-Systeme - Anmerkung des Autors) war sehr nützlich, ich wollte es studieren, aber das zweite Modul befasst sich mit Empfehlungssystemen Ich wusste nur nicht, wo ich mich bewerben sollte, ich habe es nie berührt. Und dann ging ich zu DCA, um mit dem zu arbeiten, was mich interessierte. Dort erzählte mir ein Kollege, dass es neben dem Datenwissenschaftler auch einen Dateningenieur in diesem Bereich gibt, der erzählte, wer er war und was für das Unternehmen von Nutzen sein könnte.

    Danach haben Sie gerade einen Pilotstart des Programms „ Data EngineerNatürlich entschied ich mich zu gehen. Ich kannte bereits einige der Produkte, die auf dem Programm standen, aber für mich war es ein guter Überblick über die Tools. Es strukturierte alles in meinem Kopf. Ich wusste schließlich, womit der Data Engineer arbeiten sollte.

    - Die meisten Unternehmen teilen diese beiden Positionen jedoch nicht - zwei professionelle Profile einer Person -, sie suchen nach Universalspezialisten, die Daten sammeln und aufbereiten und ein Modell erstellen, und unter hoher Last werden sie Produkte einbringen. Was denkst du, womit ist es verbunden und wie richtig ist es?

    - Die Performance des Programms "Big Data Specialist" Pavel Klemenkov (damals bei Rambler & Co tätig) hat mir sehr gefallen. Er sprach über ML-Pipeline und erwähnte Programmierer-Mathematiker. Er sprach nur über solche Universalspezialisten, dass es sie gibt, es gibt wenige und sie sind sehr teuer. Daher versucht Rambler & Co, sie zu Hause weiterzuentwickeln und nach starken Jungs Ausschau zu halten. Diese Profis sind wirklich schwer zu finden.

    Ich glaube, wenn Sie wirklich über viele Daten verfügen und eine sorgfältige Arbeit mit ihnen benötigen (und nicht nur das Geschlecht und das Alter einer Person vorhersagen oder beispielsweise die Wahrscheinlichkeit eines Klicks erhöhen), dann sollten dies zwei verschiedene Personen sein. Hier gilt die Regel 20/80: Data Scientist ist zu 80% Data Science, 20% - er kann etwas im Produkt schreiben und schreiben, und Data Engineer - 80% Software Engineer und 20% wissen, welche Modelle sie haben anwenden und was zählt, ohne sich in Mathematik zu vertiefen.

    - Erzählen Sie uns von der für Sie wichtigsten Entdeckung in Data Science \ Data Engineering. Vielleicht hat die Verwendung eines Algorithmus für das Tool einen radikalen Wandel für Ihre Problemlösung bewirkt?

    - Wahrscheinlich die Tatsache, dass Sie mit genügend Daten viele nützliche Informationen für ihre zukünftigen Aktionen erhalten können. Selbst wenn Sie manchmal nicht wissen, was diese rohen, unpersönlichen Daten sind, können Sie trotzdem etwas auf der Grundlage dieser Daten tun: Brechen Sie die Gruppen auf, finden Sie Funktionen, verwenden Sie einfach mathematische Methoden, um einige Muster herauszufinden. Zwar haben Analysten dies schon früher tun können, aber die Tatsache, dass es jetzt zugänglicher geworden ist, hat die Leistungsfähigkeit von Eisen erhöht - das ist cool! Der Schwellenwert für den Einstieg in Data Science ist jetzt gesunken. Möglicherweise wissen Sie nicht viel, sodass Sie mit einigen Tools etwas unternehmen können.

    - Was war die größte Datei bei der Arbeit? Welche Lektion hast du daraus gelernt?

    - Wahrscheinlich wütend auf dich, ich hatte noch keinen, vielleicht vor mir. Ich dachte ehrlich, erinnerte sich, aber nichts war so langweilig. Es ist wie bei Administratoren: Wenn Sie das Produkt nicht „fallen gelassen haben“, die Basis nicht gelöscht haben, sind Sie kein echter Administrator. Das ist wahrscheinlich nicht der eigentliche Entwickler.

    - Welche Data Engineering-Tools setzen Sie am häufigsten ein und warum? Was ist dein Lieblingsinstrument?

    - Ich mag Apache Kafka sehr gerne. Ein cooles Werkzeug, sowohl was die Funktionalität als auch das Engineering angeht. Die Besonderheit von Kafkas Arbeit liegt in der engen Beziehung zwischen dem Programmcode und dem Betriebssystem, auf dem sie ausgeführt wird - Linux (lesen - "funktioniert schnell und gut"). Das heißt, es verwendet verschiedene native Linux-Funktionen, die eine hervorragende Leistung auch bei schwacher Hardware ermöglichen. Ich glaube, dass es in unserem Bereich so sein sollte - es reicht nicht aus, nur eine Programmiersprache und ein paar Frameworks dafür zu kennen. Wenn Sie etwas wirklich Cooles erstellen möchten, das nicht nur für Sie, sondern auch für andere Benutzer angenehm zu verwenden ist, müssen Sie tiefer graben und wissen, wie Ihr Code im System auf der Hardware funktioniert.

    - An welchen Konferenzen nehmen Sie teil? Welche Profilspalten \ Blogs \ ng-Kanäle lesen Sie?

    - Wie gesagt, alles begann mit Podcasts, nämlich „ Debriefing “ - von den Jungs aus der Welt von Java.

    Es gibt auch https://radio-t.com - einen coolen russischsprachigen Podcast zu High- und It-Technology-Themen, einer der beliebtesten (wenn ich mich nicht irre) in unserer Sprache.

    Ich verfolge die Neuigkeiten von JUG.ru , die Jungs veranstalten coole Hardcore-Konferenzen, arrangieren Meetings. Ich versuche, zu denen in Moskau zu gehen, auch in St. Petersburg. Die Top-Java-Konferenz ist Jpoint in Moskau (auch als Joker in St. Petersburg bekannt). Ich gehe immer zu Jpoint oder schaue online.

    Beobachten Sie, was Confluent macht- Leute, die sich Unternehmensförderung für Kafka verdienen und die Hauptverantwortlichen dafür sind. Entwickeln Sie außerdem praktische Tools für Apache Kafka in Open Source. Ich versuche, ihre Versionen zu verwenden.

    Das Netflix-Techlog auf dem Medium ist eine coole Ressource über Lösungen für eine der größten Plattformen zur Bereitstellung von Videoinhalten für den Benutzer. Highload und verteilte Systeme für die meisten "will nicht"

    Kanäle im Telegraph: https://t.me/hadoopusers - ein Ort, an dem Sie in unserer Sprache über Data-Engineering-neue Themen chatten können; https://t.me/jvmchat - Java-Leute der Welt, diskutieren ihre Probleme, ihre Probleme und nicht nur.

    - Vielleicht noch etwas für die Seele?

    - Ich bin mit Computerspielen aufgewachsen, ich habe einmal sehr aktiv gespielt, jetzt gibt es keine Zeit dafür. Und irgendwann dachte ich: „Da ich keine Spiele spielen kann, was hindert mich dann daran, diese Gegend zu studieren?“ Und wenn ich plötzlich Freizeit habe, nehme ich Java, C # oder C ++ - Framework, das spielen kann schreibe und tu etwas. All dies erreicht selten das Endprodukt, aber ich freue mich. Daher gibt es in der Liste meiner Podcasts auch einen, der über die Erstellung von Spielen berichtet - „ Wie machen Spiele”- Bei einem guten professionellen Podcast geht es nicht darum, wie man sein Super-Mega-Top-Spiel codiert, sondern um den Spielproduktionsprozess: Wie funktioniert der Sound Designer, was macht der Game Designer? Werkzeuge, wie man das Spiel entwickelt, wie man es fördert. Dieses Frühjahr war zum ersten Mal auf einer Spielekonferenz, es war sehr cool: Ich fühlte mich nicht wohl, aber es stellte sich heraus, dass es eine völlig andere Welt war. Ich war froh zu wissen, dass in der Spielewelt auch große Dates aktiv interessiert sind. In Gesprächen zu diesen Themen fühlte ich mich sehr zuversichtlich.

    Quiz:
    - Java oder Python?

    - Java natürlich.

    - Data Science oder Data Engineering?
    - Data Engineering

    - Künstler oder Manager?
    - Es kommt darauf an, aber vorerst eher ein Darsteller.

    - Familie oder Karriere?
    - Vor einiger Zeit gab es eine Karriere und jetzt eine Familie.

    - Zu Hause kochen oder in ein Restaurant gehen?
    - Ich liebe leckeres Essen. Ich glaube, ich koche gut, aber es kommt selten vor. Daher wahrscheinlich in ein Restaurant gehen.

    Jetzt auch beliebt: