DĂ©veloppeurs Perekrestok.ru. Ce que nous faisons et qui nous recherchons en Ă©quipe

Aujourd'hui, nous voulons parler de l'embauche de personnes dans l'équipe informatique du supermarché en ligne Perekrestok.ru et de la façon dont notre travail est organisé «à l'intérieur». La vente au détail est une industrie qui a ses spécificités intéressantes, et maintenant cela dépend de notre travail, si des milliers de personnes recevront des produits chaque jour. Dans cet article, nous donnons la parole à nos chefs d'équipe, ils parlent des projets Perekrestok.ru, des méthodes de travail, ainsi que de la manière de rejoindre l'équipe et de ce qu'ils peuvent demander lors de l'entretien.



Sergey // chef d'Ă©quipe iOS



Tout ce que je vais dire concerne le développement de notre nouvelle application de supermarché en ligne. Je veux immédiatement noter que d'une manière ou d'une autre, la grande majorité des développeurs commencent leur voyage dans une sorte de petite startup ou en général dans l'externalisation. Cela les aide à développer ce que l'on appelle l'ampleur - après tout, ils sont constamment confrontés à de nombreuses tâches très diverses et à un large éventail de technologies.

Nous avons une équipe de produits en interne, nous parlons de croissance "en profondeur", donc nous sommes habitués aux gars qui sont intéressés par ce type de croissance professionnelle.

Nous fabriquons un produit qui est utilisé par des milliers de personnes - il y a suffisamment d'histoires utilisateur et de scénarios de comportement différents, donc les exigences pour le produit sont sérieuses. Bien sûr, un ensemble classique pour de tels cas: fiabilité, performances, extensibilité, modularité, maintenabilité et testabilité.

Pour garantir tout cela, nous avons pris comme base l'architecture Uber-RIB, ne laissant que l'interface du module et la DI complètement repensée, le routage avec diplink, et avons placé un flux de données unidirectionnel au-dessus. Alors que le vol est normal (et intéressant), nous finissons plus loin.

Les plans sont de faire un écran de débogage avancé avec des supports, des diplinks et un catalogue d'écrans, chacun d'eux vous permettant d'entrer rapidement et de changer de moki ou de changer d'état. Oui, en phase d'exécution.

Pour accélérer le travail, nous avons développé notre propre système de conception. Nous accordons beaucoup d'attention au bon fonctionnement de l'interface utilisateur. Nous soutenons le thème "sombre".

Notre équipe est constituée de telle manière qu'il n'y a personne qui est engagé dans quelque chose de complètement ciblé, disent-ils, Sasha est responsable de ce bouton, et Pasha n'est responsable que de l'architecture dans son ensemble. En fait, la situation est telle que tout le monde fait tout, mais dans le cadre de lignes directrices et de modèles de modules prédéterminés, sinon nous tomberions dans l'anarchie de la démocratie.

Ruslan // Chef d'Ă©quipe Android



L'un des principaux points de développement est la conception de l'architecture logicielle. Le prix des erreurs commises à ce stade augmente de façon exponentielle, notre priorité est donc la flexibilité logicielle, qui nous permet de répondre à la fois aux exigences de l'entreprise et aux besoins des utilisateurs.

Nous adhérons à l'approche MVI, qui nous permet de réduire les coûts de débogage et de test en raison de la transparence et de l'intégrité de l'état. La chose est bonne, mais il y a un inconvénient: un seuil d'entrée très, très élevé pour un nouvel employé. Par conséquent, notre objectif est d'abaisser ce seuil. La «Règle de 10 minutes» aide à cela, qui stipule que nous devons expliquer toutes nos approches à un débutant en 10 minutes. Même s'il n'a jamais rencontré de flux de données unidirectionnel.

Cela a permis de réviser les approches standard de la mise en œuvre de MVI et de développer notre propre solution, qui s'est avérée plus rapide et, plus important encore, plus facile.

Que puis-je dire sur les équipes. C'est une histoire sur «l'amour», sur le travail ensemble, donc nous ne pouvons pas nous permettre de considérer une personne simplement comme un ensemble de compétences spécifiques. L'homme dans notre paradigme est sa fonction de l'avenir, de qui il peut devenir dans notre équipe.

