Habr, hola! Es interesante cuántos programadores y desarrolladores han descubierto la ciencia de datos o la ingeniería de datos, y están construyendo una carrera exitosa en big data. Ilya Markin, ingeniero de software en
Directual , es solo uno de los desarrolladores que cambió a la ingeniería de datos. Hablamos sobre la experiencia en el rol de líder de equipo, una herramienta favorita en ingeniería de datos, Ilya habló sobre conferencias y canales de perfil interesantes de javists, sobre Directual desde el lado del usuario y técnico, sobre juegos de computadora, etc.
- Ilya, gracias por tomarte el tiempo de conocerte. Te felicito por la transición relativamente reciente a una nueva compañía, y por el nacimiento de una hija, tienes muchas preocupaciones y preocupaciones. Inmediatamente la primera pregunta: ¿qué fue tan interesante que le ofrecieron trabajar en Directual, que dejó DCA?- Probablemente, primero necesito decirte lo que hice en DCA. Ingresé a DCA (Data-Centric Alliance) después de completar el programa
Big Data Specialist . En ese momento, estaba activamente interesado en el tema de big data y me di cuenta de que esta es exactamente el área en la que quiero desarrollarme. Después de todo, donde hay muchos datos, hay muchos problemas de ingeniería interesantes que deben resolverse. El programa me ayudó a sumergirme rápidamente en el ecosistema del mundo de las grandes citas, donde obtuve el conocimiento inicial necesario sobre Hadoop, YARN, el paradigma Map-Reduce, HBase, Spark, Flink y mucho más, y cómo funciona bajo una gran carga.
Fui invitado para una entrevista por los chicos de DCA. DCA es un participante importante en el mercado de RTB (
Real Time Bidding es una tecnología publicitaria que le permite organizar una subasta entre vendedores y compradores de publicidad en tiempo real. El objetivo de ofertar en una subasta en línea es el derecho de mostrar un anuncio a un usuario específico. RTB se basa en la máxima precisión de la selección de un visitante objetivo - aprox. ed. ). DCA tenía una alta cobertura de usuarios de Runet: alrededor de 600 millones de cookies, una cookie no es igual al usuario; un usuario puede tener muchas cookies: diferentes navegadores, diferentes dispositivos. Recibimos docenas de terabytes de datos en visitas a páginas de Internet por día. Todo esto se procesó y la cookie se marcó en un conjunto específico de segmentos. Por lo tanto, podríamos identificar, por ejemplo, los amantes de los gatos de 20 a 25 años que viven en Moscú, a fin de invitarlos a comprar comida para su amado gato cerca de la casa. Y hay muchos ejemplos de este tipo, hay muy simples, hay complejos. Debajo del capó había mucha java, scala y C ++. Llegué a la empresa como desarrollador, y seis meses después me convertí en un líder de equipo.
Dejé DCA a fines de la primavera, para ese momento ya estaba cansado de la carga gerencial y comencé a buscar posiciones técnicas. Resultó que no pude escribir código durante una semana. Nos reunimos con el equipo, discutimos soluciones interesantes, pensamos en la arquitectura, pintamos tareas. Cuando tomé algo de la lista para mí, a veces no tuve tiempo para completar la tarea, porque había muchos casos de liderazgo de equipo. Tal vez el problema está en mí y no pude asignar el tiempo correctamente.
Y sin embargo, he adquirido experiencia útil. En primer lugar, trabajar con un equipo y una empresa: es interesante estar en la unión del desarrollo y los negocios, cuando recibe una solicitud para implementar algún tipo de funcionalidad, piensa, evalúa las posibilidades. A menudo, debe tomar una decisión que será más útil en esta situación particular: escriba algo rápidamente "sobre la rodilla" o pase 2 semanas, o incluso más, pero ofrezca una solución normal que funcione de manera estable.
- ¿Y qué decisiones se eligieron con mayor frecuencia: "en la rodilla" o en 2 semanas?- Un desarrollador de corazón siempre es un perfeccionista, puede participar sin cesar en alguna tarea interesante, rehacerla, optimizarla. Por supuesto, necesitas saber cuándo parar. Se eligieron decisiones que estaban en algún punto intermedio.
En segundo lugar, yo, finalmente, estaba en una posición en la que puede participar en la toma de decisiones, estar al tanto de lo que está sucediendo en la empresa. No me gusta simplemente sentarme y codificar en mi caja, quiero saber qué está sucediendo con el producto, cómo se muestra, cómo reaccionan los usuarios.
En tercer lugar, comencé a realizar entrevistas, visité "al otro lado de las barricadas", por así decirlo. La primera entrevista fue muy emocionante de llevar a cabo, leí el currículum y pensé: "Maldición, ahora vendrá la estrella, y ni siquiera sé la mitad de lo que escribió. ¿De qué voy a hablar con él? Y en el proceso de comunicación, te vuelves sobrio y entiendes por qué la demanda en el mercado de personal de TI excede la oferta. Es difícil encontrar un buen especialista, la mayoría de las veces se sienta donde está contento con todo. Un especialista ya preparado para sus tareas y tecnologías específicas, que no necesitará ser reentrenado / reentrenado, poco realista para encontrar, tiene que conectar conexiones, preguntar amigos, conocidos, colegas. La creación de redes es muy importante aquí. Entonces, por ejemplo, traje a mi amigo a la compañía, en quien estaba seguro y con quien había trabajado anteriormente en el lugar anterior. También tomaron un recién graduado universitario que tenía poca experiencia trabajando con nuestro grupo, pero durante la entrevista me di cuenta de que era un tipo muy prometedor.
A menudo las personas trabajan con marcos, y no con herramientas específicas, creo que este es un problema en este momento. Un candidato viene con dos años de experiencia como desarrollador de Hadoop-Big Data, comienza a preguntarse cómo funciona Hadoop, en qué partes consiste y una persona no lo sabe. Dado que Hadoop proporciona ciertas interfaces para simplificar el trabajo con él, esto es suficiente para un cierto rango de tareas. Y a menudo una persona ni siquiera va más allá de los límites de estas interfaces, es decir, el código que obtiene de estas todavía. Y lo que sucede con el código empaquetado después de que lo envió al sistema, a la persona ya no le importa. Para muchos, esto es suficiente, no quieren entender más profundamente. Realizar una entrevista es una experiencia excelente, no solo en la contratación, sino que también brinda confianza en ti mismo como especialista, lo cual es muy útil.
¿Por qué directo? Cuando era el coordinador del programa
Ingeniero de datos , Artyom Marinov y Vasya Safronov de Directual vinieron a hablar con nosotros. Artyom, por cierto, una vez me entrevistó en DCA (nuevamente sobre los beneficios de las redes) y ahora me invitó a hablar. Necesitaban un rockman, pero estaban listos para considerar a un javista que entiende cómo funciona jvm bajo el capó. Así que terminé aquí.
- ¿Qué fue tan interesante que te ofrecieron hacer en Directual? ¿Qué te atrajo?-
Directual es una nueva empresa ambiciosa que implementa todos los proyectos anunciados, es decir, hace lo que promete. Me complació formar parte del equipo y participar activamente en todas las implementaciones. Y para mí fue importante que la empresa se pague a sí misma trabajando con los clientes y no viva con el dinero de los inversores.
Hablaré un poco sobre el proyecto tanto desde el lado del usuario como desde el lado posterior.
El lema de Directual es "¡Deja que la gente cree!". Esta es precisamente la idea principal: permitir que cualquier persona que no tenga conocimiento y experiencia en escribir código pueda programar en nuestro editor visual.
Cómo funciona: un usuario a través de un navegador en nuestra plataforma puede "rodar cubos" (leer, los nodos funcionales de un proceso), es decir, recopilar un script que procesará los datos entrantes. Los datos pueden ser absolutamente cualquiera. Los datos de salida procesados pueden tener una idea diferente, desde un informe en PDF hasta el envío de una notificación a varios administradores. En pocas palabras, cualquier proceso de negocio se puede programar en minutos, sin poder escribir código. La compañía trabaja en dos direcciones: soluciones en caja para clientes corporativos, así como una opción en la nube para una amplia gama de usuarios.
Para aclarar cómo funciona esto, daré algunos ejemplos.
En cualquier tienda en línea hay una serie de etapas funcionales ("cubos" en nuestro caso), desde mostrar el producto al cliente hasta agregarlo a la cesta y organizar la entrega al consumidor final. Con la plataforma, podemos recopilar y analizar datos: la frecuencia de las compras, el tiempo en que se realizaron, la ruta del usuario, etc., lo que nos permitirá interactuar más estrechamente con los clientes (por ejemplo, desarrollar ofertas de temporada, descuentos individuales). Sin embargo, esto no significa que nuestra plataforma sea un diseñador para crear tiendas en línea.
Directual se adapta bien tanto a la automatización de los procesos logísticos y al trabajo de la dirección de recursos humanos de las grandes empresas, como a la creación de cualquier otra solución tecnológica, desde una granja de invernadero hasta un hogar inteligente. En la plataforma, por ejemplo, puede crear un bot de telegramas con unos pocos clics: casi todos los empleados que escriben el núcleo del sistema tienen su propio bot. Alguien hizo un bibliotecario asistente, alguien, un bot que ayuda a aprender palabras en inglés.
En parte, "eliminamos" el trabajo de algunos programadores, porque ahora no hay necesidad de recurrir a ellos para obtener ayuda, preparar especificaciones técnicas o verificar la ejecución del trabajo. Ahora es suficiente saber cómo debe funcionar su negocio, debe comprender los procesos en sí mismos y nosotros hacemos el resto.
- Escuche, pero hay software para una granja de vegetación, por ejemplo, durante mucho tiempo. Como eres diferente- Sí, es cierto, existen soluciones específicas para granjas verdes. Sin embargo, usted no desarrolla este software usted mismo, compra una solución preparada. Usando nuestra plataforma, puede personalizar el software para usted, para su negocio y sus tareas, no necesita contratar desarrolladores.
- ¿Y qué haces exactamente?- La compañía se divide en 2 partes: el desarrollo del núcleo de nuestro sistema y la oficina del proyecto, que, de hecho, es nuestro cliente cero, si puedo decirlo. Estoy desarrollando el núcleo del sistema.
Como dije, queremos darle a cualquiera la oportunidad de trabajar en nuestra plataforma. Para esto, estamos trabajando en nuestra nube. Y hay muchos problemas. Cuál es la dificultad: por ejemplo, hay 10 mil usuarios, tienen varios escenarios de flujo de datos y cada flujo tiene 10-20 cubos de rama. Imagina la carga sobre la plancha. Y debemos ser capaces de diferenciar claramente todo para que los procesos de un cliente no interfieran con los procesos de otro y no ralenticen el trabajo. Si un cliente tiene un problema que necesitamos resolver, entonces no debemos dañar el trabajo de otro cliente.
Dado que el usuario no necesita pensar en cómo funciona todo bajo el capó, está libre de la opción de almacenamiento. Admitimos diferentes bases de datos: pueden ser tanto bases de datos relacionales como NoSql. En general, el sistema se comporta igual en ellos. Pero el cliente no necesita pensar en ello: al crear una cuenta, dependiendo de las tareas, el sistema ayudará a elegir el almacenamiento de manera óptima.
Nuestra plataforma es un buen ejemplo de un sistema distribuido altamente cargado, y mi tarea es escribir un buen código para que todo funcione sin fallas. Como resultado, aquí obtuve lo que quería: trabajo con esas herramientas que me interesan.
- ¿Y cómo llegaste al campo de trabajar con datos?- En mi primer lugar de trabajo, me ocupé principalmente del mismo tipo de tareas en un segmento bastante estrecho (léase - parsil xml :)), y rápidamente me aburrí. Comencé a escuchar podcasts, me di cuenta de lo grande que es el mundo, tantas tecnologías de las que todos hablan: Hadoop, Big Data, Kafka. Entonces me di cuenta de que tenía que estudiar, y el programa "
Especialista en Big Data " apareció muy oportunamente. Al final resultó que no fallé: el primer módulo (procesamiento y análisis de registros web: MapReduce, Hadoop, Machine Learning, sistemas DMP - nota del autor) fue muy útil para mí, solo quería aprender esto, pero el segundo módulo trata sobre sistemas de recomendación Simplemente no sabía dónde aplicar, nunca lo toqué. Y luego fui a DCA para trabajar con lo que ya me interesa. Allí, un colega me dijo que además del científico de datos, también hay un ingeniero de datos en esta área, me dijo quién era y cómo la compañía podría ser útil.
Después de eso, acabas de anunciar el lanzamiento piloto del programa
Ingeniero de datos , por supuesto, decidí ir. Ya conocía algunos de los productos que estaban en el programa, pero para mí fue una buena descripción de las herramientas, estructuré todo en mi cabeza, finalmente entendí con qué debería trabajar un ingeniero de datos.
- Pero la mayoría de las compañías no comparten estas dos posiciones, dos perfiles profesionales de una persona, están tratando de buscar especialistas universales que recopilen datos y los preparen, y harán el modelo, y serán llevados al producto bajo alta carga. ¿Qué piensas, con qué está conectado esto y qué tan correcto es?- Realmente me gustó el desempeño de Pavel Klemenkov en el programa Big Data Specialist (trabajó en Rambler & Co en ese entonces), habló sobre ML-Pipeline y mencionó programadores de matemáticas. Habló sobre especialistas tan universales que son, hay pocos y son muy caros. Por lo tanto, Rambler & Co está tratando de desarrollarlos en casa, para buscar hombres fuertes. Es realmente difícil encontrar tales especialistas.
Creo que si realmente tiene muchos datos y necesita un trabajo minucioso con ellos (y no solo predecir el género y la edad de una persona o aumentar la probabilidad de un clic, por ejemplo), entonces estas deberían ser dos personas diferentes. Aquí se aplica la regla 20/80: un científico de datos tiene un 80% de ciencia de datos, un 20%: puede escribir algo y ponerlo en el producto, y un ingeniero de datos: un 80% de ingeniero de software y un 20% sabe qué modelos son, cómo aplicar y cómo contar, sin entrar en matemáticas.
- Cuéntanos sobre el descubrimiento más importante para ti en ciencia de datos / ingeniería de datos. ¿Quizás el uso de alguna herramienta / algoritmo cambió radicalmente su enfoque para resolver problemas?- Probablemente el hecho de que, teniendo suficientes datos, puede extraer mucha información útil para sus acciones futuras. Incluso si a veces no sabe cuáles son estos datos anónimos sin procesar, aún puede hacer algo en base a ellos: dividirse en grupos, encontrar algunas características, simplemente derivar algunas regularidades utilizando métodos matemáticos en números. Es cierto que los analistas también podían hacer esto antes, pero el hecho de que ahora se ha vuelto más accesible ha aumentado el poder del hierro: ¡es genial! El umbral para ingresar ciencia de datos ahora ha disminuido; no necesita saber mucho para poder intentar hacer algo en algunas herramientas.
- ¿Cuál fue el archivo de trabajo más grande? ¿Qué lección has aprendido de esto?- Probablemente, te molestaré, no he tenido esto antes, tal vez delante de mí. Honestamente pensé, recordé, pero no había nada de eso, muy aburrido. Es como los administradores: si no "dejó caer la comida", no "limpió la base", no es un administrador real. Bueno, probablemente no soy un desarrollador real.
- ¿Qué herramientas de ingeniería de datos usa con más frecuencia y por qué? ¿Cuál es tu herramienta favorita?- Me gusta mucho Apache Kafka. Una herramienta genial tanto en términos de la funcionalidad que proporciona como con la ingeniería. Los detalles del trabajo de Kafka radican en la estrecha relación entre el código del programa y el sistema operativo en el que funciona: Linux (léase: "funciona rápido y bien"). Es decir, se utilizan varias funciones nativas de Linux-a, que le permiten obtener un rendimiento excelente incluso en hardware débil. Creo que en nuestra área debería ser así, no basta con conocer el lenguaje de programación y un par de marcos para ello. Si desea crear algo realmente genial, que sea agradable de usar no solo para usted, sino también para otros, entonces necesita profundizar y saber cómo funciona su código en el sistema, en el hardware.
- ¿A qué conferencias asistes? ¿Qué columnas de perfil \ blogs \ tg canales lees?- Como dije, todo comenzó con podcasts, es decir, con
Debriefing , de chicos del mundo java.
También hay
https://radio-t.com , un excelente podcast en ruso sobre temas de alta tecnología y tecnología informática, uno de los más populares (si no me equivoco) en nuestro idioma.
Sigo las noticias de
JUG.ru , los chicos hacen conferencias geniales, organizan reuniones. Trato de ir a aquellos en Moscú, en San Petersburgo, también. La principal conferencia de Java es Jpoint en Moscú (también conocido como Joker en San Petersburgo), siempre voy a Jpoint o miro en línea.
Miro lo que está haciendo
Confluent : los tipos que obtienen apoyo corporativo para kafka y son los principales encargados de hacerlo. También desarrollan herramientas útiles en torno a Apache Kafka en código abierto. Intento usar sus versiones.
El blog de tecnología de Netflix en medio es un recurso genial sobre soluciones de una de las plataformas más grandes para entregar contenido de video a un usuario. Sistemas de alta carga y distribuidos por la mayoría "No quiero")
Canales de Telegram:
https://t.me/hadoopusers : un lugar donde puede comunicarse en nuestro idioma sobre temas de ingeniería de datos;
https://t.me/jvmchat - gente del mundo de Java, discuta sus problemas, sus problemas y más.
"Tal vez algo más para el alma?"- Crecí en juegos de computadora, solía jugar muy activamente, ahora no tengo mucho tiempo para eso. Y en algún momento pensé: "Dado que no puedo jugar, ¿qué me impide estudiar esta área?" Y si de repente tienes tiempo libre, tomo algún tipo de marco en java, C # o C ++ que puede escribir juegos y hacer algo. Todo esto rara vez llega al producto final, pero me da placer. Por lo tanto, en la lista de mis podcasts también hay uno que habla sobre la creación de juegos: "
Cómo hacer juegos ": un buen podcast profesional no se trata de cómo "codificar su juego super-mega-top", es decir, sobre el proceso de producción del juego: cómo el ingeniero de sonido trabaja, lo que hace el diseñador del juego, las características del trabajo de los artistas 2D / 3D, sobre sus procesos, herramientas, cómo desarrollar el juego, cómo promoverlo. Esta primavera, por primera vez, estuve en una conferencia de juegos, fue genial: no es que me sintiera a gusto, pero resultó ser un mundo completamente diferente, me gustó. Me alegró saber que en el mundo del juego también están interesados activamente en una gran cita. En las conversaciones sobre estos temas, me sentí muy confiado.
-:
— Java Python?— Java, .
— Data Science Data Engineering?— Data Engineering
— ?— It depends, , , .
— ?— - , .
— ?— . , , . , , .