Всем привет, меня зовут Денис Лимарев, я разработчик платежной системы Delivery Club. И сегодня я расскажу, как мне надоели однообразные ошибки и собственная невнимательность, и как я с этим борюсь. Недавно я написал статью о нашем линтере, где вскользь затрагивал возможность написания локальных проверок под конкретный проект. Сегодня раскрою эту тему подробнее и опишу приемы, упрощающие проверку кода мне и коллегам. А в конце статьи расскажу, как можно автоматизировать некоторые проверки ИБ из нашей недавней статьи, поделюсь дальнейшими планами по развитию по развитию и оставлю ссылку на доклад автора go-ruleguard (далее ruleguard).
Head of DevRel @ Uzum
Проверяем защищённость приложения на Go: с чего начать
Привет! Меня зовут Александра, я инженер по информационной безопасности в Delivery Club. Мы используем Go в качестве основного языка для разработки Web-API и представляем вашему вниманию краткое руководство по быстрой проверке сервиса на соответствие базовым требованиям безопасности. Представленную ниже информацию можно адаптировать под проекты, написанные и на других языках.
Module Federation: простая загрузка динамических модулей
Всем привет! Меня зовут Евгений, я работаю frontend-разработчиком в платформенной команде. Моя задача — помогать другим frontend-разработчикам выполнять их задачи эффективнее. Мы в Delivery Club больше года назад внедрили подход с микрофронтендами, о чём писали здесь. Вы можете найти и много других статей с описанием этого подхода.
После выхода стабильной версии Webpack 5 мы решили использовать плагин Module Federation в качестве основного способа загрузки микрофронтендов. В этой статье расскажу, с какой проблемой столкнулся при загрузке динамических модулей и как её решил. Описывать будут на примере плагина Module Federation во всех деталях. Если вы слышите про этот инструмент впервые, то советую предварительно ознакомиться.
Эволюция рекомендаций ресторанов в Delivery Club. Часть 1
Всем привет! Меня зовут Иван Максимов, я работаю Lead Data Scientist’ом в команде рекомендаций и A/B-тестирования Delivery Club. Это первая из серии статей про нашу рекомендательную систему. Я расскажу о том, как мы определили проблемы предыдущего подхода к рекомендациям, и как начали строить новый: с оптимизацией рекомендаций сразу под несколько бизнес-метрик.
Статья будет интересна data scientist’ам и менеджерам продуктов, которые хотят с нуля построить систему рекомендации контента.
Работа и коммуникации на удалёнке. Как это делать эффективно
Меня зовут Азаренко Михаил и я работаю удалённо уже 10 лет (начал ещё до того, как это стало мейнстримом). В этой статье поделюсь своим опытом и видением о работе с командой и психологическом аспекте работы в 4-х стенах. Конечно же, мой личный опыт будет через призму работы из дома и на должности управляющего владельца. Поехали.
Objectives and Key Results: инструкция по применению
Всем привет! Меня зовут Егор Толстой, я руковожу кластером App Platform в Авито. Мои команды в основном занимаются разработкой внутренних продуктов, инструментов и процессов — тем, что принято называть платформенной разработкой.
Год назад я рассказывал в этом блоге, как мы внедрили и используем performance review. Тогда я упоминал, что мы смотрим на него как на индикатор пользы, которую приносит компании каждый отдельный человек. Понимать это важно и полезно. Это помогает ответить на вопрос «насколько Вася молодец по сравнению с Петей?» и определить, какую премию кому выплатить. Но когда мы переходим на уровень команд, всё становится сильно интереснее. Здесь важно оценить конкретный результат команды и его влияние на успех компании. Высокое среднее значение перфоманса всех членов команды совсем необязательно значит, что команда достигла крутых результатов. Какая-то корреляция точно присутствует, но для оценки фактического вклада команды в успех компании этот инструмент использовать нельзя.
Для решения этой и ряда других проблем мы в Авито используем метод OKR — Objectives and Key Results. Он позволяет установить дерево понятных и легко измеримых целей во всей компании, связать результаты различных команд друг с другом и добиться достижения желаемых результатов.
С OKR мы живем вот уже почти три года. Начав с одной команды, мы масштабировали процесс до 130 разных структур — отдельных юнитов, вертикалей, кластеров, функций. В этой статье я сфокусируюсь на практических приемах того, как можно использовать OKR, чтобы получить от него пользу.
Как устроено A/B-тестирование в Авито
Всем привет. Меня зовут Данила, я работаю в команде, которая развивает аналитическую инфраструктуру в Авито. Центральное место в этой инфраструктуре занимает А/B-тестирование.
А/B эксперименты — ключевой инструмент принятия решений в Авито. В нашем цикле продуктовой разработки А/B-тест является обязательным этапом. Мы проверяем каждую гипотезу и выкатываем только позитивные изменения.
Мы собираем сотни метрик и умеем детализировать их до бизнес-разрезов: вертикали, регионы, авторизованные пользователи и т. д. Мы делаем это автоматизированно с помощью единой платформы для экспериментов. В статье я достаточно подробно расскажу, как платформа устроена и мы с вами погрузимся в некоторые интересные технические детали.
Как устроено сплит-тестирование в Badoo
Сегодня я расскажу о том, как это происходит у нас, в Badoo, при огромном количестве пользователей по всему миру.
У нас был целый «зоопарк» инструментов для сплит-тестирования во главе с A/B фрэймворком, часть из которых разрабатывалась для других целей. Помимо прочих недостатков, все эти инструменты использовали примерно один и тот же способ для разделения пользователей на варианты — это хеширование ID пользователя плюс «соль». Такой подход нас не удовлетворял, и было принято решение разработать новую версию, в которой можно было бы избежать недостатков старых версий.
IT-валентинка: 53 способа признаться в любви
Однажды на Zoom-созвоне нашей команды нить дискуссии ушла за пределы планируемого. На удаленке такое часто случается, потому что всем не хватает обычного «кухонного» общения в офисе. Разговор начался с итальянской книги, где на всех языках мира написано «Я тебя люблю». Потом были возражения, что языки программирования тоже языки, почему их там нет??? Затем мы вспомнили, что не за горами День всех влюбленных. Так мы придумали, как сделать ремейк этой книги на свой лад, а заодно вспомнить про свежий рейтинг языков программирования от IEEE.
Книгу мы выпустили небольшим тиражом, а в этом посте публикуем ее содержание: признания в любви на 53 самых популярных языках программирования. А в качестве бонуса предлагаем краткое описание каждого из них.
Автоматизация оптимизаций в Go
Привет, Хабр! Меня зовут Денис Лимарев, я разработчик платежной системы в Delivery Club.
Недавно мы провели два митапа: по оптимизациям и по нашему новому линтеру. На первом митапе разобрали оптимизации кода на Go, а в рамках второго поговорили про создание и возможности нашего нового линтера, который может искать и самостоятельно применять эти оптимизации, и не только. Как делался линтер и поиск каких оптимизаций смогли автоматизировать — читайте под катом.
Код ревью с учётом человеческих слабостей
Проверка кода (code review) — отличный инструмент для повышения качества кода, но он не учитывает один факт: отправляют и просматривают код люди, а они устают, теряют сосредоточенность, ленятся, да и просто испытывают эмоции в самые неожиданные моменты.
Поэтому хочу представить свое видение хороших и плохих практик код ревью с учётом человеческих особенностей.
Реверс уязвимого приложения от Delivery Club: результаты конкурса
Привет! Меня зовут Илья Сафронов, я руковожу направлением информационной безопасности Delivery Club. Третьего дня мы запустили конкурс по реверсу и поиску уязвимости в тестовом Android-приложении. Целью было выполнение кода на бэкенде (RCE). За время конкурса APK скачали более 400 раз, а сломали всего два раза, Hall of Fame можно посмотреть на странице скачивания.
Теперь настало время рассказать, в чём заключалась задача и как её решать. Один из победителей — @D3fl4t3 — прислал нам отличный отчёт, его мы и представляем вашему вниманию.
Результаты исследования рынка Developer Relations в РФ и СНГ: Лето 2021
Я занимаюсь Developer Relations уже шестой год. Профессия новая. Мне очень хотелось увидеть российский деврел в полном объеме: поискать не только ответы, но и сформулировать новые вопросы в нашей индустрии. Откуда в неё приходят, как развиваются, с какими сложностями сталкиваются? Поэтому я провела исследование, в котором участвовали 77 специалистов по Developer Relations. Планирую его повторять ежегодно.
Как назначить самого подходящего курьера: наша скоринговая модель
Всем привет! Меня зовут Михаил Моловцев, и я
Немного о скоринге
Представим, что у вас есть некий сервис и клиентская аудитория. У клиентов много различных характеристик, которые важны для сервиса: возраст, длительность пользования сервисом, поведенческие особенности при пользовании и т.д. Характеристик может быть сколь угодно много, и их набор зависит от предметной области.
У вас могут возникать разные задачи по категоризации пользователей. Например, определять клиентов с высокой лояльностью к сервису, или клиентов, которые точно смогут вернуть кредит, и т.д. То есть нужно будет вычислять степень соответствия каждого клиента той или иной категории.
Единая система мониторинга и оповещений BI: правда или вымысел?
Привет, Хабр! Мы, Юлия Лузганова HiJulia и Наталия Прудникова balzaant, аналитики в команде Business Intelligence Delivery Club. Наш департамент аналитики стремительно вырос за последние полтора года, сейчас в нем 50 человек и десятки различных проектов. Мы в группе BI-аналитики помогаем пользователям получать чистые и актуальные данные. Например, количество заказов, работающие рестораны и время доставки заказов — одни из главных сущностей. Наша основная задача — своевременная и бесперебойная поставка данных в аналитическое хранилище и их подготовка к дальнейшему использованию. Для этого нам необходимо оперативно выявлять проблемы с загрузкой и обработкой информации.
В этой статье мы хотели бы рассказать о создании мониторинга и системы “near real-time” оповещений. С технической точки зрения реализация простая, а вот нервных клеток разработчиков DWH, BI и пользователей после внедрения сохранено бесконечно много.
Почему мы вообще потратили время на создание системы оповещений для команды аналитики? Все просто: нам хотелось меньше заниматься поддержкой, а точнее, мы стремились минимизировать ручной мониторинг загрузки данных, состояния базы и отправки отчетов, чтобы автоматически оповещать пользователей базы данных об изменениях, неоптимальных запросах или активно растущих в объемах таблицах.
В статье вы найдете заметки, которые помогут вам реализовать подобную систему, а также идеи для автоматических оповещений. Также расскажем, как используя логи задач и немного статистики, мы выявляем аномалии в работе процессов.
Сверстать всех наверх: онбординг новых сотрудников
Как адаптировать нового сотрудника компании с момента его выхода на работу и до осознания того, что он стал полноценным членом коллектива, понимающим местные культурные и профессиональные ценности? Об этом рассказал direction lead в Lamoda Александр Афенов в своем докладе на TeamLead Conf 2020. За десять лет стажа в IT он неоднократно собирал команды с нуля, и вывел для себя набор полезных в онбординге практик.
В этой статье вы увидим типичные провалы и победы онбординга, поговорим о проблеме выбора задач на испытательный срок и контроле их выполнения.
Как провести онлайн-конференцию на 2 000 участников, даже если ты болеешь коронавирусом
Привет! Я уже рассказывала про BeeTech 2021, вот и вот ссылки на посты с видео с конференции. Сегодня о том, как мы подготовили этот масштабный ивент. Наш опыт может быть полезен HR-специалистам, начинающим деврелам и разработчикам, которые хотят провести свою конференцию.
Скажу сразу, что мероприятие далось нам нелегко. Конфа несколько раз переносилась из-за пандемии, менялся формат и список спикеров, да еще и в самый разгар подготовки и момент проведения я заболела ковидом. Но всё-таки мы это сделали. Провели 3 стрима, на которых суммарно собрали около 2 000 зрителей, представили 21 доклад, организовали 3 панельные дискуссии и розыгрыш призов. И все это за один день!
Для меня было важно, чтобы конференция была прикладной и полезной. Ведь IT-конференция — это не какая-то пиар-история, это больше про развитие комьюнити и шеринг знаний. Судя по отзывам, такой она и получилась. Поэтому я решила обобщить свой опыт подготовки, возможно, кому-то он тоже пригодится.
Геопространственное моделирование с применением методов машинного обучения
Всем привет! Меня зовут Константин Измайлов, я руководитель направления Data Science в Delivery Club. Мы работаем над многочисленными интересными и сложными задачами: от формирования классических аналитических отчетов до построения рекомендательных моделей в ленте приложения.
Сегодня я расскажу про одну из задач, которую мы решали: про автоматизацию построения зон доставки ресторанов. Зона доставки — это область вокруг заведения, и когда вы в ней находитесь, этот ресторан отображается в списке доступных для заказа. Несмотря на всю простоту формулировки, построение зон доставки ресторанов достаточно непростая задача, в которой встречается много подводных камней не только со стороны технической реализации, но и на этапе внедрения. Я расскажу про предпосылки появления этой задачи, подходы (от более простого к сложному) и подробно рассмотрю алгоритм построения зоны доставки.
Статья будет полезна не только техническим специалистам, которые могут вдохновиться нашими подходами по работе с геоданными, но и менеджерам, которые смогут прочитать про процесс интеграции нашей модели в бизнес, увидев «грабли», а самое главное — результаты, которых удалось добиться.
Статья написана по мотивам выступления с Евгением Макиным на конференции Highload++ Весна 2021. Для тех, кто любит видео, — ищите его в конце статьи.
We need to go deeper: как пасхалка в приложении Delivery Club сократила субъективное время ожидания еды
Мы знаем, что ожидание заказа часто бывает утомительным, особенно когда очень хочется кушать. Мы пристально следим за пользовательским опытом, но над временем не властны и сократить ожидание ниже объективного минимума не можем.
В декабре у нашего разработчика Александра Верестникова возникла идея интегрировать в приложение тайм-киллер — игру-пасхалку, в которую пользователь мог бы поиграть, пока ждёт заказ. Игрушка позволила бы сократить субъективное время ожидания заказа, а тот факт, что её как будто сложно найти, добавил бы происходящему таинственности. Саша зацепил этой идеей другого разработчика, Сахея Игнатьева. И они принялись за работу. После недолгих обсуждений выбор пал на змейку.