Jan // Chef d'Ă©quipe, Innopolis



Nous avons jusqu'à présent la plus jeune équipe de 10 personnes, nous sommes dans le projet depuis décembre 2019, nous sommes basés à Innopolis. Nous avons des tâches différentes, nous sommes une équipe multifonctionnelle de facto travaillant sur le segment B2B, le back office et les vitrines (front-end).

En général, avant la création de notre équipe, X5 avait déjà un bureau à Innopolis, environ un tiers d'un étage du technoparc, mais des équipes de nos autres réseaux étaient là. Aujourd'hui, perekrestok.ru est également là.

La chose la plus notable (l'éloignement de Moscou affecte) est le faible niveau d'immersion de l'équipe dans les projets. Tout d'abord, il était nécessaire de créer rapidement un certain nombre de processus dans son équipe, tout en les reliant à ceux généralement acceptés dans l'entreprise. Et aussi - un personnel compétent aide.

Mais il y a un chignon, le chignon d'Innopolis est une ville informatique, donc nous n'avons eu aucun problème avec le personnel, le flux de candidats était non seulement important, mais aussi de haute qualité.

Nous avons cherché des gens, à partir de la pile (nous avons PHP, PostgeSQL, JS), et du désir d'une personne non seulement de s'asseoir et de travailler de façon monotone, mais de faire un bon produit, de s'y intéresser. Idéalement, ayez votre propre vision et votre capacité à exprimer un point de vue sur diverses questions.

Ivan // Teamlead Project Integration Team



Notre équipe existe depuis environ six mois, ce sont les développeurs (backend + frontend), les testeurs et le chef de l'équipe, maintenant nous avons atteint le niveau où nous pouvons résoudre n'importe quelle tâche du début à la fin. Malgré une courte expérience, on nous fait confiance à la fois pour les tâches métier et techniques (liées à la fenêtre principale, interactions entre systèmes, organisation des API, décomposition en microservices, optimisation, refactoring). Nous recherchons des personnes qui nous aideront à résoudre de nouveaux problèmes et qui posséderont non seulement les connaissances, les compétences et le désir nécessaires pour améliorer le produit, mais partageront également notre approche du travail.

De temps en temps, selon le projet, les analystes commerciaux (et ceux du système) sont également connectés. Nous développons et mettons en œuvre des projets liés à l'interaction de nos systèmes (internes et externes), ainsi qu'aux changements dans l'expérience utilisateur.

Si c'est plus clair, nous avons opt.perekrestok.ru (une plate-forme pour passer des commandes d'entreprise, comme il ressort de l'URL), zoo.perekrestok.ru(une vitrine séparée où vous pouvez ramasser de la nourriture pour votre bête bien-aimée), a introduit un mécanisme pour sélectionner des produits similaires. Et ils ont également fait une demande de commande de nourriture par courrier à pied, grâce aux gars de l'équipe de développement mobile. De plus, nous avons simplifié le choix de l'adresse de livraison (c'était plus compliqué, oui), scié légèrement le monolithe en plusieurs microservices, et considérablement simplifié le mécanisme d'assemblage des versions, ce qui permet de déployer non pas une version par semaine, mais dix, nous essayons d'aller vers une intégration continue complète pour que ce processus est devenu permanent et continu.

En ce moment, nous sommes occupés à remplacer l'API de l'application mobile et à repenser certaines pages du site, à refactoriser.

Alexander // système logistique teamlead



Nous travaillons sur des tâches dans le sens de la livraison et tout ce qui s'y rapporte. Nous avons développé une application Android avec laquelle le coursier voyage et livre des commandes. Utilisé par Kotlin et Java. C'est là que résident les grandes tâches d'intégration avec les caisses enregistreuses et les systèmes de paiement.

