Desenvolvedores Perekrestok.ru. O que fazemos e quem procuramos em equipes

Hoje, queremos falar sobre a contratação de pessoas na equipe de TI do supermercado online Perekrestok.ru e como nosso trabalho é organizado “dentro”. O varejo é um setor com suas próprias especificidades interessantes e agora depende do nosso trabalho, se milhares de pessoas receberão produtos todos os dias. Neste post, damos a palavra aos líderes de equipe, eles falam sobre projetos do Perekrestok.ru, métodos de trabalho, bem como como entrar na equipe e o que eles podem pedir na entrevista.



Sergey // Equipe do iOS



Tudo o que vou dizer diz respeito ao desenvolvimento de nossa nova aplicação de um supermercado online. Quero observar imediatamente que, de uma forma ou de outra, a grande maioria dos desenvolvedores começa sua jornada em algum tipo de pequena startup ou em geral na terceirização. Isso os ajuda a crescer o que é chamado de amplitude - afinal, eles são constantemente confrontados com muitas tarefas muito diversas e com uma ampla gama de tecnologias.

Temos uma equipe interna de produtos, estamos falando de crescimento "em profundidade", por isso estamos acostumados a quem está interessado nesse tipo de crescimento profissional.

Nós fabricamos um produto que é usado por milhares de pessoas - há histórias de usuários e cenários comportamentais diferentes suficientes, portanto, os requisitos para o produto são sérios. Obviamente, um conjunto clássico para esses casos: confiabilidade, desempenho, extensibilidade, modularidade, capacidade de manutenção e testabilidade.

Para garantir tudo isso, tomamos a arquitetura do Uber-RIBs como base, deixando apenas a interface do módulo e o DI completamente reprojetado, roteando com diplinking e colocando um fluxo de dados unidirecional no topo. Enquanto o vôo é normal (e interessante), terminamos ainda mais.

Os planos são criar uma tela de depuração avançada com suportes, diplinks e um catálogo de telas, em cada uma das quais você pode entrar rapidamente e alterar os estados mokee ou switch. Sim, em tempo de execução.

Para acelerar o trabalho, desenvolvemos nosso próprio sistema de design. Prestamos muita atenção ao bom funcionamento da interface do usuário. Apoiamos o tema "sombrio".

Nossa equipe é criada de tal maneira que não há pessoas envolvidas em algo completamente focado, eles dizem que Sasha é responsável por esse botão e Pasha apenas pela arquitetura como um todo. De fato, a situação é tal que todo mundo está fazendo tudo, mas dentro da estrutura de diretrizes e modelos de módulos pré-determinados, caso contrário, deslizaríamos para a anarquia da democracia.

Ruslan // Equipe do Android



Um dos principais pontos de desenvolvimento é o design da arquitetura de software. O preço dos erros cometidos nesse estágio está aumentando exponencialmente, portanto, nossa prioridade é a flexibilidade do software, o que nos permite atender aos requisitos de negócios e às necessidades dos usuários.

Aderimos à abordagem MVI, que nos permite reduzir o custo de depuração e teste devido à transparência e integridade do estado. A coisa é boa, mas há um sinal de menos: um limiar de entrada muito, muito alto para um novo funcionário. Portanto, nosso objetivo é diminuir esse limite. A “Regra dos 10 minutos” ajuda nisso, que afirma que devemos explicar todas as nossas abordagens para um iniciante em 10 minutos. Mesmo que ele nunca tenha encontrado um fluxo de dados unidirecional.

Isso ajudou a revisar as abordagens padrão da implementação do MVI e a desenvolver nossa própria solução, que ficou mais rápida e, mais importante, mais fácil.

O que posso dizer sobre as equipes. Esta é uma história sobre "amor", sobre trabalhar juntos, por isso não podemos dar ao luxo de olhar para uma pessoa simplesmente como um conjunto de competências específicas. O homem do nosso paradigma é sua função do futuro, de quem ele pode se tornar em nossa equipe.

Jan // Líder da equipe, Innópolis



Até agora, temos a equipe mais jovem de 10 pessoas, estamos no projeto desde dezembro de 2019, estamos sediados em Innópolis. Temos tarefas diferentes, somos uma equipe multifuncional de fato trabalhando no segmento B2B, back office e montras (front-end).

Em geral, antes da criação de nossa equipe, o X5 já tinha um escritório em Innopolis, cerca de um terço de um andar do parque tecnológico, mas equipes de nossas outras redes estavam lá. Hoje, o perekrestok.ru também está aqui.A

coisa mais notável (o afastamento de Moscou afeta) é o baixo nível de imersão da equipe nos projetos. Antes de tudo, era necessário criar rapidamente vários processos em sua equipe, vinculando-os aos geralmente aceitos na empresa. E também - pessoal competente ajuda.

