Dodo Engineering – Telegram
Dodo Engineering
3.65K subscribers
868 photos
32 videos
3 files
691 links
Рассказываем о том, как развиваем IT в Dodo Brands.

Habr https://habr.com/companies/dododev/
Вакансии https://dodoteam.ru/vacancies/
Download Telegram
Люди наше всё, поэтому у нас появился DevRel

С января мы строим свой DevRel с блэкджеком и единым процессом по работе с людьми в IT. Начинаем с момента, когда человек совсем ничего не знает о нас, а заканчиваем моментом, когда он уходит из компании. За это отвечают три боевые подкоманды: IT brand – отвечает за всё, что транслируем в мир, IT hiring – за найм, и IT HR – за всё, что помогает разработчикам чувствовать себя комфортно и не выгорать, например. Тема новая и сложная, без наглядности не разберешься. Поэтому Лиза Швец, наш капитан и операционный директор Dodo Engineering, по совместительству, рассказала и показала, что мы делаем (и зачем) подробнее.
Бриллиантовая статья про Бриллиантовый чекаут

Как-то в начале 2019 мы собрали аналитику по адресам в заказах и так получилось, что бо́льшая часть клиентов заказывает доставку на одни и те же адреса и не устанавливают отложенное время. Получается, они хотят получить заказ «туда же, куда и в прошлый раз и как можно быстрее». И мы решили поменять флоу оплаты заказа и сделать его максимально простым именно для таких клиентов. В сферическом вакууме это можно было сделать за 2 месяца, а в реальности вышло за 9. Всё потому, что в проекте были собраны, наверно, все ошибки из возможных, которые больше не будем повторять. А Лёша Березка об этом рассказал. Наслаждайтесь)
«Трушный» подкаст для разработчиков: нужен ваш фидбэк!

Наши разработчики Женя Пешков, Женя Биккинин, Юра Пастушенко, Кирилл Левченко и Сергей Зарубин, выпустили пилот подкаста «Читаем вместе». В первом выпуске подкаста ребята читают и обсуждают книгу «Fundamentals of Software Architecture». Если интересно послушать «кухонные разговоры» про «тру» бизнес-разработку, облаченные в обсуждение книги — это то, что надо. Мы хотим разобраться выпускать ли его дальше, поэтому просим вас — поделитесь, пожалуйста, фидбэком здесь или под постами: первым или вторым.
Audio
2-й сезон, 5-й выпуск. Гость — Ксения Мешкова
Мегаскрам и портал

Сегодня у нас подкаст с Ксенией Мешковой — овнером в команде Райффайзенбанк. Она занимается развитием внутреннего корпоративного портала. Ксения рассказала про портал (много), как и зачем они его делали и как «докатились» до LeSS в команде из 70 человек через скрам и аджайл. А ещё у них там есть гемба. Разработчики, конечно, кредитки не продают, всё полегче. Гемба «на минималках».

Подкаст доступен на площадках:
SoundCloud
Google Podcasts
Яндекс.Музыка
Buzzsprout
Репост поддержки
Forwarded from Kostoev Live (та самая Курилка рестораторов) (Магомед Костоев)
В команду @doner42ru разыскивается .NET разработчик 🥰 Решили на один день похулиганить и повесить вот такое объявление на стекле 😅 На последней картинке - куар код. Наведи на него фотокамеру телефона и появится ссылочка на вакансию.
Что такое «легаси»?

Понятно, что это не «хороший код», но какой? Старый, не поддерживаемый или не обновляемый, а может просто чужой? Есть ли «полноценное» определение «легаси», на которое можно ссылаться? Кажется, мы наконец разобрались, что же это такое.
Как разработать мини-приложение для Китая?