Notre travail concerne l'application de messagerie, les interfaces utilisateur et le routage des commandes - en général, il y a suffisamment de tâches, et elles sont vraiment différentes. Par exemple, pour l'application de messagerie, nous avons créé l'API REST, maintenant les opérations sont en cours pour travailler sur les commandes, les paiements, le journal de bord, la maintenance des itinéraires et les alertes d'incident. Pour la logistique et le routage des commandes - intégration avec les systèmes TMS (Transport Management System) pour créer automatiquement des itinéraires et distribuer les commandes, ainsi que des outils d'interface pour visualiser et gérer les itinéraires sur la carte, un système de comptabilité et d'expédition des boîtes avec les commandes dans les entrepôts des chariots et marches à la voiture courrier. Et aussi une mise en œuvre détaillée de la logique métier pour le calcul du coût de livraison - cela dépend aussi de la zone et de la période spécifique, plus la prise de commande dans la zone,dans lequel il y a déjà une sorte de commande, moins chère. Tout cela est pris en compte.

À l'avenir, nous mettrons en œuvre un service avec une API pour encapsuler l'ensemble de la logique et de la livraison, le transférer d'un monolithe vers des microservices. Une personne qui veut travailler avec nous sur ce sujet aura besoin d'une bonne connaissance et compréhension de PHP, Laravel, PostgreSQL et (de préférence) golang. Il y aura également des tâches d'interface pour travailler avec des cartes et des données tabulaires, ici le candidat devra avoir une bonne connaissance de HTML, CSS, JS et d'une sorte de framework à la Vue.

Nous prévoyons d'écrire de nouveaux outils pour travailler avec des données statistiques et créer des rapports (postgreSQL, RabbitMQ, MongoDB, PHP) et réaliser l'intégration avec le bus automobile CAN BUS pour prendre et traiter les paramètres techniques et les indicateurs de notre flotte.

Dmitry // Teamlead Team Warehouse System



Mon équipe développe le WMS (Warehouse Management System). Pour la plupart, il s'agit d'un développement backend en PHP (Laravel), mais nous commençons également à utiliser Go.
Pour la base de données, nous utilisons PostgreSQL. Voici les principales tâches que nous résolvons:

  • Gestion des entrepĂ´ts: tri des fournitures, placement des marchandises dans les cellules, contrĂ´le de la qualitĂ©, radiations, etc.
  • Traitement des commandes: rĂ©servation, crĂ©ation et nomination des tâches de sĂ©lection, sĂ©lection des marchandises par tâches.
  • IntĂ©gration avec BO (commandes et donnĂ©es de base des marchandises) et système ERP X5 (prix, livraisons, radiations, etc.). Pour l'intĂ©gration avec BO, nous utilisons RabbitMQ.
  • Nous dĂ©veloppons une application pour TSD sur Android. L'application TSD native ouvre en vue Web une application d'une page Ă©crite en jQuery et knockout.js.
  • Nous dĂ©veloppons et maintenons des rapports opĂ©rationnels pour les employĂ©s de l'entrepĂ´t.

// -



Qu'est-ce qu'une équipe de développement de sites Web? Maintenant, ce sont deux équipes de spécialistes dans le domaine du backend et du frontend, dont la tâche est de développer et de soutenir le site principal perekrestok.ru et tous ses processus commerciaux internes, à l'exception de la livraison, de l'entrepôt (WMS) et de l'API mobile (sur lesquels d'autres collègues se concentrent).

Nous sommes une équipe de spécialistes avec une expérience et des connaissances diverses: il y a déjà des experts de premier plan qui ont déjà été formés, et ceux qui ont récemment commencé leur carrière dans l'informatique et sont passés d'un stagiaire à un développeur. Nous nous occupons les uns des autres, tant dans les solutions architecturales que dans le codage croisé. Nous n'avons pas peur de demander de l'aide à nos collègues en cas de doute. Après tout, nous essayons de nous soutenir mutuellement et nous savons que, ayant atteint un objectif commun, chacun de nous deviendra meilleur à la fois dans la compréhension du produit et en tant que spécialiste technique.

Ce que je ne peux pas m'empêcher de me demander et d'être fier de nous, c'est à quel point la motivation est forte dans l'équipe: aucun de nous ne se soucie du sort du projet. Tout le monde est intéressé à porter la tâche en production et n'hésite pas à communiquer sur toutes les questions avec PM et QA.

