Как стать автором
Обновить
Dodo Engineering
О том, как разработчики строят IT в Dodo
Сначала показывать

Функциональное программирование в Android. Cтруктуры данных и State Machine

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров782

Продолжаем погружение в мир функционального программирования! Тема новой статьи — функциональные типы данных и их структуры. Из неё вы узнаете о принципе неизменности данных, о понятии State Machine и о способах его применения в программировании.

А ещё мы исследуем функциональную библиотеку Kotlin Arrow, обсудим поддержку Null, поток данных и функциональную обработку ошибок, а также начнём проектировать Data и Domain слои демонстрационного приложения. В общем, скучать не придётся!

Читать далее

Функциональное программирование в Android. Знакомство с парадигмой

Уровень сложностиСредний
Время на прочтение21 мин
Количество просмотров4.1K

Расширяем кругозор. Слышали про парадигму функционального программирования? Если вы iOS-разработчик, то, наверное, да, а если вы Android-разработчик, то, скорее всего, нет. Пришло время это исправить.

Привет! Меня зовут Женя Бондарев. И сегодня мы поговорим о теории функционального программирования, её особенностях и о том, что она может дать вашему Android-приложению. А ещё начнём писать pet-проект на функциональной архитектуре. Поехали!

Читать далее

Улучшаем продуктовые решения, познавая мозг. Практические советы

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров810

Продакты — это мастера решений, да только мозг — не объективная машина для их принятия. Он умный, гибкий и с отличной памятью, но вечно что-то прячет за эмоциями, дедлайнами и Slack-уведомлениями.​

Любое решение — это когнитивный бой. Вы думаете, что думаете, но на деле это рацио с эмоциями спорят.​ Сидишь ты между ними и пытаешься не забыть, кто главный.​ Но проблема не в тебе, а в том, как работает мозг.​

Привет! Меня зовут Маша Молчанова, я Project Manager в команде Online Payments. Сегодня мы с вами и разберёмся, как улучшить принятие решений в продукте с помощью знаний о нашем мозге.

Читать далее

Решаем VRP-задачи, или Как мы в Додо доставку оптимизировали

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров1.5K

Все сервисы доставки рано или поздно сталкиваются с аббревиатурой VRP. За ней скрывается сложная и важная задача оптимизации доставки. От того, насколько эффективно вы её решите, зависит и удовлетворённость клиентов, и реальные показатели бизнеса: скорость доставки, расходы на логистику.

В этой статье я расскажу о типах VRP-задач, их отличиях, и о готовых решениях, которые вы можете затестить в ваших кейсах уже сейчас. Поделюсь подходами и инструментам, которые открыл в ходе исследования темы, опытом их использования и причинами, по которым я сразу отказался от некоторых из них.

Читать далее

«Мне комбо из трёх пицц, брат». Как работает Додо Бот для заказа пиццы голосом

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.9K

Будущее уже здесь! Привет! Я Андрей Ежов, менеджер продукта в юните CVM — Customer Value Maximization. Недавно мы запустили бота для голосового заказа пиццы в Telegram.

Как это работает? Смотри: отправляешь голосовое сообщение, бот подбирает нужное блюдо, а тебе остаётся только проверить заказ и оплатить его.

А вот о том, чем нам помог бот, как с его помощью мы ускорили процесс заказа на 77%, почему вообще выбрали бота и какому бизнесу ещё подойдёт такой вариант, я расскажу в этой статье. Будет интересно!

Читать далее

KotlinJS в GitHub Actions

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров1.2K

GitHub Actions (GHA) — отличный инструмент для настройки CI/CD, а в GitHub Marketplace можно найти тысячи готовых GHA под любые задачи. Но всегда же найдётся процесс, который захочется настроить под себя. Тогда нам придётся написать кастомный GHA.

Привет! Это Макс Качинкин, Android Tech Lead в Додо. В этой статье я покажу, как создать свой GHA на Kotlin/JS, используя плагин Kotlin Multiplatform, и поделюсь готовым шаблоном в GitHub, с помощью которого вы сможете быстро написать собственный экшен на Kotlin/JS. Погнали!

Читать далее

Искусственный интеллект и мотивация: как алгоритмы учат нас ставить цели

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров3.6K

Создание алгоритмов машинного обучения преследует множество целей. Одна из них — понять, как работает наш мозг, удивительный суперкомпьютер, который учится на лету, предсказывает будущие сценарии и управляет бесчисленными процессами одновременно.

По эффективности обработки информации мозгу нет равных. От него отстают передовые нейронные сети, которые насчитывают миллиарды параметров, но обучаться от этого они не перестают. Наблюдение за тем, как это происходит, даёт нам новый взгляд на собственные когнитивные процессы, в том числе и на мотивацию.