Mas há um coque, o próprio coque de Innopolis é uma cidade de TI, por isso não tivemos problemas com o pessoal, o fluxo de candidatos não era apenas grande, mas também de alta qualidade.

Procuramos pessoas, começando pela pilha (temos PHP, PostgeSQL, JS) e pelo desejo de uma pessoa não apenas de sentar e trabalhar monotonamente, mas de fazer um bom produto, de se interessar por ele. Idealmente, tenha sua própria visão e capacidade de expressar um ponto de vista sobre várias questões.

Ivan // equipe de integração do projeto líder



Nossa equipe existe há cerca de seis meses, são os desenvolvedores (back-end + front-end), testadores e o líder da equipe, agora alcançamos o nível em que podemos resolver qualquer tarefa do começo ao fim. Apesar de uma curta experiência, temos a confiança de tarefas comerciais e técnicas (relacionadas à janela principal, interações entre sistemas, organização de APIs, divisão em microsserviços, otimização, refatoração). Estamos à procura de pessoas que nos ajudem a resolver novos problemas e não apenas possuam o conhecimento, as habilidades e o desejo necessários para melhorar o produto, mas também compartilhem nossa abordagem de trabalho.

De tempos em tempos, dependendo do projeto, analistas de negócios (e sistemas) também são conectados. Desenvolvemos e implementamos projetos relacionados à interação de nossos sistemas (internos e externos), bem como a mudanças na experiência do usuário.

Se for mais claro, optamos por opt.perekrestok.ru (uma plataforma para fazer pedidos corporativos, como fica claro no URL), zoo.perekrestok.ru(uma vitrine separada onde você pode pegar comida para sua amada besta), introduziu um mecanismo para selecionar produtos semelhantes. E eles também fizeram um pedido para encomendar comida a pé, graças aos funcionários da equipe de desenvolvimento móvel. Além disso, simplificamos a escolha do endereço de entrega (costumava ser mais complicado, sim), serramos levemente o monólito em vários microsserviços e simplificamos significativamente o mecanismo de montagem de lançamentos, que permite lançar não um lançamento por semana, mas dez, tentamos avançar para a integração contínua completa para que esse processo tornou-se permanente e contínuo.

No momento, estamos ocupados substituindo a API do aplicativo móvel e redesenhando algumas páginas do site, refatorando.

Alexander // sistema de logística líder



Estamos trabalhando em tarefas na direção da entrega e tudo relacionado a isso. Desenvolvemos um aplicativo Android com o qual o correio viaja e entrega pedidos. Usado por Kotlin e Java. Aqui estão as grandes tarefas de integração com caixas registradoras e sistemas para efetuar pagamentos.

Nosso trabalho diz respeito ao aplicativo de correio, interfaces de usuário e roteamento de pedidos - em geral, há tarefas suficientes e são realmente diferentes. Por exemplo, para o aplicativo de courier, criamos a API REST, agora estão em andamento operações para trabalhar com pedidos, pagamentos, diário de bordo, manutenção de rotas e alertas de incidentes. Para logística e roteamento de pedidos - integração com os sistemas TMS (Sistema de gerenciamento de transporte) para criar automaticamente rotas e distribuir pedidos, bem como ferramentas de interface para visualizar e gerenciar rotas no mapa, um sistema para caixas de contabilidade e expedição com pedidos em armazéns de carrinhos e marchas para o carro correio. E também uma implementação detalhada da lógica de negócios para calcular o custo de entrega - isso também depende da área e do período específico, além de levar o pedido à área,em que já existe algum tipo de pedido, mais barato. Tudo isso é levado em consideração.

No futuro, implementaremos um serviço com uma API para encapsular toda a lógica e operação de entrega, transferi-lo de um monólito para microsserviços. Uma pessoa que queira trabalhar conosco nisto precisará de bons conhecimentos e compreensão de PHP, Laravel, PostgreSQL e (preferencialmente) golang. Também haverá tarefas de interface para trabalhar com mapas e dados tabulares, aqui o candidato precisará ter um bom conhecimento de HTML, CSS, JS e algum tipo de estrutura à la Vue.

Planejamos escrever novas ferramentas para trabalhar com dados estatísticos e criar relatórios (postgreSQL, RabbitMQ, MongoDB, PHP) e realizar a integração com o barramento de automóvel CAN BUS para obter e processar parâmetros e indicadores técnicos de nossa frota.

Dmitry // sistema de armazém da equipe líder