Nous révisons périodiquement notre feuille de route. Cela nous aide à mieux comprendre où nous allons et à nous concentrer sur les tâches qui apporteront des bénéfices maintenant ou dans le futur.

Roman et Semyon vous en diront plus sur leurs Ă©quipes elles-mĂŞmes.

Roman // Ă©quipes de marketing et de commerce d'Ă©quipe



Notre équipe est composée de chefs d'équipe et de développeurs principaux. Nous sommes principalement engagés dans le développement de la partie backend de la fenêtre www.perekrestok.ru , son back office (CRM / CMS), ainsi que dans le développement d'une version B2B du site opt.perekrestok.ru .

La plupart de nos équipes sont interfonctionnelles, les tâches se trouvent donc dans différents domaines. Cela peut être: la recherche de produits, l'intégration avec des systèmes internes et externes (ERP pour soutenir B2B, notre système de fidélisation et de paiement WMS, B2C et B2B, des recommandations pour l'achat ou le remplacement de marchandises), la gestion et le calcul des campagnes marketing, la place de marché, la notification par e-mail / sms , rapports analytiques, flux de données, etc.

Les éléments suivants nous aident à résoudre la plupart des tâches: expertise dans les cadres PHP modernes (Laravel, Symfony, Yii); les bras croissent des épaules; possibilité de profiler le travail des requêtes PHP et SQL; comprendre la différence entre l'interaction des systèmes synchrones et asynchrones; volonté de partager ses connaissances avec ses collègues.

Nous sommes des hérissons assez audacieux pour ne pas avoir peur du SQL nu pour plusieurs centaines de lignes (oui, ça existe). Parfois, nous devons descendre au bas du code hérité avec un faible espoir et en revenir avec la bannière de la refactorisation réussie levée. Une fois que nous avons accéléré la mise à jour de l'index de recherche en texte intégral 365 fois de 1 heure à 10 secondes. Nous aimons profiler et explorer les statistiques de charge des applications. Et nous comprenons que tôt ou tard la quantité de données et d'utilisateurs dépassera la marque critique, et nous nous tournons vers les microservices pour la possibilité de mise à l'échelle horizontale et de réduire la forte connectivité des nœuds du système.

Sperme // Site Web et vitrines d'Ă©quipe



Bonjour à tous! Je suis chef d'équipe, je vais essayer de vous parler un peu de l'équipe, des tâches et du projet lui-même, dans lesquels notre équipe est engagée.

Nous travaillons sur un projet vitrine (site perekrestok.ru ), nous appelons également le projet «FD», qui signifie «front office». Tout ce à quoi l'utilisateur (l'acheteur) est confronté est FD: recherche, catalogue, commande, compte personnel, paiement en ligne, mécanique des stocks divers, recettes, bannières, etc.

Il y a beaucoup de fonctionnalités sur le site, nous en ajoutons constamment de nouvelles et modifions l'existant. Nous avons une équipe produit et design très solide, ils surveillent les tendances et génèrent des tâches intéressantes pour nous. En plus du développement de nouvelles fonctions, nous sommes engagés dans la refonte, la création d'atterrissages promotionnels, l'optimisation et, bien sûr, la correction des erreurs, ainsi que l'aide à d'autres équipes dans la révision de leurs demandes de fusion pour le projet vitrine.

Pour le frontend, nous avons choisi VueJS et l'utilisons depuis un an maintenant, nous y écrivons tout ce qui est nouveau et nous remplaçons progressivement l'ancien code. Dans le backend, nous essayons de ne pas utiliser les modèles ActiveRecord qui sont standard pour Laravel, mais qui sont trop impatients pour le CPU. La personnalisation des requêtes de base de données et le refus de Reflection inutile donne une augmentation de la productivité d'un ordre de grandeur, ce qui affecte positivement le Time To First Byte.

Maintenant, notre équipe travaille sur une épopée - il s'agit d'une commande entièrement repensée pour les navigateurs sur les appareils mobiles. Avec d'autres équipes, nous sommes engagés dans les tâches d'optimisation et de raffinement de l'architecture du backend pour la possibilité de mise à l'échelle horizontale.

Dans l'équipe, tout le monde est fortement impliqué dans le projet, lorsqu'une sorte d'urgence se produit, puis tous ceux qui peuvent se connecter pour résoudre le problème.

Denis // Teamlead troisième ligne de support



Je dirige l'équipe de support technique de la troisième ligne, nous recrutons les gars ici pour les tâches de résolution rapide des problèmes sur la prod. Si quelque chose se passe avec le site, au début, cette entreprise va aux première et deuxième lignes, puis, si l'intervention des programmeurs est requise, ils viennent à nous. Nos gars ont une compétence complète - comment regarder le système de file d'attente, analyser les erreurs dans JS, PHP, analyser le transfert de données vers des services tiers.

Nous recrutons des personnes complètement développées en équipes, comme déjà mentionné, celles qui sont assez résistantes au stress, vous devez souvent changer en fonction de l'urgence et de la priorité, cela ne devrait pas être du stress. Eh bien, vous pouvez imaginer comment le soutien et le stress sont liés en principe.

Les erreurs auxquelles il faut répondre peuvent être aussi variées que possible, des types les plus simples - «le style ou le trait n’a pas été dessiné», jusqu’au fait que «les codes promotionnels ne fonctionnent pas» ou la commande a été émise, mais l’entrepôt ne l’a pas reçu, vous devez donc retracer l’historique , ou le montant diffère de celui initial - vous devez suivre le chemin de la commande et comprendre exactement où et à quel stade quelque chose s'est mal passé.

Il y a aussi des choses standard comme l'erreur "500" ou "404" ", vous devez les surveiller et y répondre.

En plus de la résistance au stress, il est important chez ces personnes de savoir comment travailler avec les frameworks, tout en comprenant comment elles fonctionnent et les comprennent afin de pouvoir lire le code et l'écrire magnifiquement. Pour être en mesure d'analyser les informations, pas seulement d'effectuer des tâches, mais de réfléchir à la façon dont cela affectera les écosystèmes adjacents.

En général, le développement de la troisième ligne est le cœur de l'équipe, les personnes qui connaissent l'ensemble du système et comprennent comment tout fonctionne, voient non seulement leur morceau de code, mais comprennent également où d'autres erreurs peuvent se produire. Ces personnes deviennent rapidement des chefs d'équipe; dans quelques années, devenir chef de file d'un junior est normal.

Rinat // équipe de développement teamlead à Innopolis



Lorsque je rassemble des personnes dans une équipe, la sélection n'est pas pour des tâches spécifiques. J'examine davantage l'expérience et les compétences de chaque spécialiste individuellement. Je crois que chaque membre de l'équipe a sa propre superpuissance, et ces capacités sont mieux révélées précisément lors de la résolution de problèmes courants dans une équipe. Cela peut être considéré comme un effet de synergie.

C’est sur Perekrestok.ru que j’ai réalisé le rêve - constituer une équipe complètement à partir de zéro, pour l’équilibrer avec les compétences de chacun. Les résultats montrent que nous allons très bien, rejoignant et aidant activement les principales équipes de Moscou.

Si vous regardez les exigences pour chaque participant qui sont mises en avant, alors c'est une bonne connaissance dans la pile technologique. J'apprécie quand une personne non seulement effectue des tâches sur le front, mais peut justifier les avantages et les inconvénients de sa décision. Je salue également la large perspective et la participation aux processus.

Nous avons beaucoup de travail avec la base de données, chaque morceau de code est appelé des centaines de milliers de fois par jour. Pour cette raison, les questions obligatoires lors de la sélection d'une équipe sont une connaissance approfondie de sql et une bonne préparation algorithmique d'un candidat pour l'écriture de code dont la complexité est optimale.

Une exigence très importante est la responsabilité de nos décisions. Parce que dans le commerce de détail, le prix de l'erreur peut être très élevé, et tout le monde devrait le comprendre.

Notre projet se développe activement, chaque jour nous battons des records de fréquentation et de nombre de commandes. Par conséquent, nous avons besoin de spécialistes à Moscou et à Innopolis. Les plans de l’entreprise sont grandioses, ce ne sera certainement pas ennuyeux.

Au fait, à l’intérieur du projet s’appelle «XO». X - Crossroads, O - En ligne.


All Articles