Привет! Меня зовут Маша Молчанова. Сегодня я поделюсь своими наблюдениями о том, как механизмы ИИ перекликаются с человеческими процессами постановки целей, как нейронаука помогает лучше понимать нашу мотивацию и какие уроки мы можем взять у технологий для собственной жизни и работы. Поехали!

Читать далее

Moq: пара фич для упрощения тестов, о которых знают не все

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров3.9K

Пишете unit-тесты в .NET? Значит, скорее всего, пользуетесь Moq. На первый взгляд, это простой и легковесный фреймворк, про который все всё знают.

Но знаете ли вы, как сделать ваши тесты проще? В этой статье я расскажу о нескольких фичах Moq, которые помогут сделать ваши тесты чище, лаконичнее и удобнее для сопровождения. Погнали!

Читать далее

Карты, деньги, 20 интеграций: как подружить POS-терминалы и фронтенд приложения

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров1.4K

Бизнес Dodo Brands — глобальный. У нас уже более 1200 точек в 24 странах мира, и эти числа постоянно растут. А значит каждое наше приложение нужно постоянно адаптировать под новые реалии — обновлять вёрстку, добавлять переводы и изображения.

Однако мы работаем не только с софтом, но и с железом — своим и сторонним. Своё адаптируем по тому же принципу, что и приложения, а стороннее — с помощью плагинной системы, которую можно отдать аутсорс-командам. Но что если вашему железу — киоскам самообслуживания — нужна интеграция со сторонним железом — POS-терминалами?

На первый взгляд, ничего сложного. Мы снова пишем плагиннную систему и снова отдаём работу с ней на аутсорс. Но на деле всё куда сложнее и интереснее. Привет! Меня зовут Никита Васильков. В этой статье я расскажу вам, как подружить фронтенд приложения с POS-терминалами.

Читать далее

Минус вес, плюс опыт. Как я написал первый пет-проект и веду его уже 6 лет

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров3.1K

Сколько у вас было пет-проектов? У меня много: календари, тудушники, клоны популярных приложений. Однако до сегодняшнего дня дошёл всего один — приложение для подсчёта калорий Food Diary.

Как оно прожило 6 лет? Почему я продолжаю развивать его и сейчас? Как придумать клёвый пет-проект, который не захочется бросить в первую неделю? Ответы на все вопросы вы найдёте в этой статье. Поехали!

Читать далее

Гайд: как оценить удобство вашей дата-инфраструктуры

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров741

Представьте ситуацию: вы исследуете клиентский опыт, никого не трогаете и тут вас просят оценить, насколько участники IT-команды довольны инструментами Data Platform. Метрик вам, кстати, не дают — их вы должны выделить сами.

Случалось в вами такое? Со мной — да. Меня зовут Рамиля, я — лидер маркетинговых исследований в Додо. Сегодня расскажу, как оценить удовлетворённость сотрудников дата-инфраструктурой. Ну и гайдом обязательно поделюсь!

Читать далее

Как превратить ежемесячное ревью юнита в увлекательную встречу: опыт, советы, гайды

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров1.4K

На ревью вашего юнита приходит мало людей? Вы получаете мало фидбэка о ваших продуктах? На ваших ревью не задают вопросы даже стейкхолдеры? А может быть вы вообще не знаете, как организовать ревью?

Привет! Меня зовут Маша, я — менеджер по коммуникациями и внедрениям в Dodo Engineering. Сегодня я расскажу, как сделать ревью вашего юнита интереснее, а его участников — более вовлечёнными. А еще поделюсь практическими советами и своими шаблонами.

Читать далее

Как я писал плагин для TypeScript. Часть 2. CLI

Уровень сложностиСложный
Время на прочтение12 мин
Количество просмотров1.1K

История о плагинах для TypeScript продолжается! В этой статье расскажу о том, как написать плагин для транспиляции, зачем использовать библиотеку ts-patch, как с её помощью можно трансформировать TypeScript и о многом другом!

Конечно, из статьи вы узнаете и о тех проблемах, с которыми можно встретиться при написании плагина для CLI. Разберёмся, как их можно решить. В общем, погнали!

Читать далее

Секретная акция, или Как выйти за пределы UICollectionView

Уровень сложностиСредний
Время на прочтение20 мин
Количество просмотров3K

На собеседованиях iOS-разработчиков часто спрашивают о сложных лейаутах коллекций. Мы решили использовать их для геймификации программы лояльности в нашем приложении.

А это возможно? Сначала казалось, что нет. Но мы это сделали. Нарисовали, анимировали и спрятали за пределы экрана ячейку с секретной акцией, у которой даже отрывается корешок! И всё с помощью UICollectionView. О том, как у нас это получилось, я сегодня и расскажу.

Читать далее

Ближайшие события