Minha equipe está desenvolvendo o WMS (Warehouse Management System). Na maioria das vezes, esse é um desenvolvimento de back-end em PHP (Laravel), mas também estamos começando a usar o Go.
Para o banco de dados, usamos o PostgreSQL. Aqui estão as principais tarefas que resolvemos:

  • Gerenciamento de armazém: classificação de suprimentos, colocação de mercadorias nas células, controle de qualidade, baixas contábeis e muito mais.
  • Processamento de pedidos: reserva, criação e nomeação de tarefas de seleção, seleção de mercadorias por tarefas.
  • Integração com BO (pedidos e dados mestre de mercadorias) e sistema X5 ERP (preços, entregas, baixas, etc.). Para integração com o BO, usamos o RabbitMQ.
  • Estamos desenvolvendo um aplicativo para TSD no Android. O aplicativo TSD nativo abre no webview um aplicativo de uma página escrito em jQuery e knockout.js.
  • Desenvolvemos e mantemos relatórios operacionais para os funcionários do armazém.

// -



O que é uma equipe de desenvolvimento de sites? Agora, essas são duas equipes de especialistas na área de back-end e front-end, cuja tarefa é desenvolver e dar suporte ao site principal perekrestok.ru e todos os seus processos internos de negócios, exceto entrega, armazém (WMS) e API móvel (na qual outros colegas estão focados).

Somos uma equipe de especialistas com experiência e conhecimento diversos: já existem especialistas renomados que já foram formados e aqueles que começaram recentemente sua carreira em TI e passaram de estagiário a desenvolvedor. Cuidamos um do outro, tanto em soluções de arquitetura quanto em códigos cruzados. Não temos medo de pedir ajuda aos colegas, se houver alguma dúvida. Afinal, tentamos nos apoiar e sabemos que, tendo alcançado um objetivo comum, cada um de nós se tornará melhor na compreensão do produto e como especialista técnico.

O que não posso deixar de pensar e ter orgulho de nós é o quão forte é a motivação da equipe: nenhum de nós se importa com o destino do projeto. Todos estão interessados ​​em levar a tarefa para a Produção e não hesitam em se comunicar sobre todos os problemas com o PM e o QA.

Periodicamente, revisamos nosso roteiro. Isso nos ajuda a entender melhor para onde estamos nos movendo e focar em tarefas que trarão lucro agora ou no futuro.

Roman e Semyon dirão mais sobre os times deles.

Roman // equipes de marketing e comércio líderes



Nossa equipe é formada por desenvolvedores de líder e back-end. Estamos envolvidos principalmente no desenvolvimento da parte de back-end da janela www.perekrestok.ru , seu back-office (CRM / CMS), bem como no desenvolvimento de uma versão B2B do site, opt.perekrestok.ru .

Como a maioria das nossas equipes é multifuncional, as tarefas são encontradas em diferentes áreas. Pode ser: pesquisa de produtos, integração com sistemas internos e externos (ERP para suporte a B2B, nosso sistema de pagamento e fidelidade WMS, B2C e B2B, recomendações para compra ou substituição de mercadorias), gerenciamento e cálculo de campanhas de marketing, mercado, notificação por email / sms , relatórios analíticos, feeds de dados e similares.

O seguinte nos ajuda a resolver a maioria das tarefas: conhecimento em estruturas PHP modernas (Laravel, Symfony, Yii); braços crescendo dos ombros; capacidade de criar um perfil do trabalho de consultas PHP e SQL; compreender a diferença entre a interação entre sistemas síncronos e assíncronos; vontade de compartilhar conhecimento com os colegas.

Somos ouriços ousados ​​o suficiente para não ter medo do SQL vazio por várias centenas de linhas (sim, existe isso). Às vezes, temos que descer ao final do código legado com pouca esperança e voltar com a bandeira da refatoração bem-sucedida levantada. Uma vez que aceleramos a atualização do índice de pesquisa de texto completo 365 vezes de 1 hora a 10 segundos. Adoramos criar um perfil e investigar as estatísticas de carregamento de aplicativos. E entendemos que mais cedo ou mais tarde a quantidade de dados e usuários excederá a marca crítica e procuramos nos microsserviços a possibilidade de dimensionamento horizontal e redução da forte conectividade dos nós do sistema.

Sémen // website e fachadas das lojas



Olá a todos! Sou líder de equipe, tentarei falar um pouco sobre a equipe, as tarefas e o projeto em que nossa equipe está envolvida.

Estamos trabalhando em um projeto de vitrine (site perekrestok.ru ), também chamado de "FD", que significa "front office". Tudo o que o usuário (comprador) se depara com o FD é: pesquisa, catálogo, pedido, conta pessoal, pagamento on-line, várias mecânicas de estoque, receitas, banners, etc.

Há muitas funcionalidades no site, adicionamos constantemente novas e modificamos a existente. Temos uma equipe muito forte de produtos e design, eles monitoram tendências e geram tarefas interessantes para nós. Além do desenvolvimento de novas funções, estamos empenhados em redesenhar, criar aterrissagens promocionais, otimizar e, é claro, corrigir erros, além de ajudar outras equipes a revisar suas solicitações de mesclagem para o projeto de exibição.

