Desarrolladores Perekrestok.ru. Lo que hacemos y a quién buscamos en equipos

Hoy queremos hablar sobre la contratación de personas en el equipo de TI del supermercado en línea Perekrestok.ru y cómo nuestro trabajo se organiza "dentro". El comercio minorista es una industria con sus propios detalles interesantes, y ahora depende de nuestro trabajo, si miles de personas recibirán productos todos los días. En esta publicación, damos la palabra a los líderes de nuestros equipos, que hablan sobre los proyectos, los métodos de trabajo de Perekrestok.ru, así como sobre cómo ingresar al equipo y qué pueden preguntar en la entrevista.



Sergey // iOS-teamlead



Todo lo que contaré se refiere al desarrollo de nuestra nueva aplicación de un supermercado en línea. Quiero señalar de inmediato que de una forma u otra, la gran mayoría de los desarrolladores comienzan su viaje en algún tipo de pequeña empresa o, en general, en la subcontratación. Esto les ayuda a crecer lo que se llama amplitud: después de todo, se enfrentan constantemente a muchas tareas muy diversas y una amplia gama de tecnologías.

Tenemos un equipo interno de productos, estamos hablando de crecimiento "en profundidad", por lo tanto, estamos acostumbrados a aquellos tipos que están interesados ​​en este tipo de crecimiento profesional.

Hacemos un producto que es utilizado por miles de personas: aquí hay suficientes historias de usuario y escenarios de comportamiento diferentes, por lo que los requisitos para el producto son serios. Por supuesto, un conjunto clásico para tales casos: confiabilidad, rendimiento, extensibilidad, modularidad, mantenibilidad y comprobabilidad.

Para garantizar todo esto, tomamos como base la arquitectura de Uber-RIB, dejando solo la interfaz del módulo y la DI completamente rediseñada, enrutando con diplinking y colocando un flujo de datos unidireccional en la parte superior. Si bien el vuelo es normal (e interesante), terminamos más.

Los planes son hacer una pantalla de depuración avanzada con soportes, diplinks y un catálogo de pantallas, cada uno de los cuales le permitirá ingresar rápidamente y cambiar moki o cambiar de estado. Sí, justo en tiempo de ejecución.

Para acelerar el trabajo, desarrollamos nuestro propio sistema de diseño. Prestamos mucha atención al buen funcionamiento de la interfaz de usuario. Apoyamos el tema "oscuro".

Nuestro equipo está construido de tal manera que no hay personas involucradas en algo completamente enfocado, dicen, Sasha es responsable de este botón, y Pasha solo es responsable de la arquitectura en su conjunto. De hecho, la situación es tal que todos están haciendo todo, pero dentro del marco de pautas predeterminadas y plantillas de módulos, de lo contrario nos deslizaríamos hacia la anarquía desde la democracia.

Ruslan // Android-teamlead



Uno de los puntos clave de desarrollo es el diseño de arquitectura de software. El precio de los errores cometidos en esta etapa está creciendo exponencialmente, por lo que nuestra prioridad es la flexibilidad del software, que nos permite cumplir con los requisitos comerciales y las necesidades del usuario.

Nos adherimos al enfoque MVI, que nos permite reducir el costo de depuración y prueba debido a la transparencia y la integridad del estado. La cosa es buena, pero hay un punto negativo: un umbral de entrada muy, muy alto para un nuevo empleado. Por lo tanto, nuestro objetivo es reducir este umbral. La "Regla de los 10 minutos" ayuda en esto, que establece que debemos explicar todos nuestros enfoques a un principiante en 10 minutos. Incluso si nunca ha encontrado un flujo de datos unidireccional.

Esto ayudó a revisar los enfoques estándar para la implementación de MVI y a desarrollar nuestra propia solución, que resultó más rápida y, lo que es más importante, más fácil.