Собственный Segmented Control на SwiftUI. Часть 1. Смешиваем цвета

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров2.3K

Мы в Додо давно встраиваем SwiftUI в свою дизайн-систему, а сейчас тестируем обновлённую карточку продукта в приложении Додо Пиццы. В ней есть компонент, написанный на UIKit, — слайдер для выбора размеры пиццы с Segmented Control.

Мы решили его не исправлять, а написать новый компонент на SwiftUI. Но всё оказалось чуть сложнее, ведь при движении слайдера цвета сегментов компонента должны адаптироваться и под фон страницы, и под цвет текста.

Привет! Меня зовут Михаил Андреев. Я — iOS-разработчик в Додо Пицце. Сегодня мы научимся смешивать цвета.

Читать далее

Jetpack Compose как unbundled-библиотека. Скорость UI vs. Гибкость разработки

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров4.5K

Jetpack Compose может работать медленнее системы View из-за своей архитектуры и дизайна. Но при этом он гораздо более гибкий.

Дело в том, что Jetpack Compose — это unbundled-библиотека. В этой статье я расскажу о том, что это значит и почему оно влияет на производительность, на примере нашего переезда на Compose.

Мы вместе ужаснёмся тормозам UI, вызванным переездом на Compose, и порадуемся возможности писать Compose-код, не оглядываясь на версию Андроида! Но это всё спойлеры. Давайте расскажу подробнее!

Читать далее

Пишем транзишинометр для Андроид. Как понять, что мои экраны открываются быстро?

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров2.8K

Все Android-разработчики хотят одного: чтобы интерфейс их приложения был плавным и отзывчивым, а переходы экранов — быстрыми. Уверенность в плавности и чёткости интерфейса дают замеры метрик. Но как измерить ту самую плавность, как оценить гладкость анимаций? У кого-нибудь есть плавнометр или транзишинометр?

Google даёт нам Macrobenchmark и JunkStats — инструменты для оценки общей отзывчивости и стабильности интерфейса. Но их недостаточно, чтобы понять, быстро ли у нас открываются экраны.

В этой статье мы поговорим о том, как получить полную картину по метрикам UI-перформанса. Как замерить плавность и отзывчивость интерфейса, и как оценить время открытия экрана — одно из самых частых действий для пользователя. Напишем собственный транзишинометр и замерим рендер экрана до первого onDraw и до последнего, причём и во Fragments, и в Compose.

Читать далее

Как я писал плагин для TypeScript. Часть 1. IDE

Уровень сложностиСложный
Время на прочтение15 мин
Количество просмотров3K

Привет, Хабр! Меня зовут Дима, я Head of Frontend в Dodo Engineering. Моя команда создаёт инструменты для удобной работы с фронтендами, унифицирует подходы к разработке, помогает другим командам в создании удобных пользовательских интерфейсов Dodo IS.

Недавно мне срочно понадобилось написать плагин для TypeScript. Начал я с того, что погуглил, как это сделать. По пути боролся с повышенным потреблением памяти и искал недостающие файлы в массиве, переписывал Proxy и не только, а закончил на... А впрочем, давайте вместе разбираться, зачем мне вообще понадобился плагин и как я его писал.

Читать далее

Корзина в Додо Пицце на iOS 14: баг длиной в полгода

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров8K

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

Фидбэк был положительным, но не от всех пользователей — у владельцев айфонов на iOS 14 кнопка корзины просто не отображалась. Воспроизвести баг мы не смогли и решили проблему радикально: включили отображение кнопки на iOS 14 по умолчанию.

Но спустя пару месяцев я узнал, что тикет проблемы всё ещё открыт. Я решил его закрыть и погрузился в удивительный мир… Авито, воркэраундов и не только! В этой статье расскажу вам об этом приключении! Погнали!

Читать далее

Как ускорить запуск iOS-приложения в 2 раза с помощью Network Instrument

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров6K

Приложение соединяет данные из сети с интерфейсом. Про UI сказано и написано немало, а вот сеть говорят меньше всего, хотя именно она влияет на время ожидания ответа пользователем. При этом со стороны разработчика это часто выглядит так: «ну я создал сессию, дёрнул запрос, обработал ошибку, что там ещё может быть?».

Если посмотреть на все запросы со стороны, то появится много вопросов: нужно ли переиспользовать URLSession.shared, почему первые запросы выполняются дольше остальных, как построить мониторинг качества работы сети и т.п.

Мы решили проанализировать наши приложения с помощью Network Instrument и нашли в них десяток разных проблем. В этой статье поделимся нашим опытом и расскажем о том, как найти зоны роста вашего iOS-приложения и использовать их для улучшения пользовательского опыта.

Читать далее
1
23 ...

Информация

Сайт
dodoengineering.ru
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия