- Регистрация
- 23.09.18
- Сообщения
- 12.347
- Реакции
- 176
- Репутация
- 0
Сегодня мы хотим поговорить о найме людей в IT-команды онлайн-супермаркета Perekrestok.ru и о том, как устроена наша работа «внутри». Ритейл – отрасль со своей интересной спецификой, а сейчас в том числе и от нашей работы зависит, будут ли тысячи людей каждый день обеспечены продуктами. В этом посте мы даем слово нашим тимлидам, они рассказывают о проектах Perekrestok.ru, методах работы, а также о том, как можно попасть в команду и что могут спросить на собеседовании.
Сергей // iOS-teamlead
Все, что я расскажу, относится к разработке нашего нового приложения онлайн-супермаркета. Хочу сразу отметить, что так или иначе подавляющее большинство разработчиков начинает свой путь в каком-нибудь небольшом стартапе или вообще в аутсорсе. Это помогает им вырасти, что называется, вширь — ведь они постоянно сталкиваются со множеством весьма разношерстных задач и широким спектром технологий.
У нас же продуктовая команда in-house, мы про рост «в глубину», поэтому у нас приживутся именно те ребята, которым интересен такой вид профессионального роста.
Мы делаем продукт, которым пользуются тысячи людей — различных user-story и сценариев поведения тут хватает с запасом, поэтому требования к продукту серьезные. Само собой, классический набор для таких случаев: надежность, производительность, расширяемость, модульность, поддерживаемость и тестируемость.
Чтобы все это обеспечить, мы взяли за основу архитектуру Uber-RIBs, оставив от нее лишь интерфейс модулей и полностью переделав DI, роутинг с диплинкингом, а сверху положили однонаправленный поток данных. Пока полет нормальный (и интересный), допиливаем дальше.
В планах — сделать продвинутый дебаг-экран со стендами, диплинками и каталогом экранов, в каждый из которых можно будет быстро зайти и поменять моки или попереключать стейты. Да, прямо в рантайме.
Для ускорения работы мы разработали свою дизайн-систему. Уделяем много внимания плавности работы UI. Поддерживаем «темную» тему.
Команда у нас построена таким образом, что нет людей, которые занимаются чем-то совсем узконаправленным, мол, Саша отвечает за эту кнопку, а Паша только за архитектуру в целом. На самом деле, ситуация такова, что все занимаются всем, но в рамках заранее определенных гайдлайнов и шаблонов модулей, иначе из демократии мы бы скатились в анархию.
Руслан // Android-teamlead
Один из ключевых моментов разработки — это проектирование архитектуры ПО. Цена допущенных на этом этапе ошибок растет экспоненциально, поэтому у нас в приоритете гибкость ПО, позволяющая отвечать и требованиям бизнеса, и запросам пользователей.
Мы придерживаемся подхода MVI, который позволяет снизить цену отладки и тестирования за счет прозрачности и целостности состояний. Штука хорошая, но есть минус: весьма и весьма высокий входной порог для нового сотрудника. Поэтому наша цель — этот порог снизить. Помогает в этом «Правило 10 минут», которое гласит, что объяснить все наши подходы новичку мы должны за 10 минут. Даже если он никогда не сталкивался с однонаправленным потоком данных.
Это помогло пересмотреть стандартные подходы к реализации MVI и разработать собственное решение, которое получилось и быстрее, и, что важно, проще.
Что я могу сказать про команды. Это история про «любовь», про работу сообща, поэтому мы не можем позволить себе смотреть на человека просто как на набор определенных компетенций. Человек в нашей парадигме — это его функция от будущего, от того, кем он может стать в нашей команде.
Ян // руководитель группы разработки, Иннополис
У нас пока сама молодая команда из 10 человек, мы в проекте с декабря 2019, базируемся в Иннополисе. Задачи у нас разные, мы де-факто кросс-функциональная команда, работающая над сегментом B2B, бэк-офисом и витринами (фронт-часть).
Вообще, до создания нашей команды у X5 уже был офис в Иннополисе, примерно на треть одного этажа технопарка, но там сидели команды из других наших сетей. Сегодня здесь и perekrestok.ru
Самое заметное (сказывается удаленность от Москвы) — это низкий уровень погруженности команд в проекты. В первую очередь, надо было оперативно создать в своей команде ряд процессов, при этом увязав их с общепринятыми в компании. А еще – помогает грамотное штатное расписание.
Зато есть плюшка, та самая плюшка Иннополиса — это IT-город, поэтому проблемы с кадрами у нас не было, поток кандидатов не только большой, но и качественный.
Людей мы искали, отталкиваясь и от стека (у нас это PHP, PostgeSQL, JS), и от желания человека не просто сидеть и монотонно работать, а сделать хороший продукт, быть в нем заинтересованным. В идеале — иметь свое видение и способность высказывать точку зрения по разным вопросам.
Иван // teamlead команды интеграции проектов
Наша команда существует около полугода, это разработчики (backend + frontend), тестировщики и лидер команды, сейчас мы вышли на тот уровень, когда можем решить любую поставленную задачу от начала и до конца. Несмотря на небольшой стаж, нам доверяют как бизнес-задачи, так и технические (связанные с основной витриной, взаимодействия между системами, организации API, разбиение на микросервисы, оптимизация, рефакторинг). Ищем людей, которые помогут нам решать новые задачи и будут не только обладать нужными знаниями, навыками и желанием улучшать продукт, но и разделять наш подход к работе.
Время от времени, в зависимости от проекта, подключаются еще и бизнес-аналитики (и системные). Мы разрабатываем и внедряем проекты, которые связаны с взаимодействием наших систем (внутренних и внешних), а также с изменением пользовательского опыта.
Если нагляднее — это мы делали
Прямо сейчас заняты заменой API для мобильного приложения и редизайном некоторых страниц сайта, рефакторингом.
Александр // teamlead логистической системы
Мы работаем над задачами по направлению доставки и всего, что с этим связано. Разработали приложение для Android, с которым ездит курьер и доставляет заказы. Используется Kotlin и Java. Тут кроются большие задачи интеграции с контрольной кассовой техникой и системами для совершения платежей.
Наша работа касается и курьерского приложения, и пользовательских интерфейсов, и маршрутизации заказов — в общем, задач хватает, и они действительно разные. Например, для курьерского приложения мы сделали REST API, через него сейчас проходят операции для работы над заказами, платежами, бортовым журналом, обслуживанием маршрута и оповещениях об инцидентах. Для логистики и маршрутизации заказов — интеграцию с системами TMS (Transport Management System) для автоматического построения маршрутов и распределения заказов, также интерфейсные инструменты, для просмотра и управления маршрутами на карте, система учета и отгрузки ящиков с заказами на складах с тележек и маршей в машину курьера. А еще подробная реализация бизнес-логики по расчету стоимости доставки — она же зависит и от района, и от конкретного временного промежутка, плюс везти заказ в район, в котором уже есть какой-то заказ, дешевле. Все это учитывается.
В будущем реализуем сервис с API для инкапсуляции всей логики и операции доставки, перенесем ее из монолита в микросервисы. Человеку, который захочет поработать с нами над этим, потребуются хорошие знания и понимание PHP, Laravel, PostgreSQL и (желательно) golang. Будут также и интерфейсные задачи для работы с картами и табличными данными, тут кандидату надо будет хорошо знать HTML, CSS, JS и какой-нибудь фреймворк а-ля Vue.
Планируем написать новые инструменты для работы со статистическими данными и создания отчетов (postgreSQL, RabbitMQ, MongoDB, PHP) и провести интеграцию с автомобильной шиной CAN BUS для снятия и обработки техпараметров и показателей нашего автопарка.
Дмитрий // teamlead команды складской системы
Моя команда занимается развитием WMS (Warehouse Management System). По большей части это бекэнд-разработка на PHP (Laravel), но начинаем также использовать Go.
Для БД мы используем PostgreSQL. Вот как выглядят основные задачи, которые мы решаем:
Алексей // руководитель группы разработки веб-сайтов
Что такое группа разработки веб-сайтов? Сейчас это две команды специалистов в области бэкенд и фронтенд, задачей которых является развитие и поддержка основного сайта perekrestok.ru и всех его внутренних бизнес-процессов, кроме доставки, склада (WMS) и мобильного API (на которых сфокусированы другие коллеги).
Мы — команда специалистов, имеющих разносторонний опыт и знания: есть и уже сформированные ведущие специалисты, и те, кто недавно начал свой путь в ИТ и вырос из стажера в разработчика. Мы приглядываем друг за другом, как в архитектурных решениях, так и в кросс-кодревью. Не боимся обратиться к коллегам за помощью, если в чем-то возникли сомнения. Ведь мы стараемся поддержать друг друга и знаем, что, достигнув общей цели, каждый из нас станет лучше и в понимании продукта, и как технический специалист.
В чем я не перестаю приятно удивляться и испытывать гордость за нас, так это в том, насколько сильна мотивация в команде: ни одному из нас не безразлична судьба проекта. Каждый заинтересован в доведении задачи до Production и не стесняется коммуницировать по всем вопросам с PM и QA.
Мы периодически пересматриваем свой роадмап. Это помогает нам четче представлять то, куда мы движемся, и фокусироваться на задачах, которые принесут профит сейчас или в перспективе.
Подробнее о своих командах Роман и Семен расскажут сами.
Роман // teamlead команды маркетинга и коммерции
Наша команда состоит из тимлида и backend-разработчиков. В основном мы занимаемся разработкой backend-части витрины
Большинство наших команд кросс-функциональны, поэтому задачи встречаются из разных областей. Это может быть: поиск товаров, интеграция с внутренними и внешними системами (ERP для поддержки B2B, нашей WMS, системой лояльности и платежей B2C и B2B, рекомендациями о покупке или замене товаров), управление и расчет маркетинговых акций, маркетплейс, email/sms нотификация, аналитические отчеты, фиды данных и подобное.
В решении большинства поставленных задач нам помогают: экспертиза в современных PHP-фреймворках (Laravel, Symfony, Yii); руки, растущие из плеч; умение профилировать работу PHP и SQL-запросов; понимание разницы между синхронным и асинхронным взаимодействием систем; готовность делиться знаниями с коллегами.
Мы достаточно смелые ежики, чтобы не пугаться голого SQL на несколько сотен строк (да, есть и такое). Порой нам приходится спускаться в забой легаси-кода со слабой надеждой и возвращаться из него с поднятым знаменем успешного рефакторинга. Как-то раз мы ускорили обновление полного индекса текстового поиска в 365 раз с 1 часа до 10 секунд. Мы любим профилировать и копаться в статистике по нагрузке приложения. И понимаем, что рано или поздно количество данных и пользователей перевалит за критическую отметку, и смотрим в сторону микросервисов для возможности горизонтального масштабирования и уменьшения сильной связности узлов системы.
Семён // teamlead веб-сайта и витрины
Всем привет! Я тимлид, попробую немного рассказать о команде, задачах и самом проекте, котором занимается наша команда.
Мы работаем над проектом витрина (сайт
Функциональности на сайте очень много, постоянно добавляем новую и дорабатываем существующую. У нас очень сильные продуктовая команда и команда дизайнеров, они следят за тенденциями и генерируют нам интересные задачи. Кроме разработки новых функций, мы занимаемся редизайном, созданием промо-лендингов, оптимизацией и, конечно, исправлением ошибок, а также помогаем другим командам с ревью их мердж-реквестов в проект витрины.
Для frontend мы выбрали VueJS и уже как год используем, все новое пишем на нём, а старый код постепенно заменяем. В backend стараемся уйти от использования ActiveRecord-моделей, стандартных для Laravel, но слишком охочих до CPU. Кастомизация запросов к БД и отказ от лишнего Reflection дает прирост в производительности на порядок, что позитивно сказывается на Time To First Byte.
Сейчас наша команда работает над эпиком — это полностью переработанное оформление заказа для браузеров на мобильных девайсах. Совместно с другими командами занимаемся задачами по оптимизации и переработки архитектуры backend-а для возможности горизонтального масштабирования.
В команде все сильно вовлечены в проект, когда происходит какое-то ЧП, то все, кто могут, подключаются к решению проблемы.
Денис // teamlead третьей линии поддержки
Я руковожу командой техподдержки третьей линии, ребят сюда набираем под задачи оперативного решения проблем на проде. Если что-то у нас с сайтом происходит, вначале это дело поступает на первую и вторую линии, а потом, если требуется вмешательство программистов, то приходят уже к нам. Наши ребята обладают всесторонней компетенцией — как посмотреть систему очередей, проанализировать ошибки на JS, на PHP, проанализировать передачу данных сторонним сервисам.
В команды набираем всесторонне развитых людей, как уже было сказано, таких, которые довольно стрессоустойчивы, переключаться приходится часто в зависимости от срочности и приоритета, это не должно быть стрессом. Ну и вы представляете, как связаны между собой в принципе саппорт и стресс.
Ошибки, на которые надо реагировать, могут быть максимально разными, от самых простых вида — «не прорисовался стиль или обводка», вплоть до того, что «не работают промокоды» или заказ оформился, но склад не получил его, значит, надо проследить историю, или сумма там отличается от первоначальной — надо отслеживать путь заказа и понимать, где именно и на каком этапе что-то пошло не так.
Еще есть стандартные штуки типа ошибок «500» или «404»», за ними надо следить и реагировать.
Кроме стрессоустойчивости — важно в таких людях, чтобы они умели работать с фреймворками, при этом понимали, как они работают и разбирались в них, чтобы умели читать код и красиво его писать. Чтобы были способны анализировать информацию, не просто выполнять задания, а думать о том, как это повлияет на смежные экосистемы.
В общем, разраб третьей линии — это team core, люди, которые знают всю систему целиком и понимают, как все устроено, видят не только свой кусок кода, но и понимают, где еще могут возникнуть ошибки. Такие люди быстро растут до тимлидов, за пару лет стать из джуниора ведущим — это нормально.
Ринат // teamlead команды разработки в Иннополисе
Когда я собираю людей в команду, подбор идет не под конкретные задачи. Больше смотрю на опыт и умения каждого специалиста по отдельности. Считаю, что каждый член команды имеет свою сверхспособность, причем лучше всего данные способности раскрываются именно при решении общих задач в коллективе. Можно считать это эффектом синергии.
Именно в Perekrestok.ru я воплотил мечту — собрать команду полностью с нуля, сбалансировать ее навыками каждого. По результатам видно, что мы очень хорошо идем, активно вливаемся и помогаем основным командам в Москве.
Если смотреть на требования к каждому участнику, которые выдвигаются, то это хорошие познания в стеке технологий. Ценю, когда человек не только делает задачи в лоб, но может аргументировать плюсы и минусы своего решения. Также приветствую широкий кругозор и вовлеченность в процессы.
У нас очень много работы с БД, каждый участок кода вызывается сотни тысяч раз в сутки. Из-за этого обязательными вопросами при отборе в команду является глубокое познание sql и хорошая алгоритмическая подготовка кандидата для написания оптимального по сложности кода.
Очень важное требование — это ответственность за свои решения. Потому что в ритейле цена ошибки может быть очень высока, и каждый это должен понимать.
Наш проект активно развивается, каждый день бьем рекорды по посещаемости и количеству заказов. Поэтому нам необходимы специалисты как в Москве, так и в Иннополисе. Планы у компании грандиозны, скучно точно не будет
Кстати, внутри проект называется “XO”. X — Перекресток, О — Онлайн.
Сергей // iOS-teamlead
Все, что я расскажу, относится к разработке нашего нового приложения онлайн-супермаркета. Хочу сразу отметить, что так или иначе подавляющее большинство разработчиков начинает свой путь в каком-нибудь небольшом стартапе или вообще в аутсорсе. Это помогает им вырасти, что называется, вширь — ведь они постоянно сталкиваются со множеством весьма разношерстных задач и широким спектром технологий.
У нас же продуктовая команда in-house, мы про рост «в глубину», поэтому у нас приживутся именно те ребята, которым интересен такой вид профессионального роста.
Мы делаем продукт, которым пользуются тысячи людей — различных user-story и сценариев поведения тут хватает с запасом, поэтому требования к продукту серьезные. Само собой, классический набор для таких случаев: надежность, производительность, расширяемость, модульность, поддерживаемость и тестируемость.
Чтобы все это обеспечить, мы взяли за основу архитектуру Uber-RIBs, оставив от нее лишь интерфейс модулей и полностью переделав DI, роутинг с диплинкингом, а сверху положили однонаправленный поток данных. Пока полет нормальный (и интересный), допиливаем дальше.
В планах — сделать продвинутый дебаг-экран со стендами, диплинками и каталогом экранов, в каждый из которых можно будет быстро зайти и поменять моки или попереключать стейты. Да, прямо в рантайме.
Для ускорения работы мы разработали свою дизайн-систему. Уделяем много внимания плавности работы UI. Поддерживаем «темную» тему.
Команда у нас построена таким образом, что нет людей, которые занимаются чем-то совсем узконаправленным, мол, Саша отвечает за эту кнопку, а Паша только за архитектуру в целом. На самом деле, ситуация такова, что все занимаются всем, но в рамках заранее определенных гайдлайнов и шаблонов модулей, иначе из демократии мы бы скатились в анархию.
Руслан // Android-teamlead
Один из ключевых моментов разработки — это проектирование архитектуры ПО. Цена допущенных на этом этапе ошибок растет экспоненциально, поэтому у нас в приоритете гибкость ПО, позволяющая отвечать и требованиям бизнеса, и запросам пользователей.
Мы придерживаемся подхода MVI, который позволяет снизить цену отладки и тестирования за счет прозрачности и целостности состояний. Штука хорошая, но есть минус: весьма и весьма высокий входной порог для нового сотрудника. Поэтому наша цель — этот порог снизить. Помогает в этом «Правило 10 минут», которое гласит, что объяснить все наши подходы новичку мы должны за 10 минут. Даже если он никогда не сталкивался с однонаправленным потоком данных.
Это помогло пересмотреть стандартные подходы к реализации MVI и разработать собственное решение, которое получилось и быстрее, и, что важно, проще.
Что я могу сказать про команды. Это история про «любовь», про работу сообща, поэтому мы не можем позволить себе смотреть на человека просто как на набор определенных компетенций. Человек в нашей парадигме — это его функция от будущего, от того, кем он может стать в нашей команде.
Ян // руководитель группы разработки, Иннополис
У нас пока сама молодая команда из 10 человек, мы в проекте с декабря 2019, базируемся в Иннополисе. Задачи у нас разные, мы де-факто кросс-функциональная команда, работающая над сегментом B2B, бэк-офисом и витринами (фронт-часть).
Вообще, до создания нашей команды у X5 уже был офис в Иннополисе, примерно на треть одного этажа технопарка, но там сидели команды из других наших сетей. Сегодня здесь и perekrestok.ru
Самое заметное (сказывается удаленность от Москвы) — это низкий уровень погруженности команд в проекты. В первую очередь, надо было оперативно создать в своей команде ряд процессов, при этом увязав их с общепринятыми в компании. А еще – помогает грамотное штатное расписание.
Зато есть плюшка, та самая плюшка Иннополиса — это IT-город, поэтому проблемы с кадрами у нас не было, поток кандидатов не только большой, но и качественный.
Людей мы искали, отталкиваясь и от стека (у нас это PHP, PostgeSQL, JS), и от желания человека не просто сидеть и монотонно работать, а сделать хороший продукт, быть в нем заинтересованным. В идеале — иметь свое видение и способность высказывать точку зрения по разным вопросам.
Иван // teamlead команды интеграции проектов
Наша команда существует около полугода, это разработчики (backend + frontend), тестировщики и лидер команды, сейчас мы вышли на тот уровень, когда можем решить любую поставленную задачу от начала и до конца. Несмотря на небольшой стаж, нам доверяют как бизнес-задачи, так и технические (связанные с основной витриной, взаимодействия между системами, организации API, разбиение на микросервисы, оптимизация, рефакторинг). Ищем людей, которые помогут нам решать новые задачи и будут не только обладать нужными знаниями, навыками и желанием улучшать продукт, но и разделять наш подход к работе.
Время от времени, в зависимости от проекта, подключаются еще и бизнес-аналитики (и системные). Мы разрабатываем и внедряем проекты, которые связаны с взаимодействием наших систем (внутренних и внешних), а также с изменением пользовательского опыта.
Если нагляднее — это мы делали
You must be registered for see links
(площадка для оформления корпоративных заказов, как понятно из URL),
You must be registered for see links
(отдельная витрина, на которой можно подобрать корм своему любимому зверю), внедрили механизм подбора похожих товаров. А еще сделали приложение для заказа еды пешими курьерами, спасибо ребятам из команды мобильной разработки. Кроме этого упростили выбор адреса доставки (раньше было сложнее, да), немного распилили монолит на несколько микросервисов, и существенно упростили механизм сборки релизов, позволяющий выкатывать не один релиз в неделю, а десять, стараемся идти в сторону полноценного continuous integration, чтобы этот процесс стал постоянным и непрерывным.Прямо сейчас заняты заменой API для мобильного приложения и редизайном некоторых страниц сайта, рефакторингом.
Александр // teamlead логистической системы
Мы работаем над задачами по направлению доставки и всего, что с этим связано. Разработали приложение для Android, с которым ездит курьер и доставляет заказы. Используется Kotlin и Java. Тут кроются большие задачи интеграции с контрольной кассовой техникой и системами для совершения платежей.
Наша работа касается и курьерского приложения, и пользовательских интерфейсов, и маршрутизации заказов — в общем, задач хватает, и они действительно разные. Например, для курьерского приложения мы сделали REST API, через него сейчас проходят операции для работы над заказами, платежами, бортовым журналом, обслуживанием маршрута и оповещениях об инцидентах. Для логистики и маршрутизации заказов — интеграцию с системами TMS (Transport Management System) для автоматического построения маршрутов и распределения заказов, также интерфейсные инструменты, для просмотра и управления маршрутами на карте, система учета и отгрузки ящиков с заказами на складах с тележек и маршей в машину курьера. А еще подробная реализация бизнес-логики по расчету стоимости доставки — она же зависит и от района, и от конкретного временного промежутка, плюс везти заказ в район, в котором уже есть какой-то заказ, дешевле. Все это учитывается.
В будущем реализуем сервис с API для инкапсуляции всей логики и операции доставки, перенесем ее из монолита в микросервисы. Человеку, который захочет поработать с нами над этим, потребуются хорошие знания и понимание PHP, Laravel, PostgreSQL и (желательно) golang. Будут также и интерфейсные задачи для работы с картами и табличными данными, тут кандидату надо будет хорошо знать HTML, CSS, JS и какой-нибудь фреймворк а-ля Vue.
Планируем написать новые инструменты для работы со статистическими данными и создания отчетов (postgreSQL, RabbitMQ, MongoDB, PHP) и провести интеграцию с автомобильной шиной CAN BUS для снятия и обработки техпараметров и показателей нашего автопарка.
Дмитрий // teamlead команды складской системы
Моя команда занимается развитием WMS (Warehouse Management System). По большей части это бекэнд-разработка на PHP (Laravel), но начинаем также использовать Go.
Для БД мы используем PostgreSQL. Вот как выглядят основные задачи, которые мы решаем:
- Управление товарами на складе: сортировка поставок, размещение товара в ячейки, контроль качества, списание и прочее.
- Обработка заказов: резервирование, создание и назначение заданий отбора, отбор товара по заданиям.
- Интеграция с БО (заказы и мастер-данные товаров) и ERP-системой X5 (цены, поставки, списания и т.д.). Для интеграции с БО используем RabbitMQ.
- Разрабатываем приложение для ТСД на Android. Нативное приложение ТСД открывает в webview одностраничное приложение, написанное на jQuery и knockout.js.
- Разрабатываем и поддерживаем оперативные отчеты для сотрудников склада.
Алексей // руководитель группы разработки веб-сайтов
Что такое группа разработки веб-сайтов? Сейчас это две команды специалистов в области бэкенд и фронтенд, задачей которых является развитие и поддержка основного сайта perekrestok.ru и всех его внутренних бизнес-процессов, кроме доставки, склада (WMS) и мобильного API (на которых сфокусированы другие коллеги).
Мы — команда специалистов, имеющих разносторонний опыт и знания: есть и уже сформированные ведущие специалисты, и те, кто недавно начал свой путь в ИТ и вырос из стажера в разработчика. Мы приглядываем друг за другом, как в архитектурных решениях, так и в кросс-кодревью. Не боимся обратиться к коллегам за помощью, если в чем-то возникли сомнения. Ведь мы стараемся поддержать друг друга и знаем, что, достигнув общей цели, каждый из нас станет лучше и в понимании продукта, и как технический специалист.
В чем я не перестаю приятно удивляться и испытывать гордость за нас, так это в том, насколько сильна мотивация в команде: ни одному из нас не безразлична судьба проекта. Каждый заинтересован в доведении задачи до Production и не стесняется коммуницировать по всем вопросам с PM и QA.
Мы периодически пересматриваем свой роадмап. Это помогает нам четче представлять то, куда мы движемся, и фокусироваться на задачах, которые принесут профит сейчас или в перспективе.
Подробнее о своих командах Роман и Семен расскажут сами.
Роман // teamlead команды маркетинга и коммерции
Наша команда состоит из тимлида и backend-разработчиков. В основном мы занимаемся разработкой backend-части витрины
You must be registered for see links
, её бэкофиса (CRM/CMS), а также разработкой B2B-версии сайта,
You must be registered for see links
.Большинство наших команд кросс-функциональны, поэтому задачи встречаются из разных областей. Это может быть: поиск товаров, интеграция с внутренними и внешними системами (ERP для поддержки B2B, нашей WMS, системой лояльности и платежей B2C и B2B, рекомендациями о покупке или замене товаров), управление и расчет маркетинговых акций, маркетплейс, email/sms нотификация, аналитические отчеты, фиды данных и подобное.
В решении большинства поставленных задач нам помогают: экспертиза в современных PHP-фреймворках (Laravel, Symfony, Yii); руки, растущие из плеч; умение профилировать работу PHP и SQL-запросов; понимание разницы между синхронным и асинхронным взаимодействием систем; готовность делиться знаниями с коллегами.
Мы достаточно смелые ежики, чтобы не пугаться голого SQL на несколько сотен строк (да, есть и такое). Порой нам приходится спускаться в забой легаси-кода со слабой надеждой и возвращаться из него с поднятым знаменем успешного рефакторинга. Как-то раз мы ускорили обновление полного индекса текстового поиска в 365 раз с 1 часа до 10 секунд. Мы любим профилировать и копаться в статистике по нагрузке приложения. И понимаем, что рано или поздно количество данных и пользователей перевалит за критическую отметку, и смотрим в сторону микросервисов для возможности горизонтального масштабирования и уменьшения сильной связности узлов системы.
Семён // teamlead веб-сайта и витрины
Всем привет! Я тимлид, попробую немного рассказать о команде, задачах и самом проекте, котором занимается наша команда.
Мы работаем над проектом витрина (сайт
You must be registered for see links
), еще мы называем проект “ФО”, что означает “фронт офис”. Все то, с чем сталкивается пользователь (покупатель), это и есть ФО: поиск, каталог, оформление заказа, личный кабинет, онлайн-оплата, различные механики акций, рецепты, баннеры и прочее.Функциональности на сайте очень много, постоянно добавляем новую и дорабатываем существующую. У нас очень сильные продуктовая команда и команда дизайнеров, они следят за тенденциями и генерируют нам интересные задачи. Кроме разработки новых функций, мы занимаемся редизайном, созданием промо-лендингов, оптимизацией и, конечно, исправлением ошибок, а также помогаем другим командам с ревью их мердж-реквестов в проект витрины.
Для frontend мы выбрали VueJS и уже как год используем, все новое пишем на нём, а старый код постепенно заменяем. В backend стараемся уйти от использования ActiveRecord-моделей, стандартных для Laravel, но слишком охочих до CPU. Кастомизация запросов к БД и отказ от лишнего Reflection дает прирост в производительности на порядок, что позитивно сказывается на Time To First Byte.
Сейчас наша команда работает над эпиком — это полностью переработанное оформление заказа для браузеров на мобильных девайсах. Совместно с другими командами занимаемся задачами по оптимизации и переработки архитектуры backend-а для возможности горизонтального масштабирования.
В команде все сильно вовлечены в проект, когда происходит какое-то ЧП, то все, кто могут, подключаются к решению проблемы.
Денис // teamlead третьей линии поддержки
Я руковожу командой техподдержки третьей линии, ребят сюда набираем под задачи оперативного решения проблем на проде. Если что-то у нас с сайтом происходит, вначале это дело поступает на первую и вторую линии, а потом, если требуется вмешательство программистов, то приходят уже к нам. Наши ребята обладают всесторонней компетенцией — как посмотреть систему очередей, проанализировать ошибки на JS, на PHP, проанализировать передачу данных сторонним сервисам.
В команды набираем всесторонне развитых людей, как уже было сказано, таких, которые довольно стрессоустойчивы, переключаться приходится часто в зависимости от срочности и приоритета, это не должно быть стрессом. Ну и вы представляете, как связаны между собой в принципе саппорт и стресс.
Ошибки, на которые надо реагировать, могут быть максимально разными, от самых простых вида — «не прорисовался стиль или обводка», вплоть до того, что «не работают промокоды» или заказ оформился, но склад не получил его, значит, надо проследить историю, или сумма там отличается от первоначальной — надо отслеживать путь заказа и понимать, где именно и на каком этапе что-то пошло не так.
Еще есть стандартные штуки типа ошибок «500» или «404»», за ними надо следить и реагировать.
Кроме стрессоустойчивости — важно в таких людях, чтобы они умели работать с фреймворками, при этом понимали, как они работают и разбирались в них, чтобы умели читать код и красиво его писать. Чтобы были способны анализировать информацию, не просто выполнять задания, а думать о том, как это повлияет на смежные экосистемы.
В общем, разраб третьей линии — это team core, люди, которые знают всю систему целиком и понимают, как все устроено, видят не только свой кусок кода, но и понимают, где еще могут возникнуть ошибки. Такие люди быстро растут до тимлидов, за пару лет стать из джуниора ведущим — это нормально.
Ринат // teamlead команды разработки в Иннополисе
Когда я собираю людей в команду, подбор идет не под конкретные задачи. Больше смотрю на опыт и умения каждого специалиста по отдельности. Считаю, что каждый член команды имеет свою сверхспособность, причем лучше всего данные способности раскрываются именно при решении общих задач в коллективе. Можно считать это эффектом синергии.
Именно в Perekrestok.ru я воплотил мечту — собрать команду полностью с нуля, сбалансировать ее навыками каждого. По результатам видно, что мы очень хорошо идем, активно вливаемся и помогаем основным командам в Москве.
Если смотреть на требования к каждому участнику, которые выдвигаются, то это хорошие познания в стеке технологий. Ценю, когда человек не только делает задачи в лоб, но может аргументировать плюсы и минусы своего решения. Также приветствую широкий кругозор и вовлеченность в процессы.
У нас очень много работы с БД, каждый участок кода вызывается сотни тысяч раз в сутки. Из-за этого обязательными вопросами при отборе в команду является глубокое познание sql и хорошая алгоритмическая подготовка кандидата для написания оптимального по сложности кода.
Очень важное требование — это ответственность за свои решения. Потому что в ритейле цена ошибки может быть очень высока, и каждый это должен понимать.
Наш проект активно развивается, каждый день бьем рекорды по посещаемости и количеству заказов. Поэтому нам необходимы специалисты как в Москве, так и в Иннополисе. Планы у компании грандиозны, скучно точно не будет
Кстати, внутри проект называется “XO”. X — Перекресток, О — Онлайн.