В Китае легко затеряться. Наши первые пиццерии в Китае работали по привычной модели: точка с залом на второй линии «на доставку» не в людном месте. Но модель не «взлетела»: рядом с пиццерией десятки лавок со всеми видами еды, вроде боула с мидиями или хрустальной лапши, где клиент получит еду быстрее. Можно было бы сделать своё приложение с доставкой, но на китайских экранах сотни приложений, где можно заказать еду, и наше бы просто потерялось. Поэтому мы «пошли» в WeChat и его экосистему мини-приложений. А теперь рассказали об этом — получился большой «разбор» китайских приложений и экосистемы страны. Пригодится, если решите разрабатывать своё мини-приложение для Китая.
Audio
2-й сезон, 6-й выпуск. Гости: Аня Штенгауэр и Миша Юматов
Как сделать корпоративные ценности настоящими, а не пластмассовыми

Корпоративные ценности — это некие убеждения и принципы, которые все должны соблюдать, вроде «быть ответственным», «двигаться вперёд» и всё такое. Но зачем их соблюдать, если непонятно откуда они взялись? Зачем кто-то когда-то их выбил на скрижалях и повесил в главном зале? Без ответа на эти вопросы желание им следовать скорее не появится — они пластмассовые, не живые. Возможно поэтому в ЦИАН сделали по-другому — ценности списали с реальных людей, один из которых побывал у нас в гостях, а всем новичкам рассказывают как они появились и зачем.

Как готовили ценности, важны ли они при найме и что такое словарь «разработческих» терминов, поговорили с Анной Штенгауэр (HR BP) и Мишей Юматовым (руководителем продуктовой разработки).

Подкаст доступен на площадках:

Buzzsprout
SoundCloud
Google Podcasts
Яндекс. Музыка
ВК
Новый Open Source проект альтернативного хранилища сессий для ASP.NET на основе Cosmos DB

У нас появился ещё один проект с открытым исходным кодом – Azure Cosmos DB ASP.NET Session State Provider. Это альтернативное хранилище сессий для ASP.NET на основе Cosmos DB.

Для хранилища сессий ASP.NET обычно используют SQL Server или Redis. Но у Redis страдает доступность ради долговечности, а SQL Server не обеспечивает масштабируемости при записи.

Поэтому наш SRE Георгий Полевой использовал Cosmos DB в качестве хранилища сессий ASP.NET приложений. Так появился Open Source проект, который призван решить эти проблемы. Он обеспечивает гарантированную низкую задержку и масштабируемость.

Особенности:

— Локи хранятся отдельно, для оптимизации записей при постановке лока.
— Расходуется примерно 30-35 RU на запрос с блокировкой. В случае Read-Only, расходуется около 2 RU.

Подойдёт для приложений, которые требуют высокой масштабируемости и низкой задержки.

Подробнее о проекте:
GitHub
NuGet

#opensource #dodoopens
Delta Lake и поддержка Kotlin в Apache Spark

Нельзя просто так взять и не пойти на митап, где будет выступать Иван Трусов и Паша Финкельштейн. Трехслойная архитектура раскладки данных, особенности Delta-формата, упрощающие ETL процессы и «кишки» процесса написания поддержки ещё одного JVM-языка в Apache Spark — через неделю, 25 марта (в четверг) в 18 вечера MSK на DE or DIE #6.

Формат: Онлайн-трансляция на YouTube. Регистрируйтесь.
Audio
Седьмой выпуск второго сезона. Гость — Анатолий Панов.
Почти распилили монолит, техчас и «латентный тимлид»

Гость выпуска — Анатолий Панов. Кратко о нём:

— руководит разработкой всех вертикалей в Авито;
— пишет код только «по фану»;
— не проводит интервью инженеров;
— раскусил в Борисе «латентного тимлида» (Борис, мы тебя любим, прости за термин), когда он «собеседовался» в рубрике «Сханти Бориса» как разработчик.

Поговорили про квартальные и годовые ОКR и ОКR-ревью, Performance Review, как почти распилили монолит, про техчас для новостей технического департамента, и прокачку функциональных коммьюнити.

Подкаст доступен на площадках:

Buzzsprout
Apple Podcasts
SoundCloud
Google Podcasts
Яндекс. Музыка
ВК
«У вас новое достижение — ваше приложение добавили в App Store»

Приложение «Додо Курьер» для курьеров помогает следить за заказами, брать их в работу, строить маршрут. По статистике четверть курьеров пользуется Android-версией. А теперь приложением сможет пользоваться любой курьер с любым смартфоном, потому что мы его добавили в AppStore.

Но вот процесс добавления был тем ещё квестом:

— Для публикации закрытых приложений для бизнеса в AppStore нужно иметь Enterprise аккаунт. Но нам отказали в его предоставлении спустя 4 месяца ожидания без объяснения причины.
— Отказывали в публикации приложения 5 раз.
— Мы придумывали обходной путь с публикацией в обычном аккаунте, но тоже не получалось.
— В первые пару раз ревьюеры обнаруживали особо скрытые баг, которые тяжело воспроизвести.
— Мы неправильно просили разрешения геолокации. Без уважения видимо:).
— А последний отказ был вообще без объяснений.

Всё вот это заняло примерно полгода и каким-то чудом нам удалось добавить приложение. Воистину это чудо!
Роботы уже «захватили» мир

Цитируем Фёдора:

«Компания xRobotics, созданная российскими инженерами, запустила вместе с Аленой Тиховой пицца-робота в Dodo Pizza в городе Оксфорд в Миссисипи в США 🔥 Они сделали это, несмотря на все сложности, ограничения, карантины. Без сотен миллионов инвестиций. Гордость и восторг! Это видео снято вчера. На нем Алена одна «раскидала» все заказы в пик продаж в паре с роботом 🤖:)»

Роботы уже захватили мир, чтобы делать нам пиццу.
«Включаем» автоматизацию разработки приложений для Китая

Недавно мы закончили долгую работу над приложением для WeChat, через которое мы получаем заказы в наших пиццериях в Китае. В планах у нас похожее приложение для Alipay. Но если они похожи, то почему бы не «включить» автоматизацию, чтобы не делать одну и ту же работу снова? Отличная идея, именно поэтому Артём Казаков, наш разработчик (что работал над mini-app для WeChat), так и сделал:

— переписал сборщик на webpack, чтобы код на WeChat автоматически превращался в сборке в код, который понимает Alipay;
— настроил управление билдом приложения и снизил порог вхождения, чтобы любой фронтендер, который пришел в проект Китая в Додо с легкостью смог погрузиться в него.

В результате, разрабатывая одно приложение, мы получаем два!

«Официальная» часть закончилась — теперь технические подробности.

Настройку управления билдом мы решили за 10 недель — переписали сборщик на webpack (версии 4.4) с использованием TypeScript 3.9. Размер билда уменьшился почти в 2 раза, писать код стало проще — теперь код на TypeScript с поддержкой типов, чего очень не хватало в начале проекте, и всем знакомый SCSS. Убрали большое количество легаси, подправили основные части приложения и само мини-приложение WeChat стало работать быстрее.

Для второй задачи внесли несколько изменений в сборщике:

— Alipay принимает в верстке названия компонентов только в виде page-with-tabbar, поэтому заменили camelCase названия всех компонентов.
— Структура файлов Alipay и WeChat одинакова, однако расширения у файлов отличаются: .wxss —> .ascc, .wxml —> .axml. Решилось это обычным file-loader модулем в webpack.
— Для логики приложения в TypeScript через process.env передавали среду (wechat | alipay), и получали её внутри приложения. Поправили типы, компоненты, общение между родителем и дочерним компонентом.

Оба приложения запускаются командами «yarn start:wechat» и «yarn start:alipay». В двух консолях одновременно компилируются два приложения и отображается UI в двух IDE.

Alipay и WeChat у нас работают на одной кодовой базе. Каждая фича разрабатывается один раз и сразу работает в обоих мини-приложениях. Релиз идёт примерно по такой же схеме, что и у WeChat. Однако для Alipay автоматическая система релизов пока не сделана. Клиенты в пиццериях в Ханчжоу довольны появлением мини-приложения Alipay и активно его используют.

В планах сделать из этого Open Source проект: убрать артефакты, упростить и дописать автоматическую систему релизов для обеих платформ.

Примечание. Контекст истории у нас здесь — «Как выйти на китайский рынок с mini-app для WeChat, чтобы не прогореть», где мы подробно рассказали как делали мини-приложение в китайской соцсети.