¿Qué puedo decir sobre los equipos? Esta es una historia sobre el "amor", sobre trabajar juntos, por lo que no podemos permitirnos mirar a una persona simplemente como un conjunto de competencias específicas. El hombre en nuestro paradigma es su función del futuro, de quién puede convertirse en nuestro equipo.

Ene // Líder de equipo, Innopolis



Tenemos hasta ahora el equipo más joven de 10 personas, hemos estado en el proyecto desde diciembre de 2019, estamos en Innopolis. Tenemos diferentes tareas, somos un equipo multifuncional de facto que trabaja en el segmento B2B, back office y escaparates (front-end).

En general, antes de la creación de nuestro equipo, X5 ya tenía una oficina en Innopolis, aproximadamente un tercio de un piso del parque tecnológico, pero los equipos de nuestras otras redes estaban sentados allí. Hoy perekrestok.ru también está aquí.

Lo más notable (afecta la lejanía de Moscú) es el bajo nivel de inmersión del equipo en los proyectos. En primer lugar, era necesario crear rápidamente una serie de procesos en su equipo, al tiempo que los vinculaba con los generalmente aceptados en la empresa. Y también: ayuda de personal competente.

Pero hay un moño, el mismo moño de Innopolis es una ciudad de TI, por lo que no tuvimos problemas con el personal, el flujo de candidatos no solo fue grande, sino también de alta calidad.

Buscamos personas, comenzando por la pila (tenemos PHP, PostgeSQL, JS), y por el deseo de una persona no solo de sentarse y trabajar de manera monótona, sino de hacer un buen producto, de interesarnos en él. Idealmente, tenga su propia visión y capacidad para expresar un punto de vista sobre varios temas.

Ivan // teamlead equipo de integración de proyectos



Nuestro equipo existe desde hace aproximadamente seis meses, son los desarrolladores (backend + frontend), los probadores y el líder del equipo, ahora hemos alcanzado el nivel en el que podemos resolver cualquier tarea desde el principio hasta el final. A pesar de una corta experiencia, confiamos tanto en tareas comerciales como técnicas (relacionadas con la ventana principal, interacciones entre sistemas, organización de API, desglose en microservicios, optimización, refactorización). Estamos buscando personas que nos ayuden a resolver nuevos problemas y que no solo posean los conocimientos, las habilidades y el deseo necesarios para mejorar el producto, sino que también compartan nuestro enfoque de trabajo.

De vez en cuando, dependiendo del proyecto, los analistas de negocios (y los del sistema) también están conectados. Desarrollamos e implementamos proyectos relacionados con la interacción de nuestros sistemas (internos y externos), así como con los cambios en la experiencia del usuario.

Si está más claro, optamos por opt.perekrestok.ru (una plataforma para realizar pedidos corporativos, como se desprende de la URL), zoo.perekrestok.ru(un escaparate separado donde puedes recoger comida para tu amada bestia), introdujo un mecanismo para seleccionar productos similares. Y también hicieron una solicitud para pedir comida a pie, gracias a los chicos del equipo de desarrollo móvil. Además, simplificamos la elección de la dirección de entrega (solía ser más complicado, sí), cortamos ligeramente el monolito en varios microservicios y simplificamos significativamente el mecanismo de ensamblaje de liberación, que permite desplegar no una liberación por semana, sino diez, intentamos avanzar hacia una integración continua completa para que este proceso se hizo permanente y continuo.

En este momento estamos ocupados reemplazando la API para la aplicación móvil y rediseñando algunas páginas del sitio, refactorizando.

Alexander // sistema logístico líder de equipo



Estamos trabajando en tareas en la dirección de entrega y todo lo relacionado con esto. Desarrollamos una aplicación de Android con la cual el mensajero viaja y entrega pedidos. Usado por Kotlin y Java. Aquí se encuentran las grandes tareas de integración con cajas registradoras y sistemas para realizar pagos.

Nuestro trabajo se refiere a la aplicación de mensajería, las interfaces de usuario y el enrutamiento de pedidos; en general, hay suficientes tareas y son realmente diferentes. Por ejemplo, para la aplicación de mensajería, creamos la API REST, ahora las operaciones están en marcha para trabajar en pedidos, pagos, el libro de registro, mantenimiento de rutas y alertas de incidentes. Para logística y enrutamiento de pedidos: integración con sistemas TMS (Sistema de gestión de transporte) para crear automáticamente rutas y distribuir pedidos, así como herramientas de interfaz para ver y administrar rutas en el mapa, un sistema de contabilidad y envío de cajas con pedidos en almacenes desde carros y marchas hasta el automóvil mensajero. Y también una implementación detallada de la lógica de negocios para calcular el costo de entrega; también depende del área y del período de tiempo específico, además de llevar el pedido al área,en el que ya hay algún tipo de orden, más barato. Todo esto se tiene en cuenta.

En el futuro, implementaremos un servicio con una API para encapsular toda la lógica y la operación de entrega, transferirla de un monolito a microservicios. Una persona que quiera trabajar con nosotros en esto necesitará un buen conocimiento y comprensión de PHP, Laravel, PostgreSQL y (preferiblemente) golang. También habrá tareas de interfaz para trabajar con mapas y datos tabulares, aquí el candidato deberá tener un buen conocimiento de HTML, CSS, JS y algún tipo de marco a la Vue.

Planeamos escribir nuevas herramientas para trabajar con datos estadísticos y crear informes (postgreSQL, RabbitMQ, MongoDB, PHP) y llevar a cabo la integración con el bus de automóvil CAN BUS para tomar y procesar parámetros técnicos e indicadores de nuestra flota.

Dmitry // sistema de almacén teamlead team



Mi equipo está desarrollando el WMS (Sistema de gestión de almacenes). En su mayor parte, este es un desarrollo de back-end en PHP (Laravel), pero también estamos comenzando a usar Go.
Para la base de datos usamos PostgreSQL. Aquí están las tareas principales que resolvemos:

  • Gestión de almacenes: clasificación de suministros, colocación de mercancías en celdas, control de calidad, cancelaciones y más.
  • Procesamiento de pedidos: reserva, creación y nombramiento de tareas de selección, selección de mercancías por tareas.
  • Integración con BO (pedidos y datos maestros de mercancías) y sistema ERP X5 (precios, entregas, cancelaciones, etc.). Para la integración con BO usamos RabbitMQ.
  • Estamos desarrollando una aplicación para TSD en Android. La aplicación TSD nativa abre en webview una aplicación de una página escrita en jQuery y knockout.js.
  • Desarrollamos y mantenemos informes operativos para los empleados del almacén.

// -



¿Qué es un equipo de desarrollo de sitios web? Ahora, estos son dos equipos de especialistas en el campo de back-end y frontend, cuya tarea es desarrollar y respaldar el sitio principal perekrestok.ru y todos sus procesos comerciales internos, excepto la entrega, el almacén (WMS) y la API móvil (en la que se centran otros colegas).

Somos un equipo de especialistas con diversa experiencia y conocimiento: ya hay expertos líderes que ya se han formado, y aquellos que recientemente comenzaron su carrera en TI y pasaron de ser pasantes a ser desarrolladores. Nos cuidamos mutuamente, tanto en soluciones arquitectónicas como en codificación cruzada. No tenemos miedo de pedir ayuda a colegas si hay alguna duda sobre algo. Después de todo, tratamos de apoyarnos mutuamente y sabemos que, habiendo logrado un objetivo común, cada uno de nosotros mejorará tanto en la comprensión del producto como como un especialista técnico.

Lo que no puedo evitar es maravillarme y estar orgulloso de nosotros es lo fuerte que es la motivación en el equipo: a ninguno de nosotros le importa el destino del proyecto. Todos están interesados ​​en llevar la tarea a Producción y no dudan en comunicarse sobre todos los problemas con PM y QA.

