Habr, bonjour! Il est intéressant de voir combien de programmeurs et de développeurs ont découvert la science des données ou l'ingénierie des données et construisent une carrière réussie dans les mégadonnées. Ilya Markin, ingénieur logiciel chez
Directual , n'est qu'un des développeurs qui sont passés à l'ingénierie des données. Nous avons parlé de l'expérience dans le rôle de chef d'équipe, un outil préféré en ingénierie des données, Ilya a parlé de conférences et de canaux de profils intéressants de javistes, de Directual côté utilisateur et technique, de jeux informatiques, etc.
- Ilya, merci d'avoir pris le temps de vous rencontrer. Je vous félicite pour la transition relativement récente vers une nouvelle entreprise et pour la naissance d'une fille, vous avez beaucoup de soucis et de soucis. Immédiatement la première question: qu'est-ce qui était si intéressant qu'on vous a proposé de travailler en Directual, que vous avez quitté DCA?- Probablement, je dois d'abord vous dire ce que j'ai fait à DCA. Je suis entré dans DCA (Data-Centric Alliance) après avoir terminé le programme de
spécialiste du
Big Data . À ce moment-là, je m'intéressais activement au sujet du big data et j'ai réalisé que c'est exactement le domaine dans lequel je souhaite me développer. Après tout, là où il y a beaucoup de données, il y a beaucoup de problèmes d'ingénierie intéressants qui doivent être résolus. Le programme m'a aidé à plonger rapidement dans l'écosystème du monde des grandes dates, où j'ai acquis les connaissances initiales nécessaires sur Hadoop, YARN, le paradigme Map-Reduce, HBase, Spark, Flink, et bien plus encore, et comment il fonctionne sous une charge élevée.
J'ai été invité pour une interview par les gars de DCA. DCA est un acteur majeur du marché RTB (
Real Time Bidding est une technologie publicitaire qui vous permet d'organiser une vente aux enchères entre vendeurs et acheteurs de publicité en temps réel. L'objet d'une enchère lors d'une vente aux enchères en ligne est le droit de montrer une annonce à un utilisateur spécifique. RTB est basé sur la précision maximale de la sélection d'un visiteur cible - env. ). DCA avait une couverture élevée d'utilisateurs de Runet: environ 600 millions de cookies, un cookie n'est pas égal à l'utilisateur - un utilisateur peut avoir de nombreux cookies: différents navigateurs, différents appareils. Nous avons reçu des dizaines de téraoctets de données sur les visites de pages Internet par jour. Tout cela a été traité et le cookie a été marqué dans un ensemble spécifique de segments. Ainsi, nous avons pu identifier, par exemple, des amoureux de chats de 20 à 25 ans vivant à Moscou, afin de les inviter davantage à acheter de la nourriture pour leur chat bien-aimé près de la maison. Et il y en a beaucoup, il y en a de très simples, il y en a de complexes. Sous le capot, il y avait beaucoup de java, scala et C ++. Je suis arrivé dans l'entreprise en tant que développeur et six mois plus tard, je suis devenu chef d'équipe.
J'ai quitté DCA à la fin du printemps, à ce moment-là, j'étais fatigué de la charge de gestion et j'ai commencé à regarder les postes techniques. Il s'est avéré que je n'ai pas pu écrire de code pendant une semaine. Nous nous sommes réunis avec l'équipe, avons discuté de solutions intéressantes, réfléchi à l'architecture, peint des tâches. Quand je prenais quelque chose de la liste pour moi-même, parfois je n’avais pas le temps de terminer la tâche, car il y avait beaucoup de cas de chefs d’équipe. Peut-être que le problème est en moi et que je n'ai pas pu allouer le temps correctement.
Et pourtant, j'ai acquis une expérience utile. Premièrement, travailler avec une équipe et une entreprise: il est intéressant d'être à la jonction du développement et de l'entreprise, lorsque vous recevez une demande de mise en œuvre d'une sorte de fonctionnalité, vous pensez, évaluez les possibilités. Souvent, vous devez prendre une décision qui sera plus utile dans cette situation particulière: écrire quelque chose rapidement «sur le genou» ou passer 2 semaines, voire plus, mais donner une solution stable et normale.
- Et quelles décisions ont été le plus souvent choisies - «à genoux» ou en 2 semaines?- Un développeur dans l'âme est toujours un perfectionniste, il peut sans cesse s'engager dans une tâche intéressante, la refaire, l'optimiser. Bien sûr, vous devez savoir quand vous arrêter. Des décisions ont été choisies quelque part entre les deux.
Deuxièmement, j'étais, enfin, dans une position où vous pouvez participer à la prise de décision, être au courant de ce qui se passe dans l'entreprise. Je n'aime pas simplement rester assis et coder dans ma boîte, je veux savoir ce qui se passe avec le produit, comment il se montre, comment les utilisateurs réagissent.
Troisièmement, j'ai commencé à mener des entretiens, visités «de l'autre côté des barricades», pour ainsi dire. La première interview a été très excitante à réaliser, a lu le CV et a pensé: "Merde, maintenant la star va venir, et je ne sais même pas la moitié de ce qu'il a écrit. De quoi vais-je parler avec lui? » Et dans le processus de communication, vous devenez sobre et comprenez pourquoi la demande sur le marché du personnel informatique dépasse l'offre. Il est difficile de trouver un bon spécialiste, le plus souvent il s'assoit là où il est content de tout. Un spécialiste tout fait pour vos tâches et technologies spécifiques, qui n'aura pas besoin d'être recyclé / recyclé, irréaliste à trouver, doit connecter des connexions, demander à des amis, des connaissances, des collègues. Le réseautage est très important ici. Ainsi, par exemple, j'ai amené mon ami dans l'entreprise, en qui j'étais sûr et avec qui j'avais travaillé plus tôt à l'endroit précédent. Ils ont également pris un récent diplômé universitaire qui avait peu d'expérience avec notre pile, mais pendant l'entrevue, j'ai réalisé qu'il était un gars très prometteur.
Souvent, les gens travaillent avec des cadres, et non avec des outils spécifiques, je pense que c'est un problème en ce moment. Un candidat possède deux ans d'expérience en tant que développeur Hadoop-Big Data, vous commencez à vous demander comment Hadoop fonctionne, de quelles parties il se compose et qu'une personne ne sait pas. Étant donné que Hadoop fournit certaines interfaces pour simplifier son utilisation, cela suffit pour une certaine gamme de tâches. Et souvent, une personne ne dépasse même pas les limites de ces interfaces, c'est-à-dire le code qu'il obtient de celles-ci. Et qu'advient-il du code emballé après l'avoir envoyé au système, la personne s'en fiche. Pour beaucoup, cela suffit, ils ne veulent pas comprendre plus profondément. La conduite d'une entrevue est une excellente expérience non seulement en matière d'embauche, mais elle donne également confiance en vous en tant que spécialiste, ce qui est très utile.
Pourquoi Directual. Lorsque j'étais coordinateur du programme
Data Engineer , Artyom Marinov et Vasya Safronov de Directual sont venus nous parler. Soit dit en passant, Artyom m'a un jour interviewé à DCA (encore une fois sur les avantages du réseautage) et m'a maintenant invité à parler. Ils avaient besoin d'un rockman, mais ils étaient prêts à envisager un javista qui comprend comment jvm fonctionne sous le capot. Je me suis donc retrouvé ici.
- Qu'est-ce qui était si intéressant qu'on vous a proposé de le faire en Directual? Qu'est-ce qui vous a attiré?-
Directual est une start-up ambitieuse qui met en œuvre tous les projets annoncés, c'est-à-dire fait ce qu'elle promet. J'ai été ravi de faire partie de l'équipe et de participer activement à toutes les implémentations. Et pour moi, il était important que l'entreprise paie pour elle-même en travaillant avec les clients et ne vive pas avec l'argent des investisseurs.
Je vais parler un peu du projet à la fois du côté utilisateur et du côté arrière.
Le slogan de Directual est «Laissez les gens créer!». C'est précisément l'idée principale - permettre à toute personne qui n'a pas de connaissances et d'expérience en écriture de code de programmer dans notre éditeur visuel.
Comment cela fonctionne: un utilisateur via un navigateur dans notre plate-forme peut «rouler des cubes» (lire - les nœuds fonctionnels d'un processus) - c'est-à-dire collecter un script qui traitera les données entrantes. Les données peuvent être absolument n'importe lesquelles. Les données de sortie traitées peuvent avoir une idée différente - d'un rapport au format PDF à l'envoi d'une notification à plusieurs administrateurs. Autrement dit, tout processus métier peut être programmé en quelques minutes, sans pouvoir écrire de code. L'entreprise travaille dans deux directions: des solutions en boîte pour les entreprises clientes, ainsi qu'une option cloud pour un large éventail d'utilisateurs.
Afin de rendre plus clair comment cela fonctionne, je vais donner quelques exemples.
Dans toute boutique en ligne, il existe un certain nombre d'étapes fonctionnelles (les «cubes» dans notre cas) - de la présentation du produit au client, de son ajout au panier et de l'organisation de la livraison au consommateur final. En utilisant la plateforme, nous pouvons collecter et analyser des données: fréquence des achats, heure de leur achèvement, parcours utilisateur, etc., ce qui nous permettra d'interagir plus étroitement avec les clients (par exemple, pour développer des offres saisonnières, des remises individuelles). Cependant, cela ne signifie nullement que notre plateforme est un concepteur pour la création de boutiques en ligne!
Directual s'adapte bien à la fois à l'automatisation des processus logistiques et au travail de la direction RH des grandes entreprises, et à la création de toute autre solution technologique - d'une serre à une maison intelligente. Sur la plateforme, par exemple, vous pouvez créer un bot de télégramme en quelques clics - presque chaque employé qui écrit le cœur du système a son propre bot. Quelqu'un a fait un bibliothécaire adjoint, quelqu'un - un bot qui aide à apprendre les mots anglais.
Nous «enlevons» en partie le travail de certains programmeurs, car maintenant il n'est plus nécessaire de se tourner vers eux pour obtenir de l'aide, préparer des spécifications techniques ou vérifier l'exécution des travaux. Il suffit maintenant de savoir comment votre entreprise devrait fonctionner, vous devez comprendre les processus eux-mêmes et nous faisons le reste.
- Écoutez, mais il y a un logiciel pour une ferme de verdure, par exemple, depuis longtemps. En quoi êtes-vous différent?- Oui, c’est vrai, des solutions spécifiques pour les fermes de verdure existent. Cependant, vous ne développez pas vous-même ce logiciel, vous achetez une solution toute faite. En utilisant notre plate-forme, vous pouvez personnaliser le logiciel pour vous-même, pour votre entreprise et vos tâches, vous n'avez pas besoin d'embaucher des développeurs.
- Et que fais-tu exactement?- L'entreprise est divisée en 2 parties: le développement du cœur de notre système et le bureau de projet, qui est en fait notre client zéro, si je puis dire. Je développe le cœur du système.
Comme je l'ai dit, nous voulons donner à quiconque la possibilité de travailler sur notre plateforme. Pour cela, nous travaillons sur notre cloud. Et il y a beaucoup de problèmes. Quelle est la difficulté: par exemple, il y a 10 000 utilisateurs, ils ont plusieurs scénarios de flux de données et chaque flux a 10-20 cubes de branche. Imaginez la charge sur le fer. Et nous devons être en mesure de tout différencier clairement afin que les processus d'un client n'interfèrent pas avec les processus d'un autre et ne ralentissent pas le travail. Si un client a un problème que nous devons résoudre, nous ne devons pas nuire au travail d'un autre client.
Étant donné que l'utilisateur n'a pas besoin de réfléchir à la façon dont tout cela fonctionne sous le capot, il est libre du choix du stockage. Nous prenons en charge différentes bases de données - il peut s'agir de bases de données relationnelles et de NoSql. En général, le système se comporte de la même manière sur eux. Mais le client n'a pas besoin d'y penser - lors de la création d'un compte, selon les tâches, le système aidera à faire le choix optimal de stockage.
Notre plate-forme est un bon exemple de système distribué très chargé, et ma tâche est d'écrire du bon code pour que tout fonctionne sans échec. Du coup, j'ai ici ce que je voulais: je travaille avec les outils qui m'intéressent.
- Et comment en êtes-vous venu à travailler avec les données?- À mon premier lieu de travail, je me suis principalement occupé du même type de tâches dans un segment plutôt étroit (lire - parsil xml :)), et ça m'a vite ennuyé. J'ai commencé à écouter des podcasts, j'ai réalisé à quel point le monde est vaste, tant de technologies dont tout le monde parle - Hadoop, Big Data, Kafka. Puis j'ai réalisé que je devais étudier, et le programme "
Big Data Specialist " s'est révélé très opportun. Il s'est avéré que je n'ai pas échoué: le premier module (traitement et analyse des journaux Web: MapReduce, Hadoop, Machine Learning, systèmes DMP - note de l'auteur) m'a été très utile, je voulais juste l'apprendre, mais le deuxième module concerne les systèmes de recommandation Je ne savais simplement pas où postuler, je n'y ai jamais touché. Et puis je suis allé à DCA pour travailler avec ce qui m'intéresse déjà. Là-bas, un collègue m'a dit qu'en plus du data scientist, il y a aussi un data engineer dans ce domaine, il a dit qui il était et comment l'entreprise pouvait être utile.
Après cela, vous venez d'annoncer le lancement pilote du programme
Data Engineer , bien sûr, j'ai décidé d'y aller. Je connaissais déjà certains des produits qui étaient au programme, mais pour moi, c'était un bon aperçu des outils, tout structuré dans ma tête, j'ai finalement compris avec quoi un ingénieur de données devait travailler.
- Mais la plupart des entreprises ne partagent pas ces deux positions, deux profils professionnels d'une personne, elles essaient de rechercher des spécialistes universels qui collecteront les données et les prépareront, et elles feront le modèle, et elles seront amenées au produit sous haute charge. Que pensez-vous, à quoi cela est-il lié et dans quelle mesure est-il correct?- J’ai beaucoup aimé la performance de Pavel Klemenkov sur le programme Big Data Specialist (il a travaillé chez Rambler & Co à l’époque), il a parlé de ML-Pipeline et a mentionné les programmeurs mathématiques. Il a juste parlé de ces spécialistes universels qu'ils sont, ils sont peu nombreux et ils sont très chers. Par conséquent, Rambler & Co essaie de les développer à la maison, à la recherche de gars forts. Il est vraiment difficile de trouver de tels spécialistes.
Je crois que si vous avez vraiment beaucoup de données et que vous avez besoin d'un travail approfondi avec elles (et pas seulement prédire le sexe et l'âge d'une personne ou augmenter la probabilité d'un clic, par exemple), alors il devrait s'agir de deux personnes différentes. Ici, la règle 20/80 s'applique: un data scientist est 80% data science, 20% - il peut écrire quelque chose et le mettre dans le produit, et un data engineer - 80% software engineer et 20% he know what models are, how they appliquer et compter, sans entrer dans les mathématiques.
- Parlez-nous de la découverte la plus importante pour vous en science des données \ ingénierie des données? Peut-être que l'utilisation d'un outil / algorithme a radicalement changé votre approche pour résoudre les problèmes?- Probablement le fait que, disposant de suffisamment de données, vous pouvez extraire de nombreuses informations utiles pour vos actions futures. Même si parfois vous ne savez pas quelles sont ces données anonymes brutes, vous pouvez toujours faire quelque chose sur leur base: diviser en groupes, trouver certaines fonctionnalités, simplement dériver des régularités en utilisant des méthodes mathématiques sur les nombres. Certes, les analystes pourraient également le faire auparavant, mais le fait qu'il soit désormais plus accessible a augmenté la puissance du fer - c'est cool! Le seuil d'accès à la science des données a désormais baissé; vous n'avez pas besoin d'en savoir beaucoup pour pouvoir déjà essayer de faire quelque chose sur certains outils.
- Quel était le plus gros fichier de travail? Quelle leçon en avez-vous tirée?- Je vais probablement vous contrarier, je n’ai jamais eu ça avant, peut-être devant moi. Je pensais honnêtement, rappelais-je, mais il n'y avait rien de tel, très ennuyeux. C'est comme les administrateurs: si vous n'avez pas «laissé tomber la nourriture», vous n'avez pas «essuyé la base», vous n'êtes pas un vrai administrateur. Eh bien, je ne suis probablement pas un vrai développeur.
- Quels outils d'ingénierie des données utilisez-vous le plus souvent et pourquoi? Quel est votre outil préféré?- J'aime beaucoup Apache Kafka. Un outil sympa à la fois en termes de fonctionnalités qu'il offre et d'ingénierie. Les spécificités du travail de Kafka résident dans la relation étroite entre le code du programme et le système d'exploitation sur lequel il fonctionne - Linux (lire - «ça marche vite et bien»). C'est-à-dire que diverses fonctions natives linux-a y sont utilisées, ce qui vous permet d'obtenir d'excellentes performances même sur du matériel faible. Je pense que dans notre domaine, il devrait en être ainsi - il ne suffit pas simplement de connaître le langage de programmation et quelques cadres pour cela. Si vous voulez créer quelque chose de vraiment cool, qui sera agréable à utiliser non seulement pour vous, mais aussi pour d'autres, alors vous devez creuser plus profondément et savoir comment fonctionne votre code dans le système, sur le matériel.
- À quelles conférences participez-vous? Quelles colonnes de profil \ blogs \ canaux tg lisez-vous?- Comme je l'ai dit, tout a commencé avec des podcasts, à savoir avec le
débriefing - de gars du monde java.
Il y a aussi
https://radio-t.com - un podcast cool en russe sur des sujets de haute technologie et des technologies de l'information, l'un des plus populaires (si je ne me trompe pas) dans notre langue.
Je suis les nouvelles de
JUG.ru , les gars font des conférences hardcore sympas, organisent des réunions. J'essaie d'aller chez ceux de Moscou, de Saint-Pétersbourg aussi. La meilleure conférence java est Jpoint à Moscou (alias Joker à Saint-Pétersbourg), je vais toujours à Jpoint ou regarde en ligne.
Je regarde ce que
Confluent fait - des gars qui gagnent le soutien des entreprises pour la kafka et qui en sont les principaux contributeurs. Ils développent également des outils pratiques autour d'Apache Kafka en open source. J'essaie d'utiliser leurs versions.
Le blog technologique Netflix sur support est une ressource intéressante sur les solutions de l'une des plus grandes plates-formes pour fournir du contenu vidéo à un utilisateur. Highload et systèmes distribués par le plus «je ne veux pas»)
Chaînes de télégramme:
https://t.me/hadoopusers - un endroit où vous pouvez communiquer dans notre langue sur des sujets liés à l'ingénierie des données;
https://t.me/jvmchat - les gens du monde java, discutent de ses problèmes, de leurs problèmes et plus encore.
"Peut-être quelque chose d'autre pour l'âme?"- J'ai grandi sur les jeux informatiques, je jouais très activement, maintenant je n'ai pas beaucoup de temps pour ça. Et à un moment donné, j'ai pensé: "Puisque je ne peux pas jouer à des jeux, qu'est-ce qui m'empêche d'étudier ce domaine?" Et si vous obtenez soudainement du temps libre, je prends une sorte de framework en java, C # ou C ++ qui peut écrire des jeux et faire quelque chose. Tout cela atteint rarement le produit final, mais je prends plaisir. Par conséquent, dans la liste de mes podcasts, il y en a aussi un qui parle de créer des jeux - "
Comment faire des jeux " - un bon podcast professionnel n'est pas de savoir comment "coder votre jeu super-méga-top", à savoir, le processus de production du jeu: comment l'ingénieur du son travaille, ce que fait le game designer, les caractéristiques du travail des artistes 2D / 3D, leurs processus, leurs outils, comment développer le jeu, comment le promouvoir. , : , , , . , . .
-:
— Java Python?— Java, .
— Data Science Data Engineering?— Data Engineering
— ?— It depends, , , .
— ?— - , .
— ?— . , , . , , .