Para o front-end, escolhemos o VueJS e o usamos há um ano, estamos escrevendo tudo novo nele e gradualmente substituindo o código antigo. No back-end, tentamos evitar o uso de modelos ActiveRecord que são padrão para o Laravel, mas que estão ansiosos demais pela CPU. A personalização de consultas ao banco de dados e a recusa de Reflexões desnecessárias aumentam a produtividade em uma ordem de grandeza, o que afeta positivamente o Tempo até o primeiro byte.

Agora, nossa equipe está trabalhando em um épico - esse é um pedido totalmente redesenhado para navegadores em dispositivos móveis. Juntamente com outras equipes, estamos envolvidos nas tarefas de otimizar e processar a arquitetura de back-end para a possibilidade de dimensionamento horizontal.

Na equipe, todos estão fortemente envolvidos no projeto, quando ocorre algum tipo de emergência, e todos que podem se conectar para resolver o problema.

Denis // equipe lidera a terceira linha de suporte



Eu lidero a equipe de suporte técnico da terceira linha, recrutamos os caras aqui para as tarefas de resolver rapidamente os problemas no prod. Se algo acontecer com o site, a princípio, esse negócio vai para a primeira e a segunda linhas e, em seguida, se for necessária a intervenção dos programadores, eles chegam até nós. Nossos funcionários têm competência abrangente - como analisar o sistema de filas, analisar erros em JS, PHP, analisar a transferência de dados para serviços de terceiros.

Estamos recrutando pessoas amplamente desenvolvidas em equipes, como já mencionado, aquelas que são bastante resistentes ao estresse, muitas vezes é necessário mudar dependendo da urgência e da prioridade; isso não deve ser estresse. Bem, você pode imaginar como o apoio e o estresse estão relacionados em princípio.

Os erros que precisam ser respondidos podem ser o mais variados possível, desde os tipos mais simples - "estilo ou traçado não atraiu" até o fato de "códigos promocionais não funcionarem" ou o pedido ter sido emitido, mas o armazém não o recebeu, portanto, é necessário rastrear o histórico , ou a quantidade lá difere da inicial - você precisa acompanhar o caminho do pedido e entender exatamente onde e em que estágio algo deu errado.

Também existem itens padrão, como o erro "500" ou "404" ", é necessário monitorar e responder a eles.

Além da resistência ao estresse, é importante para essas pessoas que elas sabem trabalhar com estruturas, enquanto elas entendem como elas funcionam e as entendem, para que possam ler o código e escrevê-lo lindamente. Para poder analisar informações, não apenas concluir tarefas, mas pense em como isso afetará os ecossistemas adjacentes.

Em geral, o desenvolvimento da terceira linha é o núcleo da equipe, as pessoas que conhecem todo o sistema e entendem como tudo funciona, veem não apenas seu pedaço de código, mas também entendem onde mais erros podem ocorrer. Essas pessoas crescem rapidamente para líderes de equipe; em alguns anos, tornar-se líder de um júnior é normal.

Rinat // equipe de desenvolvimento de líderes de equipe em Innópolis



Quando encontro pessoas em uma equipe, a seleção não é para tarefas específicas. Analiso mais a experiência e as habilidades de cada especialista individualmente. Acredito que cada membro da equipe tem sua própria superpotência, e essas habilidades são melhor divulgadas precisamente ao resolver problemas comuns em uma equipe. Isso pode ser considerado um efeito de sinergia.

Foi no Perekrestok.ru que realizei o sonho - montar uma equipe completamente do zero, equilibrá-la com as habilidades de todos. Os resultados mostram que estamos indo muito bem, participando ativamente e ajudando as principais equipes de Moscou.

Se você observar os requisitos apresentados para cada participante, esse é um bom conhecimento na pilha de tecnologias. Aprecio quando uma pessoa não apenas executa tarefas na testa, mas pode justificar os prós e contras de sua decisão. Também saúdo a perspectiva ampla e o envolvimento nos processos.

Temos muito trabalho com o banco de dados, cada parte do código é chamada centenas de milhares de vezes por dia. Por esse motivo, as perguntas obrigatórias ao selecionar uma equipe são um conhecimento profundo de sql e uma boa preparação algorítmica de um candidato para escrever código com complexidade ideal.

Um requisito muito importante é a responsabilidade por nossas decisões. Porque no varejo, o preço do erro pode ser muito alto, e todos devem entender isso.

Nosso projeto está se desenvolvendo ativamente, todos os dias quebramos recordes de presença e número de pedidos. Portanto, precisamos de especialistas em Moscou e em Innópolis. Os planos da empresa são grandiosos, definitivamente não será chato

, aliás, dentro do projeto, chama-se "XO". X - Encruzilhada, O - Online.


All Articles