Periódicamente revisamos nuestra hoja de ruta. Esto nos ayuda a comprender mejor hacia dónde nos estamos moviendo y a centrarnos en las tareas que generarán ganancias ahora o en el futuro.

Roman y Semyon te contarán más sobre sus propios equipos.

Roman // TeamLidera equipos de marketing y comercio



Nuestro equipo está formado por desarrolladores líderes y backend del equipo. Nos dedicamos principalmente al desarrollo de la parte de back-end de la ventana www.perekrestok.ru , su back office (CRM / CMS), así como al desarrollo de una versión B2B del sitio, opt.perekrestok.ru .

La mayoría de nuestros equipos son multifuncionales, por lo que las tareas se encuentran en diferentes áreas. Esto puede ser: búsqueda de productos, integración con sistemas internos y externos (ERP para soportar B2B, nuestro sistema de lealtad y pago WMS, B2C y B2B, recomendaciones para la compra o reemplazo de bienes), gestión y cálculo de campañas de marketing, mercado, notificación por correo electrónico / sms , informes analíticos, feeds de datos y similares.

Los siguientes nos ayudan a resolver la mayoría de las tareas: experiencia en marcos PHP modernos (Laravel, Symfony, Yii); brazos que crecen desde los hombros; capacidad de perfilar el trabajo de consultas PHP y SQL; comprender la diferencia entre la interacción de sistemas síncronos y asíncronos; voluntad de compartir conocimientos con colegas.

Somos erizos lo suficientemente audaces como para no tener miedo de SQL desnudo durante varios cientos de líneas (sí, existe tal cosa). A veces tenemos que ir al fondo del código heredado con poca esperanza y volver de él con la bandera de refactorización exitosa levantada. Una vez que aceleramos la actualización del índice de búsqueda de texto completo 365 veces de 1 hora a 10 segundos. Nos encanta perfilar y profundizar en las estadísticas de carga de aplicaciones. Y entendemos que tarde o temprano la cantidad de datos y usuarios excederá la marca crítica, y buscamos en los microservicios la posibilidad de escalar horizontalmente y reducir la fuerte conectividad de los nodos del sistema.

Semen // sitio web de teamlead y escaparates



¡Hola a todos! Soy un líder de equipo, trataré de contar un poco sobre el equipo, las tareas y el proyecto en sí, en el que participa nuestro equipo.

Estamos trabajando en un proyecto de escaparate ( sitio web perekrestok.ru ), también llamamos al proyecto "FD", que significa "oficina principal". Todo lo que enfrenta el usuario (comprador) es FD: búsqueda, catálogo, pedidos, cuenta personal, pago en línea, varios mecanismos de stock, recetas, pancartas, etc.

Hay mucha funcionalidad en el sitio, constantemente agregamos nuevas y modificamos las existentes. Contamos con un equipo de diseño y productos muy sólido, ellos monitorean las tendencias y generan tareas interesantes para nosotros. Además del desarrollo de nuevas funciones, estamos comprometidos con el rediseño, la creación de aterrizajes promocionales, la optimización y, por supuesto, la corrección de errores, así como la ayuda a otros equipos con una revisión de sus solicitudes de fusión para el proyecto de exhibición.

Para la interfaz, elegimos VueJS y lo hemos estado utilizando durante un año, estamos escribiendo todo lo nuevo en él y estamos reemplazando gradualmente el código anterior. En el backend, tratamos de evitar el uso de modelos ActiveRecord que son estándar para Laravel, pero están demasiado ansiosos por la CPU. La personalización de las consultas de la base de datos y el rechazo de Reflexiones innecesarias aumentan la productividad en un orden de magnitud, lo que afecta positivamente el tiempo hasta el primer byte.

Ahora nuestro equipo está trabajando en una épica: este es un pedido completamente rediseñado para navegadores en dispositivos móviles. Junto con otros equipos, estamos comprometidos con las tareas de optimizar y refinar la arquitectura de back-end para la posibilidad de escalado horizontal.

