Добавляйте в contentView
Заметил ошибку, когда добавил вьюшку не в contentView ячейки, а прямо в ячейку. Для таблиц это критично, могут появиться разные баги. Например, когда вы свайпаете ячейку вбок, чтобы удалить, то контент не уедет.
Мне стало интересно как заревьювить это во всем проекте, получилось так:
1. Сначала ищу по addSubview
2. Фильтрую упоминаня по cell
3. Проверяю короткий список, нахожу проблему еще в одном месте
Заметил ошибку, когда добавил вьюшку не в contentView ячейки, а прямо в ячейку. Для таблиц это критично, могут появиться разные баги. Например, когда вы свайпаете ячейку вбок, чтобы удалить, то контент не уедет.
Мне стало интересно как заревьювить это во всем проекте, получилось так:
1. Сначала ищу по addSubview
2. Фильтрую упоминаня по cell
3. Проверяю короткий список, нахожу проблему еще в одном месте
У нас продолжается выпиливание Realm
Мы удалили большую часть зависимостей на рилм, релизим первую версию. Убрали рилм из корзины, меню, активных заказов. Осталось переделать все что касается хранения городов.
Давайте с меня кусочек рефлексии про удаление, а с вас сборку потыкать пока она не зарелизилась.
Мы удалили большую часть зависимостей на рилм, релизим первую версию. Убрали рилм из корзины, меню, активных заказов. Осталось переделать все что касается хранения городов.
Давайте с меня кусочек рефлексии про удаление, а с вас сборку потыкать пока она не зарелизилась.
Зачем нужна база данных для заказа пиццы?
Кратко — низачем. База данных сначала прикрывала плохое апи.
В 2017 году Додо Пицца решила написать свое приложение. Серверная часть уже работала 5 лет, обслуживала 250+ пиццерий. Много чего было сделано для работы бизнеса, для клиентов был только сайт.
Нужно было написать новое апи для приложения. Делать надо было быстро, ребята торопились. Чтобы ускорить процесс часть работы разделили: апи было больше похоже на прокси для базы данных, часть логики решало приложение.
Все что было привязано к меню работало через базу: корзина, активный заказ. Чтобы показать товар в корзине, нужно сделать запрос к меню, получить описание продукта и только тогда вывести продукты в корзине на экран.
Запросов таких много, самый удобный способ синхронизировать все через базу и надеяться что нужная информация там есть. Конечно, после релиза приложения надо было все переделать. Но это потом, сначала еще одну важную штуку добавить, а потом еще одну…
Сложно вспомнить почему выбрали Realm, а не CoreData. Скорее всего, так было проще: схему рисовать не нужно, объекты создаются прям из кода, работает быстрее, да и опыт работы с ней был. Так и поехало.
Кратко — низачем. База данных сначала прикрывала плохое апи.
В 2017 году Додо Пицца решила написать свое приложение. Серверная часть уже работала 5 лет, обслуживала 250+ пиццерий. Много чего было сделано для работы бизнеса, для клиентов был только сайт.
Нужно было написать новое апи для приложения. Делать надо было быстро, ребята торопились. Чтобы ускорить процесс часть работы разделили: апи было больше похоже на прокси для базы данных, часть логики решало приложение.
Все что было привязано к меню работало через базу: корзина, активный заказ. Чтобы показать товар в корзине, нужно сделать запрос к меню, получить описание продукта и только тогда вывести продукты в корзине на экран.
Запросов таких много, самый удобный способ синхронизировать все через базу и надеяться что нужная информация там есть. Конечно, после релиза приложения надо было все переделать. Но это потом, сначала еще одну важную штуку добавить, а потом еще одну…
Сложно вспомнить почему выбрали Realm, а не CoreData. Скорее всего, так было проще: схему рисовать не нужно, объекты создаются прям из кода, работает быстрее, да и опыт работы с ней был. Так и поехало.
Как работало?
Первую версию приложения сделала команда на аутсорсе. Уже тогда понимали, что проект будет жить долго, стран будет много, фич навалом. Тогда ведущими программисту казалось важным заложить поддержку работы в офлайне. Или, хотя бы, сделать восстановление между сессиями работы приложения, чтобы меню появлялось сразу на запуске, без скачивания. Архитектурно это заложили с первой строчки.
Так как домены связаны, а восстанавливать хочется любой экран, то складывать в базу надо вообще все, чтобы было откуда брать. В итоге, поток данных стал таким:
- получили из сети.
⁃ положили в базу, разметили связи между таблицами.
⁃ прочитали из базы, связанные объекты подтянулись сами.
⁃ переложили данные во вью модели, а дальше уже MVVM.
В следующий раз расскажу где нам это мешало, и в какой момент стало прям больно.
Первую версию приложения сделала команда на аутсорсе. Уже тогда понимали, что проект будет жить долго, стран будет много, фич навалом. Тогда ведущими программисту казалось важным заложить поддержку работы в офлайне. Или, хотя бы, сделать восстановление между сессиями работы приложения, чтобы меню появлялось сразу на запуске, без скачивания. Архитектурно это заложили с первой строчки.
Так как домены связаны, а восстанавливать хочется любой экран, то складывать в базу надо вообще все, чтобы было откуда брать. В итоге, поток данных стал таким:
- получили из сети.
⁃ положили в базу, разметили связи между таблицами.
⁃ прочитали из базы, связанные объекты подтянулись сами.
⁃ переложили данные во вью модели, а дальше уже MVVM.
В следующий раз расскажу где нам это мешало, и в какой момент стало прям больно.
Интервью
Впервые дал интервью. Рассказал про мотивацию писать на хабр, как делать все задачи интересными, немного про беруши и удаленку
https://habr.com/ru/post/523406/
Впервые дал интервью. Рассказал про мотивацию писать на хабр, как делать все задачи интересными, немного про беруши и удаленку
https://habr.com/ru/post/523406/
Хабр
Как искать драйв в рутине и работать продуктивнее — рассказывает Head of Mobile Додо Пиццы
Михаил Рубанов ( @akaDuality ) рассказал о том, как развивать личную продуктивность, искать драйв в рутине и зачем IOS-разработчику блог на Хабре. Интервью подготовила команда проекта Veer – это...
Хоткеи, снипеты, шаблоны
Саша Спиричев (@alspirichev) собрал кучу хоткеев, снипетов и шаблонов и показал как можно применять к своей работе. Шаблоны можно забрать себе из репозитория.
https://habr.com/ru/company/dododev/blog/527740/
Саша Спиричев (@alspirichev) собрал кучу хоткеев, снипетов и шаблонов и показал как можно применять к своей работе. Шаблоны можно забрать себе из репозитория.
https://habr.com/ru/company/dododev/blog/527740/
Хабр
На пути к «10x инженеру»: шорткаты, сниппеты, шаблоны
Мы разобрались, как избежать рутины с помощью шорткатов для навигации, редактирования и отладки, чем могут помочь кастомные сниппеты и как прокачать файловые шаблоны. Описали это в «методичке» по...
No realm. Финал
Мы выпилили Realm из проекта за 3.5 месяца, сборка на ревью. Впереди релиз и возможные фиксы. Мы все сто раз проверили, но все равно хотим убедиться, что все работает нормально.
Если хотите помочь, то можете поставить сборку до того как она появится у всех в понедельник. Важнее всего проверить первый запуск: город выбрался, авторизация не слетела.
Если закажите что-нибудь, то будет совсем супер. Там скидка на вторую пиццу 70% по промокоду BLACK.
TestFlight научился самостоятельно обновлять версии, поэтому можете пользоваться сборками из него и стать нашим постоянным бета-тестером! Если что-то пошло не так, то делайте скриншот, там появится форма обратной связи.
Выпиливание в цифрах:
- Стартанули 12 августа, отправили на ревью 26 ноября.
- 3 месяца разрабы Realm чинили креш с которого все началось.
- 8 Мб занимает Realm просто после добавления в подфайл.
- За релиз мы срезали 20 Мб, теперь весим ≈40 Мб после распаковки. Знаем как срезать еще 10.
- Сложнее всего было переделать меню, ушло 14 дней.
- В коде были 2720 упоминаний realm. Даже после выпиливания их осталось 46, это аналитика и удаление оставшихся файлов от базы.
- У нас появился первый самостоятельный фича-фреймворк
Мы выпилили Realm из проекта за 3.5 месяца, сборка на ревью. Впереди релиз и возможные фиксы. Мы все сто раз проверили, но все равно хотим убедиться, что все работает нормально.
Если хотите помочь, то можете поставить сборку до того как она появится у всех в понедельник. Важнее всего проверить первый запуск: город выбрался, авторизация не слетела.
Если закажите что-нибудь, то будет совсем супер. Там скидка на вторую пиццу 70% по промокоду BLACK.
TestFlight научился самостоятельно обновлять версии, поэтому можете пользоваться сборками из него и стать нашим постоянным бета-тестером! Если что-то пошло не так, то делайте скриншот, там появится форма обратной связи.
Выпиливание в цифрах:
- Стартанули 12 августа, отправили на ревью 26 ноября.
- 3 месяца разрабы Realm чинили креш с которого все началось.
- 8 Мб занимает Realm просто после добавления в подфайл.
- За релиз мы срезали 20 Мб, теперь весим ≈40 Мб после распаковки. Знаем как срезать еще 10.
- Сложнее всего было переделать меню, ушло 14 дней.
- В коде были 2720 упоминаний realm. Даже после выпиливания их осталось 46, это аналитика и удаление оставшихся файлов от базы.
- У нас появился первый самостоятельный фича-фреймворк
Столкнулись с тем, что клавиатура стала вылетать в Латвии и Эстонии.
Рассказал как чинили и что нашли
Рассказал как чинили и что нашли
Medium
Как клавиатура в Латвии крешнулась
С клавиатурой все время что-то случается. Например, подсказки для номера телефона не работали больше года, починили только в iOS 14.2…
Хакатон и аппклип
Каждый год Додо Пицца усиленно готовится к Новому Году: в конце декабря пиковые нагрузки на всю сеть, все IT должно работать гладко. Крайней мерой является кодфриз: с середины декабря нельзя релизить (и как следствие, писать) код для продакшена.
Это отличное время заняться другими делами: профилированием, пайплайном, планированием, ретро. В конце декабря мы провели мобильный хакатон: 4 команды взяли разные фичи которые не попадали в продуктовый беклог и посмотрели как там что работает:
- Баблы для статуса заказа на андроиде.
- Темная тема
- AR для выбора размера пиццы
- App Clip
Я был в команде аппклипа, рассказал про него подробней.
Каждый год Додо Пицца усиленно готовится к Новому Году: в конце декабря пиковые нагрузки на всю сеть, все IT должно работать гладко. Крайней мерой является кодфриз: с середины декабря нельзя релизить (и как следствие, писать) код для продакшена.
Это отличное время заняться другими делами: профилированием, пайплайном, планированием, ретро. В конце декабря мы провели мобильный хакатон: 4 команды взяли разные фичи которые не попадали в продуктовый беклог и посмотрели как там что работает:
- Баблы для статуса заказа на андроиде.
- Темная тема
- AR для выбора размера пиццы
- App Clip
Я был в команде аппклипа, рассказал про него подробней.
Medium
Хакатон и аппклип
Провели хакатон, попробовали написать AppClip для приложения Додо Пиццы. Набрали инсайтов, делимся.
Курс про доступность
Самая большая проблема адаптации доступности — нет никакой школы и информации, со всеми проблемами приходиться биться как в первый раз. Другая сложность — совершенно непонятно как проектировать для людей с нарушениями, это другой мир, а знающего человека рядом нет.
Валерия Курмак меняет положение дел и запускает курс про доступность http://kurmak.info/. За месяц можно узнать какие бывают ограничения, как это решать, пообщаться с незрячими и разобрать проблемы с которыми они сталкиваются. Курс подойдет как программистам так и дизайнерам.
Я рассказываю на курсе про мобилу и VoiceOver: поделюсь всем опытом что накопился, покажу самые забористые кейсы. Расскажу как строить из этого процесс: проектировать, проверять и тестировать. Будут упражнения, домашка и разбор ваших проблем. Незрячие протестируют домашку и дадут фидбек.
Курс начинается 6 февраля, длится месяц, проходит по выходным. С VoiceOver плохо в любом российском продукте, так что полезно всем.
По теме я уже написал 3 статьи, это может быть хорошим интро.
⁃ Voice Control и VoiceOver: как адаптировать приложение для незрячих или неподвижных
⁃ VoiceOver на iOS: каждый контрол ведёт себя по-разному
⁃ VoiceOver на iOS: решение типовых проблем
Самая большая проблема адаптации доступности — нет никакой школы и информации, со всеми проблемами приходиться биться как в первый раз. Другая сложность — совершенно непонятно как проектировать для людей с нарушениями, это другой мир, а знающего человека рядом нет.
Валерия Курмак меняет положение дел и запускает курс про доступность http://kurmak.info/. За месяц можно узнать какие бывают ограничения, как это решать, пообщаться с незрячими и разобрать проблемы с которыми они сталкиваются. Курс подойдет как программистам так и дизайнерам.
Я рассказываю на курсе про мобилу и VoiceOver: поделюсь всем опытом что накопился, покажу самые забористые кейсы. Расскажу как строить из этого процесс: проектировать, проверять и тестировать. Будут упражнения, домашка и разбор ваших проблем. Незрячие протестируют домашку и дадут фидбек.
Курс начинается 6 февраля, длится месяц, проходит по выходным. С VoiceOver плохо в любом российском продукте, так что полезно всем.
По теме я уже написал 3 статьи, это может быть хорошим интро.
⁃ Voice Control и VoiceOver: как адаптировать приложение для незрячих или неподвижных
⁃ VoiceOver на iOS: каждый контрол ведёт себя по-разному
⁃ VoiceOver на iOS: решение типовых проблем
Казино Инфо Кз -
Популярность онлайн-казино в Казахстане ▷ Причины роста и перспективы 2025
Узнайте, почему онлайн-казино становятся всё популярнее в Казахстане. Причины роста интереса, законодательство, риски и будущее индустрии азартных игр в 2025 году.
Привычка записывать
Я понял что у меня выработалась лучшая моя привычка — все записывать: встречи, собеседования, мысли, идеи, планы. Скриншотить интерфейс, графики, схемы. И прикидывать, интересно ли это еще кому-то. А почти все оказывается интересно.
Оказалось, что для разных мыслей есть разные форматы, зависит от объема: твит, пост в телеге, заметка на медиуме, статья на хабре, книга в пдфе. И все это работает и интересно.
Я всегда отталкиваюсь от артефакта. Есть картинка и мысль к ней — это пост. Есть десяток картинок и мыслей — статья. Снял видос — надо поделиться! Можно просто делиться ссылками что прочитал, это тоже работает.
Не надо стараться покорить супер крутыми знаниями, они редко кому пригодятся, а у новичковых материалов своя ниша. Получается, что мой читатель это мидл+ разработчик с которым можно обсудить как делать чуть красивий и правильней, показать куда можно ему расти.
Совсем не страшно ошибиться, поправят и расскажут, покажут и направят, пусть и не всегда в мягкой форме. Просто за критикой надо искать ценное что мне хотели сообщить в трех предложениях.
Найти тему оказалось супер просто: я рассказываю о том, что делаю. Каждый день мы создаем что-то, много людей еще не умеет делать этого, многим было бы интересно узнать чуть больше. Учиться рассказывать про свою работу нужно хотя бы для резюме.
Сейчас я опубликую это, от канала отпишется пара человек. Это тоже норма, позже незаметно придут десять новых. А я передвину эту заметку из инпрогресс в дан.
Полтора года назад я возмущался, что все не умеют писать резюме. А теперь к 8/10 кандидатов приходят к нам, потому что читали блог и им интересно.
В итоге, напряг написать что-то совсем ушел, зато появилась привычка рассказывать о своей работе.
Я понял что у меня выработалась лучшая моя привычка — все записывать: встречи, собеседования, мысли, идеи, планы. Скриншотить интерфейс, графики, схемы. И прикидывать, интересно ли это еще кому-то. А почти все оказывается интересно.
Оказалось, что для разных мыслей есть разные форматы, зависит от объема: твит, пост в телеге, заметка на медиуме, статья на хабре, книга в пдфе. И все это работает и интересно.
Я всегда отталкиваюсь от артефакта. Есть картинка и мысль к ней — это пост. Есть десяток картинок и мыслей — статья. Снял видос — надо поделиться! Можно просто делиться ссылками что прочитал, это тоже работает.
Не надо стараться покорить супер крутыми знаниями, они редко кому пригодятся, а у новичковых материалов своя ниша. Получается, что мой читатель это мидл+ разработчик с которым можно обсудить как делать чуть красивий и правильней, показать куда можно ему расти.
Совсем не страшно ошибиться, поправят и расскажут, покажут и направят, пусть и не всегда в мягкой форме. Просто за критикой надо искать ценное что мне хотели сообщить в трех предложениях.
Найти тему оказалось супер просто: я рассказываю о том, что делаю. Каждый день мы создаем что-то, много людей еще не умеет делать этого, многим было бы интересно узнать чуть больше. Учиться рассказывать про свою работу нужно хотя бы для резюме.
Сейчас я опубликую это, от канала отпишется пара человек. Это тоже норма, позже незаметно придут десять новых. А я передвину эту заметку из инпрогресс в дан.
Полтора года назад я возмущался, что все не умеют писать резюме. А теперь к 8/10 кандидатов приходят к нам, потому что читали блог и им интересно.
В итоге, напряг написать что-то совсем ушел, зато появилась привычка рассказывать о своей работе.
Выпилили Realm
В прошлом году мы сделали несколько важных технических задач:
- начали писать тесты на все
- сделали инструменты для моков UI тестов
- закрепили CI как практику
- выпилили Realm с которым жили 3 года.
Про все это еще, наверно, расскажем, а пока написал зачем удаляли, как удаляли и что вместо Realm появилось в проекте.
https://habr.com/ru/company/dododev/blog/539360/
В прошлом году мы сделали несколько важных технических задач:
- начали писать тесты на все
- сделали инструменты для моков UI тестов
- закрепили CI как практику
- выпилили Realm с которым жили 3 года.
Про все это еще, наверно, расскажем, а пока написал зачем удаляли, как удаляли и что вместо Realm появилось в проекте.
https://habr.com/ru/company/dododev/blog/539360/
Хабр
Быстрый, простой, сложный: как мы выпилили Realm
Когда на собеседованиях я спрашиваю у кандидата с какими базами он работал и что делал, то чаще всего слышу про Realm. Типичный ответ: он быстрее и с ним проще работать, создал конфиг, описал модель,...
Короткие встречи
На удаленке стало намного больше созвонов и у многих расписание поделилось на часовую сетку. Иногда расписание получается очень плотным.
Чтобы успевать между встречами попить/слить водичку проводите встречу за 50 минут и 10 оставляйте на перерыв. Даже настройка такая есть в гугл-календаре, включите ее.
Самые крутые могут ставить встречи не на час, а на полчаса. Это 25 минут общения, принцип такой же.
На удаленке стало намного больше созвонов и у многих расписание поделилось на часовую сетку. Иногда расписание получается очень плотным.
Чтобы успевать между встречами попить/слить водичку проводите встречу за 50 минут и 10 оставляйте на перерыв. Даже настройка такая есть в гугл-календаре, включите ее.
Самые крутые могут ставить встречи не на час, а на полчаса. Это 25 минут общения, принцип такой же.
Почему runBlocking с Dispatchers.Main блокирует UI-поток
Максим Качинкин рассказал про нюанс работы корутин с билдером runBlocking.
Скиньте знакомы андроид разработчикам, им понравится.
https://habr.com/ru/company/dododev/blog/541650/
Максим Качинкин рассказал про нюанс работы корутин с билдером runBlocking.
Скиньте знакомы андроид разработчикам, им понравится.
https://habr.com/ru/company/dododev/blog/541650/
Хабр
Как заблокировать приложение с помощью runBlocking
Когда мы начинаем изучать корутины, то «идём» и пробуем что-то простое с билдером runBlocking , поэтому многим он хорошо знаком. runBlocking запускает новую корутину, блокирует текущий поток и ждёт...
Новый чекаут
Долгий, сложный и важный проект прошлого года это редизайн чекаута.
Алексей Березка рассказал почему было больно, где накосячили и чему научились.
https://habr.com/ru/company/dododev/blog/542636/
Долгий, сложный и важный проект прошлого года это редизайн чекаута.
Алексей Березка рассказал почему было больно, где накосячили и чему научились.
https://habr.com/ru/company/dododev/blog/542636/
Хабр
Как мы накосячили пока делали Бриллиантовый чекаут™ 9 месяцев, а планировали 2
В начале 2019 мы собрали аналитику по адресам в заказах и так получилось, что бо́льшая часть клиентов заказывает доставку на одни и те же адреса. При этом они не устанавливают отложенное время....
Код без тестов — это легаси
Во время затянувшейся разработки нового чекаута мы столкнулись с тем, что какие-то кейсы приходилось чинить несколько раз, слишком запутанный домен. Без тестов новый чекаут сразу превращался в сложное легаси: некоторые кейсы сложно понять, легко сломать.
Решение очевидное: писать автоматические тесты, быстро узнавать от них если мы что-то сломали. К маю прошлого года у нас как-то накопилось 900 тестов и мы стали активно писать новые.
Мы перешли на Quick тесты и интенсивные моки, запустили проект по автоматизации UI-тестов, собирали метрики по скорости написания, и много чего еще. Спустя 9 месяцев у нас 3400 юнит-тестов, 180 UI, активно рефлексируем над результатом и думаем куда идти дальше.
Об этом я когда-нибудь расскажу, а пока перевод отправной точки всей автоматизации: код без тестов — это легаси
Во время затянувшейся разработки нового чекаута мы столкнулись с тем, что какие-то кейсы приходилось чинить несколько раз, слишком запутанный домен. Без тестов новый чекаут сразу превращался в сложное легаси: некоторые кейсы сложно понять, легко сломать.
Решение очевидное: писать автоматические тесты, быстро узнавать от них если мы что-то сломали. К маю прошлого года у нас как-то накопилось 900 тестов и мы стали активно писать новые.
Мы перешли на Quick тесты и интенсивные моки, запустили проект по автоматизации UI-тестов, собирали метрики по скорости написания, и много чего еще. Спустя 9 месяцев у нас 3400 юнит-тестов, 180 UI, активно рефлексируем над результатом и думаем куда идти дальше.
Об этом я когда-нибудь расскажу, а пока перевод отправной точки всей автоматизации: код без тестов — это легаси
Мини-приложения в Китае
Помню, как впервые обсуждали запуск в Китае: надо сделать мини-приложение для какого-то чата. Что сделать? Как оно выглядит? Какой там интерфейс? Как проектировать на китайском?
Оказалось, что мини-приложения это такие сайты которые из мессенджера открываются и имеют доступ к инфраструктуре телефона: к пушам, авторизации, оплате и т.п.
С тех пор прошло пару лет, мы запустились в Китае, пробуем разные концепции и работаем уже с обоими мессенджерами: WeChat и AliPay
Рассказали как мы запускались, какой путь прошли и как все выглядит сейчас. Посмотрите на интерфейсы, они сильно другие.
Помню, как впервые обсуждали запуск в Китае: надо сделать мини-приложение для какого-то чата. Что сделать? Как оно выглядит? Какой там интерфейс? Как проектировать на китайском?
Оказалось, что мини-приложения это такие сайты которые из мессенджера открываются и имеют доступ к инфраструктуре телефона: к пушам, авторизации, оплате и т.п.
С тех пор прошло пару лет, мы запустились в Китае, пробуем разные концепции и работаем уже с обоими мессенджерами: WeChat и AliPay
Рассказали как мы запускались, какой путь прошли и как все выглядит сейчас. Посмотрите на интерфейсы, они сильно другие.
Хабр
Как выйти на китайский рынок с mini-app для WeChat, чтобы не прогореть
В Китае легко затеряться. Наши первые пиццерии в Китае работали по привычной модели: точка с залом на второй линии, не в людном месте, и работала на доставку. Но модель работала не так как мы хотели,...
Известность команд мобильной разработки в 2020
Егор Толстой сделал 5 ежегодный опрос мобильных разработчиков. Dodo Engineering там появился впервые, чему мы очень рады.
Расскажите как вы учитесь, кого смотрите и кто вам нравится: https://docs.google.com/forms/d/e/1FAIpQLScGfcaDYkvd9u8AqpheKxQJ8xnj2Xd4fDgFc6hDkHRsfmM8mg/viewform?fbzx=-5669430762113250891
Егор Толстой сделал 5 ежегодный опрос мобильных разработчиков. Dodo Engineering там появился впервые, чему мы очень рады.
Расскажите как вы учитесь, кого смотрите и кто вам нравится: https://docs.google.com/forms/d/e/1FAIpQLScGfcaDYkvd9u8AqpheKxQJ8xnj2Xd4fDgFc6hDkHRsfmM8mg/viewform?fbzx=-5669430762113250891
Google Docs
Исследование российских команд мобильной разработки, 2021
Ежегодный опрос про состояние отечественного рынка мобильной разработки. Когда отвечаете на вопросы, старайтесь учитывать впечатления, полученные за весь прошедший 2020 год.
Задать вопросы можно в Telegram: @etolstoy
Отчет за 2020: https://etolstoy.com/mobile…
Задать вопросы можно в Telegram: @etolstoy
Отчет за 2020: https://etolstoy.com/mobile…