Senior Backend Developer (.NET)
Прямой работодатель EMEX ( emex.ru )
Опыт работы любой
Привет! Меня зовут Евгений, я руковожу разработкой команде HWC в группе компаний EMEX. Сейчас мы расширяем команду и ищем Senior Backend Developer (.NET).
О команде
EMEX — компания с большой и интересной историей, один из первых маркетплейсов на рынке РФ. Cейчас EMEX — международный холдинг, который включает торговый, информационный, и фулфилмент бизнесы: EMEX.ru,EMEX.DWC в ОАЭ, фулфилмент оператор HWC.
- Информационный бизнес — соединяет покупателей и поставщиков и агрегирует информацию о 38 миллионах товарных предложениях.
- Торговый бизнес — самостоятельно приобретает и продает товары, и задает планку качества продуктов на маркетплейсе.
- Фулфилмент бизнес — формирует глобальную доставочную сеть и позволяет осуществлять доставку в более, чем 30 стран мира.
EMEX — стабильный бизнес: на протяжении 20+ лет мы прибыльны каждый квартал. Достигнув определенного размера бизнеса и масштаба операций, компания столкнулась со всеми последствиями быстрого роста. Сейчас у бизнеса есть задача — быть эффективным, а для этого нужно достичь промежуточных целей по измеримости и управляемости. Для этого мы перепроектируем структуру всех компаний и значительно усиляем наш информационный бизнес.
Нами движет не только и не столько экономическая цель, а наше видение и миссия. Мы хотим внести вклад в изменение экономического и социального уклада: от монополии корпораций к конкуренции талантов.
Для этого мы создаем и развиваем конкурентную среду:
- определяем роли и функции пользователей и соединяем их для создания цепочки ценности;
- развиваем собственную экспертизу в каждой роли;
- создаём стандарты и инструменты для реализации функций;
- обеспечиваем взаимодействие пользователей и гарантируем сделки между ними;
- привлекаем новых пользователей и выходим на новые рынки.
О команде и продукте
Сейчас команда состоит из меня, 2-х фронт разработчиков (React), 3-х бэк разработчиков (C#), тестировщика, дизайнера и продакта.
Продукт представляет из себя сайт, который объединяет логистические инструменты (микросервисы) и помогает с помощью них гибко настроить процесс отправки, получения, хранения и сортировки товара. Плюс у нашего продукта открытое API, которое позволяет легко интегрировать его с системами пользователя.
Пользователями разрабатываемых продуктов являются как автоматизированные сортировочные центры, через которые проходят миллионы заказов в месяц, так и небольшие пункты выдачи заказов.
О технологиях и процессах в разработке
Новые продукты мы разрабатываем в стеке React JS + C# .NET LTS + PostgreSQL.
Для взаимодействия с пользователем разрабатываем web-приложения на react, работа с состоянием через redux, но рассматриваем разные варианты. Взаимодействуем с бэк через http/rest, web-socket, signalR. Общие компоненты распространяем через свой npm manager. Серверную часть разрабатываем на C# .NET LTS. Придерживаемся микросервисного подхода при разработке, хостим сервисы в docker. Для доступа к данным используем linq2db. Общий код и контракты распространяем через nuget пакеты. Для сбора логов и анализа используем elastic и posthog. Для конфигурирования используем consul. В качестве хранения данных используем PostgreSQL. Для межсервисного взаимодействия используем REST, Kafka или RabbitMQ. Задачи команда ведет на доске в Azure DevOps Server (TFS). Для контроля версий используем git в Azure DevOps Server. CI/CD настраивается там же. Организацией, развертывания сервисов, сайтов и организацией тестовых стендов занимается команда Dev/Ops. Документацию ведем в Notion и в репозитории.
Наши web-приложения:
- интерактивные - звуковое сопровождение, сканирование штрих-кодов, фотографирование и т.п.;
- кросс-платформенные и должны работать на смартфоне, PPC (КПК), laptop и desktop;
- мультиязычные т.к. используются по всему миру;
- масштабируемые и с низким временем отклика, т.к. операции сканирования и обработки должны выполняться мгновенно.
Как мы работаем над продуктами?
- Задачи ставятся владельцем продукта и проходят архитектурную экспертизу, где конкретизируются функциональные и системные требования.
- Далее задача прорабатывается вместе с владельцами, архитекторами и лидами других команд. В проработку задачи входит - закрытие белых пятен в требованиях от владельца и архитекторов, обсуждение будущих макетов сайтов, мобильных или десктоп приложений вместе с дизайнером в Figma, прототипирование, если это необходимо. В результате появляется оценка длительности, трудоемкости и стоимости задачи.
- Команды работают 2 недельными итерациями: первый день - планирование, последний день - демо.
- До выпуска в “бой”, проводится тестирование в тестовых средах. Разрабатываются автотесты на cypress, пишутся unit-тесты. Команда тестирования, помогает с тестированием кросс-командных разработок.
- Команда работает удаленно из разных регионов РФ и стран, но в московском часовом поясе.
При разработке мы выделяем время для работы с техдолгом, перехода на новые версии или прототипирование новых подходов.
Есть legacy на .NET, WCF, MS SQL, в котором необходимо разбираться.
Задачи, которые тебе предстоит решать
- Участвовать в разработке массового продукта;
- Прорабатывать и оценивать задачи совместно с владельцем продукта, архитекторами и тим лидом;
- Проводить code review и контролировать качества кода;
- Взаимодействовать с командами тестирования и DevOps.
- Предлагать собственные решения поставленных перед тобой задач;
- Участвовать во внедрении TDD подхода в нашей команде.
Цели, которые будут стоять перед тобой в ближайшие 3-6 месяцев
- Через 3 месяца:
- Разобраться в существующем коде.
- Получить понимание работы системы в целом.
- Научиться оценивать сроки и делать технический груминг задач.
- Через 6 месяцев:
- Перейти на самостоятельное и автономное решение поставленных перед тобой задач.
- Приобрести уникальную экспертизу в какой-то из областей кода.
Как понять, что ты подойдешь
- Работаешь со стеком C# ASP.NET Core, .NET, PostgreSQL и MSSQL от 5 лет;
- Умеешь проектировать БД, ORM;
- Используешь механизмы контейнеризации (Docker);
- Имеешь опыт разработки микросервисов (ONION | DDD | CQRS);
- Используешь Agile методологии;
- Умеешь разбираться в продукте и существующем коде;
- Будет плюсом: опыт разработки продуктов в логистике, работы над WMS/ERP/CRM системами;
- У нас полностью распределенная команда, поэтому будет здорово, если ты имеешь опыт удаленной работы;
- Умеешь вести документацию на английском языке (чтение/письмо);
- Будет круто, если у тебя есть опыт работы с TDD подходом — мы сейчас активно внедряем его в нашей команде.
Что мы можем предложить
- Ты сможешь развиваться как разработчик вместе с нашим быстрорастущим продуктом и решать неординарные проблемы.
- У тебя будет возможность решать задачи так, как ты посчитаешь эффективным. Если твои решения целесообразны, мы предоставим тебе все необходимые ресурсы.
- Ты будешь участвовать в создании продукта, с которым работают пользователи в разных регионах мира.
- Мы сторонники горизонтальных коммуникаций: каждый в нашей команде, начиная с фаундеров, открыт к общению, готов ответить на возникающие вопросы и поделиться тем, что знает сам; любой специалист может обратиться к руководителю напрямую.
- Забота о сотрудниках. Мы внимательно относимся друг к другу и готовы помочь решить проблему. Например, если обстоятельства вынуждают сотрудника переехать в другой город или страну — мы всегда открыты к диалогу. Если ты работаешь в РФ, мы сможем обеспечить тебя ДМС и предоставить всю необходимую технику для работы.
- Мы поддерживаем удалённую работу и гибкий график (по времени ориентируемся на московский часовой пояс). Во-первых, мы не контролируем рабочие часы — для нас важен результат. Во-вторых, вы можете работать, находясь за пределами России, оформив договор с офисом нашей компании в Дубае.
О процессе собеседования
Общение с нашей командой выглядит так:
Знакомство и обсуждение позиции с рекрутером → Техническое собеседование с тим лидом и руководителем разработки → Оффер.