Habr, olá! É interessante quantos programadores e desenvolvedores descobriram ciência de dados ou engenharia de dados e estão construindo uma carreira de sucesso em big data. Ilya Markin, engenheira de software da
Directual , é apenas um dos desenvolvedores que mudaram para a engenharia de dados. Falamos sobre experiência no papel de líder de equipe, uma ferramenta favorita em engenharia de dados, Ilya falou sobre conferências e canais especializados interessantes de javistas, sobre o Directual do lado do usuário e técnico, sobre jogos de computador etc.
- Ilya, obrigado por reservar um tempo para se conhecer. Quero parabenizá-lo pela transição relativamente recente para uma nova empresa e pelo nascimento de uma filha, você tem muitas preocupações e preocupações. Imediatamente a primeira pergunta: o que havia de tão interessante que lhe foi oferecido trabalhar no Directual, que você deixou o DCA?- Provavelmente, primeiro preciso contar o que fiz na DCA. Entrei no DCA (Data-Centric Alliance) depois de concluir o programa
Big Data Specialist . Naquele momento, eu estava ativamente interessado no tópico big data e percebi que essa é exatamente a área em que quero desenvolver. Afinal, onde há muitos dados, há muitos problemas de engenharia interessantes que precisam ser resolvidos. O programa me ajudou a mergulhar rapidamente no ecossistema do mundo das grandes datas, onde obtive o conhecimento inicial necessário sobre o Hadoop, o YARN, o paradigma Map-Reduce, HBase, Spark, Flink e muito mais, e como funciona sob alta carga.
Fui convidado para uma entrevista pelos caras da DCA. O DCA é um dos principais participantes do mercado de RTB (
lances em tempo real é uma tecnologia de publicidade que permite organizar um leilão entre vendedores e compradores de publicidade em tempo real. O objeto de lances em um leilão on-line é o direito de exibir um anúncio para um usuário específico. O RTB baseia-se na precisão máxima de selecionar um visitante alvo - aprox. ed. ). O DCA teve uma alta cobertura dos usuários de Runet: cerca de 600 milhões de cookies, um cookie não é igual ao usuário - um usuário pode ter muitos cookies: navegadores diferentes, dispositivos diferentes. Recebemos dezenas de terabytes de dados em visitas a páginas da Internet por dia. Tudo isso foi processado e o cookie foi marcado em um conjunto específico de segmentos. Assim, pudemos identificar, por exemplo, amantes de gatos de 20 a 25 anos que moravam em Moscou, a fim de convidá-los a comprar comida para seu amado gato perto de casa. E existem muitos exemplos, existem exemplos muito simples, outros complexos. Sob o capô havia muito java, scala e C ++. Vim para a empresa como desenvolvedor e seis meses depois me tornei líder de equipe.
Saí do DCA no final da primavera, quando estava cansado da carga gerencial e comecei a procurar posições técnicas. Acabou que eu não conseguia escrever código por uma semana. Nos reunimos com a equipe, discutimos soluções interessantes, pensamos na arquitetura, pintamos tarefas. Quando tirei algo da lista para mim, às vezes não tinha tempo para concluir a tarefa, porque havia muito trabalho em equipe. Talvez o problema esteja em mim, e não consegui alocar o tempo corretamente.
E, no entanto, ganhei experiência útil. Em primeiro lugar, trabalhando com uma equipe e um negócio: é interessante estar na junção de desenvolvimento e negócios, quando você recebe uma solicitação para implementar algum tipo de funcionalidade, pensa, avalia as possibilidades. Muitas vezes, você precisa tomar uma decisão que será mais útil nessa situação específica: escreva algo rapidamente "no joelho" ou passe duas semanas ou mais, mas dê uma solução estável e normal.
- E que decisões foram mais frequentemente escolhidas - "no joelho" ou em duas semanas?- Um desenvolvedor no coração é sempre um perfeccionista, ele pode se engajar infinitamente em uma tarefa interessante, refazê-la e otimizá-la. Claro, você precisa saber quando parar. Foram escolhidas decisões que estavam em algum lugar no meio.
Em segundo lugar, finalmente, eu estava em uma posição em que você pode participar da tomada de decisões, estar ciente do que está acontecendo na empresa. Não gosto de apenas sentar e codificar na minha caixa, quero saber o que está acontecendo com o produto, como ele se mostra, como os usuários reagem.
Terceiro, comecei a realizar entrevistas, visitei "do outro lado das barricadas", por assim dizer. A primeira entrevista foi muito empolgante de conduzir, li o currículo e pensei: “Droga, agora a estrela chegará, e eu nem sei metade do que ele escreveu. Sobre o que eu vou falar com ele? E no processo de comunicação, você fica sóbrio e entende por que a demanda no mercado de pessoal de TI excede a oferta. É difícil encontrar um bom especialista, na maioria das vezes ele se senta onde está feliz com tudo. Um especialista pronto para suas tarefas e tecnologias específicas, que não precisarão ser retreinadas / retreinadas, irrealistas para encontrar, precisa conectar conexões, perguntar a amigos, conhecidos, colegas. Networking é muito importante aqui. Então, por exemplo, trouxe meu amigo para a empresa, em quem eu tinha certeza e com quem havia trabalhado anteriormente no local anterior. Eles também tiveram um recém-formado universitário que tinha pouca experiência trabalhando com nossa pilha, mas durante a entrevista eu percebi que ele era um cara muito promissor.
Muitas vezes, as pessoas trabalham com estruturas, e não com ferramentas específicas, acho que isso é um problema agora. Um candidato tem dois anos de experiência como desenvolvedor de Hadoop-Big Data, você começa a perguntar como o Hadoop funciona, em que partes ele consiste e que uma pessoa não sabe. Como o Hadoop fornece determinadas interfaces para simplificar o trabalho com ele, isso é suficiente para uma certa variedade de tarefas. E muitas vezes uma pessoa nem vai além dos limites dessas interfaces, ou seja, o código que obtém delas ainda. E o que acontece com o código compactado depois que ele o enviou ao sistema, a pessoa não se importa mais. Para muitos, isso é suficiente, eles não querem entender mais profundamente. Conduzir uma entrevista é uma excelente experiência, não apenas na contratação, mas também oferece confiança em si mesmo como especialista, o que é muito útil.
Por que Directual. Quando eu era coordenador do programa
Data Engineer , Artyom Marinov e Vasya Safronov, da Directual, vieram falar conosco. Artyom, a propósito, certa vez me entrevistou na DCA (novamente sobre os benefícios das redes) e agora me convidava para conversar. Eles precisavam de um rockman, mas estavam prontos para considerar uma javista que entendesse como a jvm funciona sob o capô. Então eu acabei aqui.
- O que foi tão interessante que você foi convidado a fazer no Directual? O que te atraiu?-
Directual é uma start-up ambiciosa que implementa todos os projetos anunciados, ou seja, faz o que promete. Tive o prazer de fazer parte da equipe e participar ativamente de todas as implementações. E, para mim, era importante que a empresa se pagasse trabalhando com os clientes e não viva com o dinheiro dos investidores.
Vou falar um pouco sobre o projeto, tanto do lado do usuário quanto do verso.
O slogan do Directual é "Deixe as pessoas criarem!". Essa é precisamente a idéia principal - permitir que qualquer pessoa que não tenha conhecimento e experiência em escrever código seja programada em nosso editor visual.
Como funciona: um usuário através de um navegador em nossa plataforma pode "rolar cubos" (ler - os nós funcionais de um processo) - ou seja, coletar um script que processará os dados recebidos. Os dados podem ser absolutamente qualquer. Os dados de saída processados podem ter uma ideia diferente - desde um relatório em PDF até o envio de uma notificação a vários administradores. Simplificando, qualquer processo de negócios pode ser programado em minutos, sem poder escrever código. A empresa trabalha em duas direções - soluções in a box para clientes corporativos, bem como uma opção em nuvem para uma ampla gama de usuários.
Para deixar mais claro como isso funciona, darei alguns exemplos.
Em qualquer loja on-line, existem vários estágios funcionais (“cubos” no nosso caso) - desde mostrar o produto ao cliente até adicioná-lo à cesta e organizar a entrega ao consumidor final. Usando a plataforma, podemos coletar e analisar dados: frequência das compras, tempo de conclusão, caminho do usuário etc., o que nos permitirá interagir mais estreitamente com os clientes (por exemplo, para desenvolver ofertas sazonais, descontos individuais). No entanto, isso não significa que nossa plataforma seja um designer para criar lojas online!
A Directual lida bem tanto com a automação dos processos de logística quanto com o trabalho de direção de RH de grandes empresas, e com a criação de qualquer outra solução tecnológica - de uma fazenda de estufas a uma casa inteligente. Na plataforma, por exemplo, você pode criar um bot de telegrama com apenas alguns cliques - quase todos os funcionários que escrevem o núcleo do sistema têm seu próprio bot. Alguém criou um bibliotecário assistente, alguém - um bot que ajuda a aprender palavras em inglês.
Em parte, "retiramos" o trabalho de alguns programadores, porque agora não há necessidade de procurar ajuda, preparar especificações técnicas ou verificar a execução do trabalho. Agora basta saber como sua empresa deve funcionar, você precisa entender os processos e fazer o resto.
- Ouça, mas há software para uma fazenda de hortaliças, por exemplo, por um longo tempo. Como você está diferente?- Sim, é verdade que existem soluções específicas para fazendas de hortaliças. No entanto, você não desenvolve esse software, compra uma solução pronta. Usando nossa plataforma, você pode personalizar o software para si mesmo, para seus negócios e tarefas, não é necessário contratar desenvolvedores.
- E o que exatamente você está fazendo?- A empresa está dividida em duas partes: o desenvolvimento do núcleo do nosso sistema e o escritório do projeto, que, de fato, é nosso cliente zero, se assim posso dizer. Estou desenvolvendo o núcleo do sistema.
Como eu disse, queremos dar a todos a oportunidade de trabalhar em nossa plataforma. Para isso, estamos trabalhando em nossa nuvem. E há muitos problemas. Qual é a dificuldade: por exemplo, existem 10 mil usuários, eles têm vários cenários de fluxo de dados e cada fluxo tem de 10 a 20 cubos de ramificação. Imagine a carga no ferro. E precisamos ser capazes de diferenciar claramente tudo, para que os processos de um cliente não interfiram nos processos de outro e não diminuem o trabalho. Se um cliente tem um problema que precisamos resolver, não devemos prejudicar o trabalho de outro cliente.
Como o usuário não precisa pensar em como tudo isso funciona, ele fica livre da escolha de armazenamento. Suportamos bancos de dados diferentes - podem ser bancos de dados relacionais e NoSql. Em geral, o sistema se comporta da mesma forma neles. Mas o cliente não precisa pensar nisso - ao criar uma conta, dependendo das tarefas, o sistema ajudará a fazer a escolha ideal de armazenamento.
Nossa plataforma é um bom exemplo de um sistema distribuído altamente carregado, e minha tarefa é escrever um bom código para que tudo funcione sem falhas. Como resultado, consegui o que queria: trabalho com as ferramentas que me interessam.
- E como você chegou ao campo de trabalhar com dados?- No meu primeiro local de trabalho, lidei principalmente com o mesmo tipo de tarefas em um segmento bastante restrito (read - parsil xml :)), e isso rapidamente me deixou entediado. Comecei a ouvir podcasts, percebi o tamanho do mundo, tantas tecnologias que todo mundo está falando - Hadoop, Big Data, Kafka. Então percebi que tinha que estudar e o programa "
Big Data Specialist " apareceu muito oportunamente. Como se viu, não falhei: o primeiro módulo (processamento e análise de logs da web: MapReduce, Hadoop, Machine Learning, sistemas DMP - nota do autor) foi muito útil para mim, eu só queria aprender isso, mas o segundo módulo é sobre sistemas de recomendação Só não sabia onde me candidatar, nunca toquei. E depois fui ao DCA para trabalhar com o que já me interessa. Lá, um colega me disse que, além do cientista de dados, também há um engenheiro de dados nessa área, ele disse quem era e como a empresa poderia ser útil.
Depois disso, você acabou de anunciar o lançamento piloto do programa
Data Engineer , é claro, eu decidi ir. Eu já conhecia alguns dos produtos que estavam no programa, mas para mim foi uma boa visão geral das ferramentas, estruturou tudo na minha cabeça e finalmente entendi com o que um engenheiro de dados deveria trabalhar.
- Mas a maioria das empresas não compartilha essas duas posições, dois perfis profissionais de uma pessoa, eles estão tentando procurar especialistas universais que coletem dados e os preparem, e eles criarão o modelo e serão levados ao produto sob carga alta. Em sua opinião, com o que isso está conectado e qual é a sua correção?- Gostei muito da performance de Pavel Klemenkov no programa Big Data Specialist (ele trabalhou na Rambler & Co naquela época), ele falou sobre o ML-Pipeline e mencionou programadores de matemática. Ele falou sobre esses especialistas universais que são, existem poucos e são muito caros. Portanto, a Rambler & Co está tentando desenvolvê-los em casa, para procurar caras fortes. É realmente difícil encontrar esses especialistas.
Acredito que se você realmente possui muitos dados e precisa de um trabalho completo com eles (e não apenas predizer o sexo e a idade de uma pessoa ou aumentar a probabilidade de um clique, por exemplo), essas devem ser duas pessoas diferentes. Aqui se aplica a regra 20/80: um cientista de dados é 80% de ciência de dados, 20% - ele pode escrever algo e colocá-lo no produto, e um engenheiro de dados - 80% de engenheiro de software e 20% ele sabe o que são modelos, como eles são aplicar e como contar, sem entrar em matemática.
- Conte-nos sobre a descoberta mais importante para você em ciência de dados \ engenharia de dados? Talvez o uso de alguma ferramenta / algoritmo tenha mudado radicalmente sua abordagem para resolver problemas?- Provavelmente o fato de que, com dados suficientes, você pode extrair muitas informações úteis para suas ações futuras. Mesmo que às vezes você não saiba o que são esses dados anônimos brutos, ainda poderá fazer algo com base nisso: divida-os em grupos, encontre alguns recursos, simplesmente obtenha algumas regularidades usando métodos matemáticos em números. É verdade que os analistas também podiam fazer isso antes, mas o fato de agora se tornar mais acessível aumentou o poder do ferro - é legal! O limite para entrada da ciência de dados agora diminuiu; você não precisa saber muito para poder tentar fazer algo em algumas ferramentas.
- Qual foi o maior arquivo de empregos? Que lição você aprendeu disso?- Provavelmente, vou incomodá-lo, nunca tive isso antes, talvez à minha frente. Sinceramente, pensei, lembrei, mas não havia nada assim, muito chato. É como os administradores: se você não deixou cair a comida, não limpou a base, não é um administrador real. Bem, provavelmente não sou um desenvolvedor de verdade.
- Quais ferramentas de engenharia de dados você usa com mais frequência e por quê? Qual é a sua ferramenta favorita?Eu gosto muito de Apache Kafka. Uma ferramenta interessante, tanto em termos da funcionalidade que ela fornece quanto em engenharia. As especificidades do trabalho de Kafka estão na estreita relação entre o código do programa e o sistema operacional no qual ele trabalha - Linux (leia - “ele funciona rápido e bem”). Ou seja, várias funções nativas do linux-a são usadas lá, o que permite obter um excelente desempenho, mesmo em hardware fraco. Acredito que em nossa área deva ser assim - não basta conhecer a linguagem de programação e algumas estruturas para isso. Se você deseja criar algo realmente interessante, que será agradável de usar não apenas para você, mas também para outros, precisará aprofundar-se e saber como seu código funciona no sistema, no hardware.
- Em quais conferências você participa? Quais colunas de perfil \ blogs \ tg canais você lê?- Como eu disse, tudo começou com podcasts, ou seja, com o
Debriefing - de caras do mundo java.
Também há
https://radio-t.com - um podcast legal em russo sobre tópicos de alta tecnologia e tecnologia, um dos mais populares (se não me engano) em nosso idioma.
Eu sigo as notícias do
JUG.ru , os caras fazem conferências hardcore legais, organizam reuniões. Tento ir também a Moscou, em São Petersburgo. A conferência java principal é o Jpoint em Moscou (também conhecido como Joker em São Petersburgo), eu sempre vou ao Jpoint ou assisto online.
Eu olho para o que a
Confluent está fazendo - caras que ganham suporte corporativo para o kafka e são os principais responsáveis por ele. Eles também desenvolvem ferramentas úteis em torno do Apache Kafka no código-fonte. Eu tento usar suas versões.
O blog de tecnologia da Netflix sobre mídia é um recurso interessante sobre soluções de uma das maiores plataformas para fornecer conteúdo de vídeo para um usuário. Sistemas de alta carga e distribuídos pelos mais “eu não quero”)
Canais de telegrama:
https://t.me/hadoopusers - um local onde você pode se comunicar em nosso idioma sobre tópicos de engenharia de dados;
https://t.me/jvmchat - pessoas do mundo java, discutem seus problemas, seus problemas e muito mais.
"Talvez algo mais para a alma?"- Cresci em jogos de computador, costumava jogar muito ativamente, agora não tenho muito tempo para isso. E em algum momento pensei: "Como não posso jogar, o que me impede de estudar esta área?" E se de repente você tiver tempo livre, eu uso algum tipo de framework em java, C # ou C ++ que pode escrever jogos e fazer alguma coisa. Tudo isso raramente chega ao produto final, mas tenho prazer. Portanto, na lista dos meus podcasts, há também um que fala sobre a criação de jogos - “
Como fazer jogos ” - um bom podcast profissional não é sobre como “codificar seu jogo super top-mega”, ou seja, sobre o processo de produção do jogo: como o engenheiro de som trabalha, o que o designer do jogo faz, os recursos do trabalho dos artistas 2D / 3D, sobre seus processos, ferramentas, como desenvolver o jogo, como promovê-lo. , : , , , . , . .
-:
— Java Python?— Java, .
— Data Science Data Engineering?— Data Engineering
— ?— It depends, , , .
— ?— - , .
— ?— . , , . , , .