Habr, hallo! Wir setzen eine Reihe von Interviews mit Newprolab-Alumni fort, in denen sie über ihre Geschichte des Einstiegs in die Arbeit mit Big Data sprechen. Die Geschichten sind alle unterschiedlich und werden für diejenigen interessant sein, die darüber nachdenken, ihren Karriereweg zu ändern oder wie neues Wissen zur Lösung aktueller Probleme beitragen kann. Heute haben wir höchstwahrscheinlich die zweite Option. Treffen Sie - Dmitry Rodin, in meinem Herzen ein Entwickler, der zur Open-Source-
Analyseplattform Rockstat beiträgt; Mitbegründer, Mitautor und Lehrer von
Digital God - Bildungsprogramme für Digitalprofis; CEO
Xeteq .
Wir sprachen mit Dima über Programmiersprachen und welche Lösungen er darauf schreibt, über sein Open-Source-Projekt und warum er es tut, über eine neue Spezialität, die sie unterrichten usw.
- Dima, erzähl uns etwas über dich.- Mein Karamellhandwerk fällt mir sofort ein, ich scherze lange darüber, aber im Ernst, in meinem Herzen bin ich Programmierer oder Architekt, ich mag es, neue Lösungen zu finden und andere Menschen in sie einzubeziehen. In den letzten 10 Jahren habe ich mich mit Marketingtechnologien beschäftigt und war so begeistert von ihnen, dass daraus ein Hobby wurde. Er entwickelte fast alles: von einem Werbemanagementsystem über DSP bis hin zu Betrugsbekämpfung mit Hardwareüberwachungsmodulen. Ich glaube, ich habe Zen gelernt, aber das stimmt nicht.
- Sie programmieren seit mehr als 15 Jahren. Sagen Sie mir, wie viele Programmiersprachen kennen und verwenden Sie in Ihrer Arbeit und Ihren persönlichen Projekten?- Ich denke, dass das Zählen der Anzahl der Sprachen falsch ist. Die wichtigste Fähigkeit besteht darin, mehrere Sprachkonzepte zu verstehen, und dann gibt es praktisch keinen Unterschied, worüber man schreiben soll. Ja, natürlich hat jede Sprache ihre eigenen Vorteile und Fallstricke. Das sollten Sie nicht vergessen.
- Und aus welchen Sprachen haben Sie angefangen und welche verwenden Sie jetzt?- Für mich gibt es keinen großen Unterschied, worüber ich schreiben soll. Ich habe mit der Entwicklung von Websites in PHP begonnen, es war vor mehr als 15 Jahren. Es stimmt, ich habe es seit vielen Jahren nicht mehr benutzt.
Nach PHP gab es Ruby, dann war es eine Hype-Sprache, viele Konferenzen wurden abgehalten und sein Framework - Ruby on Rails - wurde ein Modell für viele andere. Im Allgemeinen wurden in Ruby viele Konzepte geboren, die sie später in anderen Programmiersprachen und ihren Ökosystemen übernahmen und degenerierten.
Dann begann ich mich aktiv in JavaScript (node.js) zu entwickeln. Browser konkurrierten einst um Geschwindigkeit und Sicherheit, und während dieses Rennens wurde eine sehr leistungsstarke JavaScript-Engine V8 geboren, die sich im Chromium-Browser befindet (Hinweis: der offene Browser, auf dem Chrome basiert). Einige Leute entschieden sich, diese Engine zu nehmen und an libevent zu befestigen, was zu einer äußerst produktiven, asynchronen Sache führte, die auf anderen serverseitigen Skriptprogrammiersprachen funktionierte, wenn auch mit ekelhafter JavaScript-Syntax und dem damaligen Ökosystem. In dieser Serversprache habe ich es entwickelt.
Für mich war JavaScript die schrecklichste Sprache, es war fast unmöglich, gut damit umzugehen, d. H. Schreiben Sie kompatiblen Code, der zum Debuggen, Testen und Entwickeln geeignet ist. In den letzten Jahren hat sich JS jedoch erheblich verbessert: Die Sprache selbst hat sich weiterentwickelt, es sind viele Assembly-Tools erschienen, und vor allem Add-Ons, mit denen Sie Datentypen beschreiben, die Konformität überprüfen und mögliche Fehler finden können, die ein Entwickler machen kann, wodurch die meisten davon beseitigt werden. Eines dieser Add-Ons ist TypeScript. Ich verwende es seit einigen Jahren anstelle von reinem JS.
Natürlich kommt man nicht von Python weg, alles ist da, es funktioniert bequem und schnell genug, man muss nichts erfinden, man kann fast alles tun, was man will. Es ist gut für die Arbeit mit Daten geeignet: Viele mathematische Pakete, praktische Werkzeuge wie Jupyter, berücksichtigen zumindest keine Einschränkungen hinsichtlich der Größe der Zahl in mathematischen Berechnungen.
Mein Favorit, an dem ich jedoch am wenigsten arbeite, ist Elixir. Es basiert auf einer anderen Funktionssprache, Erlang, die von Ericsson für die Programmierung von Telekommunikationsgeräten entwickelt wurde. Das Hauptmerkmal ist Parallelität und Fehlertoleranz. Übrigens ist er vor langer Zeit erschienen, praktisch in meinem Alter. Elixier ist ebenso wild parallel und fehlertolerant. Erlang und Elixir verfügen über interessante Architekturmerkmale. Beispielsweise kann ein einzelner Server mehrere Millionen gleichzeitige Verbindungen verarbeiten, indem er seine eigene Implementierung von Lightweight-Prozessen und Messaging über Lightweight-Verbindungen verwendet. Erlang hat zwar eine äußerst unbequeme und unaussprechliche Syntax.
Elixir ist also tatsächlich der gleiche Erlang mit all seiner Kraft, aber mit einer viel angenehmeren und bequemeren Syntax von Ruby. In Xeteq haben wir einen produktiven MTA darauf aufgebaut (Hinweis: Mail Transfer Agent, d. H. Mail Server). Ich habe jedoch immer noch Angst, Großprojekte bei Elixir durchzuführen. Wenn Sie es verwenden, müssen Sie selbst zu viel schreiben: Was Sie lange Zeit in anderen Sprachen als vorgefertigte Bibliotheken implementiert haben, müssen Sie selbst tun. Obwohl es manchmal nützlich ist, das Rad neu zu erfinden, können Sie etwas Neues und Wertvolles erfinden. Und die Community ist etwas träge. Alle Projekte haben eine sehr kleine Community, zum Beispiel das grundlegende Plug-in-Webframework - es hat weniger als zweitausend Sterne, sein Analogon ist Python Flask, das fast 40.000 hat, und Ruby Sinatra hat etwas mehr als 10.000.
- Reden wir über Projekte. Erzählen Sie uns von Ihren interessantesten, bedeutendsten und wichtigsten Projekten und ihrem Schicksal.- Mein erstes ernstes Projekt war "Blonde.ru". Im Jahr 2009 war es ein sehr ehrgeiziges Projekt, dessen Kern darin bestand, dass jede Person ohne besondere Kenntnisse in der Kontextwerbung unabhängig eine Werbekampagne starten kann, und zwar in allen Werbenetzwerken und über eine einfache Oberfläche. Dort bin ich sehr professionell aufgewachsen und habe Menschen getroffen, die mein Leben stark beeinflusst haben. So kam es, dass nach einigen Monaten der Vorsitzende des technischen Direktors geräumt wurde und sie mich zum stellvertretenden Direktor ernannten, während sie ihn suchten. Einige Zeit verging und der Stuhl war leer. Der Leiter der Firma, Yura Eliseev, hat mich zu einem vollwertigen technischen Direktor gemacht. Ich weiß nicht, von was er geleitet wurde. Ich war ziemlich grün für diese Position, obwohl ich vielleicht etwas in mir gesehen habe (
lacht - Kommentar des Autors ). Dort haben wir uns übrigens mit Alexander Shvets getroffen (mit ihm haben wir Digital God gegründet). Er kam als Programmierer zu uns, als er noch Baumanka studierte, und war dabei der Beste. Im Allgemeinen wurden wir dann sehr gute Freunde. Das Projekt lebt, es wurde mehrmals umbenannt und transformiert, es betrat ausländische Märkte, jetzt ist es als Aori bekannt.
- Und nach Blonde.ru hast du angefangen, dein erstes Projekt zu machen, oder?- Ja, mein Freund und ich haben beschlossen, ein Produkt-Widget zu erstellen, nämlich das Yandex.Market-Werbenetzwerk. Um es klarer zu machen: Es gibt Yandex.Direct und YAN (Yandex Advertising Network) - verschiedene Websites, auf denen sich ihre Blöcke befinden, und sie holen entweder eine Person über eine Suche oder eine thematische Anzeige ein. Yandex.Market hatte dies nicht, aber es gab eine spezielle Inhalts-API, über die es möglich war, heiße Angebote von Geschäften zu erhalten, und einen Link, über den interessierte Personen gesendet werden konnten. Und wenn ein Kauf getätigt wurde, erhielten wir 50% der vom Werbetreibenden gezahlten Kosten. Schnell genug habe ich die Engine gesägt - ein Widget, das auf der Website platziert wird, das das Thema bestimmt, untersucht, woran eine Person interessiert war, um eine automatische Auswahl von Produkten aus dem Markt zu treffen. Das hat super geklappt. Wir haben gelernt, wie man gut vermittelt („Arbitrage“ - um eine Werbefläche zu kaufen und sie über einen anderen Kanal rentabel zu machen), um gute / schlechte Websites zu identifizieren, und wir haben begonnen, auf vielen Websites aktiv Werbeflächen zu kaufen und dort unser Widget zu platzieren. Unter den Standorten befand sich ein großes Automobil. Infolgedessen verzeichneten wir ein sehr schnelles Wachstum, aber aus einem unbekannten Grund brach Yandex einseitig den Vertrag mit uns ab. Wir haben unser Bestes getan, um den Grund herauszufinden, aber wenn wir dies nicht taten, mussten wir das Projekt schließen. Es war eine große Trauer, denn es wurde viel Mühe in dieses Projekt gesteckt und die Leistung war sehr gut. Jetzt bin ich sicher, dass es eine gute Erfahrung war, die mich gelehrt hat, wie man Risiken richtig einschätzt. Im Allgemeinen ist die Erfahrung nur positiv, und wenn etwas nicht erfolgreich ist, hilft es Ihnen nur, in Zukunft noch größere Schwierigkeiten zu vermeiden.
- Und doch haben Sie, nachdem Sie alle möglichen Erfahrungen gesammelt haben, immer wieder neue Projekte entwickelt. Was ist als nächstes passiert?- Irgendwie habe ich mich vorgenommen, einen eigenen Zähler zu erstellen, um Daten über das Verhalten von Personen auf Websites zu sammeln und darauf basierend Statistiken zu berechnen - beispielsweise wie Google Analytics und Yandex.Metrica ihre Daten erfassen. Auf der Site wird ein Code abgelegt, der alle Aktionen der Besucher auf der Site überwacht, an den Server sendet, die Serverseite diese Daten empfängt und in einer verteilten Datenbank speichert. Dieses Projekt heißt Rockstat. Später dachte ich daran, einen darauf basierenden End-to-End-Analysedienst zu entwickeln, der übrigens heute für viele Unternehmen ein Problem darstellt. Aber ich hätte weder die Kraft noch die Zeit, mich zu entwickeln, und ich fing nicht einmal an. Und es ist gut, dass ich es nicht getan habe. Jetzt bin ich der Meinung, dass die End-to-End-Analysedienste ihre Arbeit erledigen. Sie eignen sich für diejenigen, die Analytics und Marketing nicht verstehen, die nicht verstehen, wie alles funktionieren soll, oder für diejenigen, die nur geringe Bedürfnisse haben. In anderen Fällen sind sie durch mangelnde Integration oder Inkompatibilität der Arbeitslogik begrenzt. Aber ich fand eine interessante Verwendung für Rohdaten, die vom Schalter gesammelt wurden.
- Was?- Betrachten Sie beispielsweise die Mehrkanalzuweisung basierend auf dem Verhalten des Website-Besuchers und nicht auf der Besuchsnummer. Die Zuordnung ist eine Möglichkeit, den Verkaufswert zwischen den daran beteiligten Werbekanälen zu verteilen. Das Attributionsmodell, das auf dem probabilistischen Durchgang des Trichters basiert, ist bereits populär geworden, eignet sich jedoch nur für Standorte mit einem Trichter und einem nicht zu langen Verkaufszyklus - dies ist die Mehrheit der Online-Shops. Aber es gibt noch eine andere Seite: Immobilien, ein Auto, Brautkleider, bei denen der Entscheidungszyklus viel länger ist und ein ausreichender Trichter auf der Baustelle einfach fehlt. Für sie habe ich einen Index für das Aktivitäts- / Engagementverhalten erstellt. Zu diesem Zeitpunkt hatte mein Zähler bereits mehrere Benutzer. Dies ermöglichte es mir, die Hypothese zu testen und die Zuordnung basierend auf der Beteiligung der Benutzer an der Interaktion mit der Site zu berechnen. Ich habe zwei Standorte besucht, an denen es einen Trichter und keinen zu kurzen Verkaufszyklus gibt. Ich habe die Ergebnisse des Modells basierend auf dem probabilistischen Durchgang des Trichters und das Modell basierend auf der Beteiligung verglichen. Es stellte sich heraus, dass sie merklich korrelieren. Schließlich leben wir in einer solchen Zeit: Wenn der Inhalt der Seite nicht auffängt oder keine Hoffnung gibt, wird er sofort geschlossen.
Ich dachte, dass dies nützlich und gefragt sein könnte. Ich habe mehrere Unternehmen durchgesehen und erklärt, wie sie die Bewertung der Wirksamkeit von Werbekanälen verbessern können, aber es hat sich als zu schwierig herausgestellt ... Es ist schwer zu verstehen und fügt Schwierigkeiten bei der Rechtfertigung von Ausgaben hinzu. Im Allgemeinen gibt es nur sehr wenige Menschen, die ihre Arbeit wirklich cool machen wollen, die von dem, was sie tun, angetrieben werden und die danach streben, neue Höhen zu erreichen. Häufiger stellt sich heraus, dass sie, wenn sie eine schwierige und unverständliche Entscheidung treffen, eher punkten und ihr Leben nicht komplizieren. Er sprach auf der Data Science Week in Moscow Digital mit einer Geschichte über dieses Modell. Es gab viele Interessierte, aber niemand war reif.
Und dann gab es eine andere Wendung, einige Leute kamen zu mir, um über Analytik zu sprechen (ich dachte schon), aber es stellte sich heraus, dass sie mir einen Job anboten und für mich eine sehr ungewöhnliche Position als Marketingleiter einnahmen. und nicht irgendwo da draußen, sondern in die vielversprechende Tochter von Sberbank Plazius. Diese Erfahrung verdient eine eigene Geschichte, also werde ich sie vielleicht überspringen.
Während ich noch bei Plazius arbeitete, begann ich zu unterrichten. Mein Freund und ich haben zusammen mit der Tceh-Plattform den Vollzeit-Ausbildungskurs „Programmatic Advertising Specialist“ gestartet. Der Kurs half Menschen, ihre Kompetenz im schwierigen Bereich der technologischen Werbung zu verbessern oder sogar einen neuen Beruf zu erlangen. Und dann kam ich zu Linkprofit, wo ich anfing, Marketingtechnologien zu entwickeln, die sich hauptsächlich auf den Markt konzentrierten und nicht auf die Bedürfnisse des Unternehmens. Dann wurde das Unternehmen umstrukturiert, ohne es zu merken. Ich wurde zum Leiter des neuen IT-Unternehmens Xeteq ernannt, das zur LT Digital-Unternehmensgruppe gehörte.
- Warte, was ist mit Rockstat? Er hat es aufgegeben, da niemand verstanden hat?- Einmal dachte ich: "Warum geht Rockstat aus?" Vielleicht wird jemand davon profitieren. “ Überarbeiten Sie den Dienst in einer Box, fügen Sie Datentools hinzu und stellen Sie ihn in Open Source namens Alcolytics. Und dann fing es an ... Um das Projekt herum begann sich eine Gemeinschaft von sehr professionellen Leuten zu versammeln, die ich vorher ziemlich selten getroffen hatte. Sie fingen an, es zu Hause vorzustellen. Ich war so erstaunt! Außerdem gingen sie sehr kompetent mit dem Umgang um, ich hatte nicht einmal solche Gedanken. Dann habe ich selbst beschlossen, nur mit begeisterten und professionellen zu arbeiten und den Rest in den Wald zu lassen. Ich würde mich nicht einmal mit denen in Verbindung setzen, die nicht wissen, was sie wollen, die die Idee „verkaufen“ und dann ihre Wirksamkeit beweisen müssen.
Ich begann fast meine gesamte Freizeit mit der Entwicklung dieses Projekts zu verbringen. Die sichtbare Rückkehr hat mich sehr motiviert. "Wofür wollte ich früher alles kommerzialisieren, wenn ich es satt habe, dass sie es benutzen und die Leute es mögen", dachte ich. Im Allgemeinen war es zuerst irgendwie beängstigend, plötzlich ein Fehler, aber ich kann es nicht einmal beheben oder sie werden es falsch installieren, sie werden alles verderben und dann werden sie sagen, dass die Software nicht funktioniert (* lacht - Kommentar des Autors *). Ich kannte ungefähr ein Dutzend Server mit Alcolytics, wahrscheinlich gab es mehr, aber dieses Wissen reichte für eine hohe Motivation aus, ich entwickelte das Projekt ständig weiter und es wurde immer besser.
Ein Benutzer in Alcolytics sammelte Daten aus crm und ruft integrierte Analysen auf. Diese Daten wurden benötigt, um eine clevere standortübergreifende Zuordnung zu erstellen. Dies musste draußen gemacht werden, weil Es gab keine Möglichkeit, den Code darin auszuführen. Dann habe ich beschlossen, kleine Skripte für die Entwicklung meiner APIs zu erstellen, mit denen wir diese Daten zu crm oder wo immer sie verwendet werden können, übertragen können. Ich habe viele Optionen bearbeitet, aber überall gab es einen Fehler. Ich entschied mich für ein Service-Layout für Docker, war aber von diesem Prozess so begeistert, dass ich zwei Monate später feststellte, dass ich meine Microservice-Plattform erstellt hatte, aber ich wollte eine einfache Sache tun, um Skripte auszuführen. Ich war sehr fasziniert von dem Gedanken: „Warum brauche ich Analysen, wenn es keine Möglichkeit gibt, die Entscheidungsfindung zu automatisieren?“ Es reicht aus, die Zahlen mehrmals zu betrachten, und es ist klar, in welchem Fall was zu tun ist. Auf diese Weise können Sie entweder kommerzielle Software, die normalerweise einen angemessenen Preis hat, oder komplexe Open Source-Software im Hinblick auf Implementierung und Support erstellen.
- Ja, einfache Entscheidungen sind nichts für Sie, wenn Sie etwas tun, dann in großem Stil.- Ich stellte mir vor, wie viele verschiedene Automatisierungen implementiert werden könnten. Sie werden verschiedene Aufgaben ausführen: Verwaltung des Werbebudgets und der Gebote oder, wenn wir über RTB-Werbung sprechen, es möglich sein, Benutzer von einem Segment in ein anderes zu verschieben, wenn sie den Status im System ändern. Sie können tun, was Sie wollen. Während ich an dieser Plattform arbeitete, erfand ich viele "Fahrräder", die ich noch nie zuvor so viel erfunden hatte. Niemand wird mich dafür loben, aber ich mag sie und sie sind sehr cool geworden. Es gibt noch ein weiteres sehr gutes Argument: Es funktioniert alles auf demselben Server für 10 US-Dollar und unterhält eine Website mit 1-2 Millionen Besuchern pro Monat, ohne sich zu belasten. Entwickelte Frameworks für 2 Programmiersprachen, die alle erforderlichen Funktionen implementieren und die Interaktion mit anderen Microservices organisieren. Übrigens, große Unternehmen bauen jetzt auf Microservice-Technologien auf.
Wenn Sie eine Open Source-Lösung erstellen, ist es auch keine Schande, ein Stück von einem anderen Open Source-Gerät zu nehmen, z. B. mobilen Clients, deren Implementierung viel Zeit in Anspruch nehmen würde. Im Handel ist dies natürlich nicht der Fall - dies sind enorme Reputationsrisiken und in der Tat eine Schande. Ich habe so viel über cooles Open Source gelernt, als ich anfing damit zu arbeiten.
Dies ist kein Projekt, das bestimmte Probleme löst. Es ist eine Plattform, die Ihnen hilft, Ihre Wünsche zu verwirklichen und es einfach zu machen. Machen Sie sich keine Gedanken über komplexe und langweilige Techniken.
Kürzlich
in Alpha-Test der 3. Version veröffentlicht , wobei der ursprüngliche Name
Rockstat zurückgegeben wurde . Die Dokumentation ist noch klein, es gibt viele Fehler, aber die Benutzer sind zufrieden. Unter ihnen gibt es große Unternehmen: eine Fluggesellschaft und die nächste in der Reihe ist ein Werbetreibender aus den Top 30 Russlands. Natürlich gibt es insgesamt mehr Benutzer. Wir haben eine kleine Community in TG (@rockstats), Jungs werden über Probleme und Erfolge berichten.
- Warum und warum Sie so viel Zeit und persönliches Geld für ein Projekt ausgeben, das Sie dann in Open Source veröffentlichen. Was motiviert dich?- Es scheint mir, dass das Rockstat-Projekt den digitalen Bereich stark verändern kann. Es ist klar, dass der Standard für kleine Unternehmen geeignet ist und Riesen komplizierte Entscheidungen treffen, aber es gibt Unternehmen mit talentierten Spezialisten und komplexen Anforderungen dazwischen, es gibt immer mehr von ihnen. Sie schaffen mutige und effektive Lösungen mit ihren eigenen Händen. Es ist nicht bekannt, ob der Markt ihnen folgen wird oder nicht, da bekannt ist, wofür Russland berühmt ist. Für einige Zeit werde ich das Projekt hier entwickeln, aber nur er wird ein wenig erwachsen, ich werde versuchen, es in anderen Märkten zu deklarieren.
Es war ein langer Weg, aber jetzt kann ich ehrlich sagen: "Ich weiß nicht, warum ich Geld brauche, wo ich es hinstellen soll." , - , , . open source , , : « - ?» , , , . , .
— ?— , (
– . ). . , , email . – , – , . , : , , 00-, . , . – (Message Transfer Agent) – . . 2-3 MPV ( ). , . – . , , . – «» , . Elixir, , , , Elixir .
— , , , « » ? ?— . Hadoop . , , , - ; , . , : Hadoop, , « », DMP, — . : ; . , , . , .
— Digital God — . ?— , , : ( ), Ad-/Mar-Tech. , Facebook, . digital . : digital . , , .. , , : , , .
( ) , , – (
– . ). . , , . 2- , 3- . , . .
– , , , . , – . . , , . , , . , , .
Rockstat : , , . , , , , , . - ( Rockstat ). , , . , . - API, - , scraper- , API.
Rockstat Digital God – . –
« » . - . «, » — , . - , . - , , . , , , . , , .
1 Digital God Digital Rockstar— . , Digital God? ?— , , , , , . , , .
digital , digital, , , , , .
— , ?— - , , , . , , . , . - , , , , , .
— ., , . , , .— , , ó , : , . , , . , ( , - DigitalGod) . , : « , . \, ». , , , . , , , .
, IT : - , , , , . , , , , , , . , , .
— , ? , / ?— , , , , . , - , .
, , . , , . - , , , . , . , , , - , , , .
— , ? , .— (
– . ). , , , . , . , , - .
— , ?- Ich habe ehrlich gesagt keine interessante Vision zu diesem Thema. Ich nehme das Leben als Computerspiel wahr - Sie gehen einfach durch die Level, wählen zwischen verschiedenen Aktionen, die Sie berechnen können, und treffen eine Wahl. Mein Open Source wird wahrscheinlich kommerzielle Projekte aus dem Markt verdrängen, und Digital God-Kurse werden ein neues Niveau für Digitalprofis setzen. Es ist also interessant, was all dies funktionieren wird oder überhaupt nicht. Ich habe in meiner Kindheit Computerspiele gespielt, dann bin ich aufgewachsen und habe erkannt, dass das Leben auch ein Spiel ist, aber viel aufregender, viel bessere Grafiken und wie viele mögliche Entwicklungslinien und Levels ...