En el equipo, todos están muy involucrados en el proyecto, cuando ocurre algún tipo de emergencia, entonces todos los que pueden conectarse para resolver el problema.

Denis // teamlead tercera línea de soporte



Lidero el equipo de soporte técnico de la tercera línea, reclutamos a los muchachos aquí para las tareas de resolver rápidamente los problemas en la producción. Si algo sucede con el sitio, al principio, este negocio pasa a la primera y segunda línea, y luego, si se requiere la intervención de los programadores, vienen a nosotros. Nuestros muchachos tienen una competencia integral: cómo ver el sistema de colas, analizar errores en JS, PHP, analizar la transferencia de datos a servicios de terceros.

En el equipo que reclutamos personas desarrolladas de manera integral, como ya se mencionó, aquellos que son bastante resistentes al estrés, debe cambiar a menudo dependiendo de la urgencia y la prioridad, esto no debería ser estrés. Bueno, puedes imaginar cómo el apoyo y el estrés están relacionados en principio.

Los errores a los que se debe responder pueden ser lo más variados posible, desde los tipos más simples: "estilo o trazo no se dibujó", hasta el hecho de que "los códigos promocionales no funcionan" o se emitió el pedido, pero el almacén no lo recibió, por lo que debe rastrear el historial , o la cantidad allí difiere de la inicial: debe realizar un seguimiento de la ruta del pedido y comprender exactamente dónde y en qué etapa algo salió mal.

También hay cosas estándar como el error "500" o "404" ", necesita monitorearlas y responderlas.

Además de la resistencia al estrés, es importante en esas personas que sepan cómo trabajar con marcos, mientras entienden cómo funcionan y los entienden para que puedan leer el código y escribirlo maravillosamente. Para poder analizar información, no solo completar tareas, sino pensar en cómo afectará esto a los ecosistemas adyacentes.

En general, el desarrollo de la tercera línea es el núcleo del equipo, las personas que conocen todo el sistema y entienden cómo funciona todo, ven no solo su código, sino que también entienden dónde más pueden ocurrir errores. Dichas personas crecen rápidamente hasta convertirse en líderes de equipo; en un par de años, convertirse en líder de un junior es normal.

Rinat // lidera el equipo de desarrollo en Innopolis



Cuando reúno personas en un equipo, la selección no es para tareas específicas. Miro más a la experiencia y habilidades de cada especialista individualmente. Creo que cada miembro del equipo tiene su propia superpotencia, y estas habilidades se revelan mejor precisamente cuando se resuelven problemas comunes en un equipo. Esto puede considerarse un efecto de sinergia.

Fue en Perekrestok.ru donde realicé el sueño: reunir un equipo completamente desde cero, para equilibrarlo con las habilidades de todos. Los resultados muestran que vamos muy bien, uniéndonos activamente y ayudando a los principales equipos en Moscú.

Si observa los requisitos para cada participante que se presentan, este es un buen conocimiento en la pila de tecnología. Aprecio cuando una persona no solo realiza tareas en la frente, sino que puede justificar los pros y los contras de su decisión. También acojo con beneplácito la perspectiva amplia y la participación en los procesos.

Tenemos mucho trabajo con la base de datos, cada código se llama cientos de miles de veces al día. Debido a esto, las preguntas obligatorias al seleccionar un equipo es un conocimiento profundo de SQL y una buena preparación algorítmica de un candidato para escribir código que sea óptimo en complejidad.

Un requisito muy importante es la responsabilidad de nuestras decisiones. Porque en el comercio minorista, el precio del error puede ser muy alto, y todos deberían entenderlo.

Nuestro proyecto se está desarrollando activamente, todos los días batimos récords de asistencia y la cantidad de pedidos. Por lo tanto, necesitamos especialistas tanto en Moscú como en Innopolis. Los planes de la compañía son grandiosos, definitivamente no será aburrido.

Por cierto, dentro del proyecto se llama "XO". X - Crossroads, O - En línea.


All Articles