#react native

10 постов
пост №1326Разработка и инженерия

Вдохновляющая статья Coinbase о том, как они переписали свои приложения для iOS и Android на React Native и переформатировали команды под это. Перескажу основные тезисы.

Крупнейшая криптобиржа на свете, 56 миллионов пользователей в 100 странах, полтора миллиарда долларов прибыли в квартал.

200+ экранов, 30 мобильных разработчиков. Кросс-функциональные команды, которые поддерживали фичи, были такие: 8 человек, 2 бэкендера и 6 фронтов, по 2 на каждую платформу — 2 веб, 2 iOS, 2 Android. Цель перехода: из команд по 8 инженеров, сделать команды по 5, 2 бэкендера и 3 React Native.

Как сделали?

1. Не пытались переписать большое приложение по-частям (очень сложно интегрировать react native с нативой), а сделали отдельное приложение с самой сложной частью функциональности для небольшой части Pro-пользователей, чтобы проверить, возможно это вообще или нет — заняло 6 месяцев, всем понравилось.

2. На втором этапе, решили-таки попробовать впилить небольшой кусочек react native в старое приложение — добавили в основное старое приложение новый онбординг на react native из приложения Pro. Разработчикам было больно (вспомните статьи Airbnb), но за 6 месяцев справились.

3. Учитывая опыт из двух предыдущих шагов, переписали основное приложение на React Native за 6 месяцев, не пытались дружить нативу с react native.

4. Profit. Красивые числа о технических и бизнес-метриках смотрите в картинке ниже.

Пишут, что теперь и старые разработчики мобильных приложений и веб-разработчики сайта пишут код мобильных приложений на React Native — всего больше 100 комиттеров в репу.

Дальше собираются выделить общий уровень данных из веб-сайта на react и мобильных приложений на react native в общие библиотеки.

Их бы устами да мед пить! 🚀

пост №1151Разработка и инженерия

В React Native есть теоретическая возможность менять поведение мобильных приложений, на лету загружая свежий код. Это почти обновление версий приложения в обход стандартного механизма апстора и google play.

Вчера на нашу вакансию react native разработчика в w1d1 откликнулся Игорь Зиновьев (просто познакомиться) и мы вспомнили, что давно хотим эту функцию, но никак её не прикрутим.

Игорь рассказал, что у Microsoft специально для этого есть удобный продукт, называется App Center CodePush.

Microsoft App Center — очень симпатичный сервис для разработки мобильных приложений. Это полный комплект CI/CD: автоматическая сборка с возможностью загрузки билдов из master ветки в сторы, удобный механизм распространения бета-версий в обход тестфлайта, автоматизированное тестирование на живом железе, креши, аналитика и многое другое. Всё это богатство с нормальным интерфейсом, человеческой документацией и хорошо интегрировано друг-с-другом.

Результативное собеседование, хоть и без оффера сразу после!

P.S. Интересно, как сработала идентификация «свой-чужой» у ребят, серьезно занимающихся react native. Кодовое слово — gesture handler.

пост №1144Работа и карьера

Как найти программиста? Первый шаг — написать толковую вакансию. Разберем на примере, как это сделать.

Ищем React Native-напарника в W1D1.

👉 Важно в одной фразе объяснить, что за компания, чем она занимается.

W1D1 — сервис для развития креативности. Каждый день мы даем новое творческое задание — обычно сфотографировать что-то или заснять на видео и участники анонимно делятся друг-с-другом результатами. Это — MVP. В ближайшие полгода будем экспериментировать с новыми функциями и партнерствами. Наша амбиция — стать главным сервисом для развития креативности, это огромный рынок.

👉 Компания — стартап? В стартапе главное — кто делает, кто в вкладывается деньгам и на сколько этих денег хватит.

👉 Компания со стабильным доходом и супер низкой текучкой? Стоит указать явно.

Это стартап. Основатель — бывший арт-директор W-O-S Леша Ивановский; основной разработчик приложения (который и ищет себе напарника) — Андрей Кеске, раньше программировал в Airbnb. Инвесторы — друзья друзей, денег есть на 6 месяцев. Есть понятный план как за это время показать рост необходимый для следующего раунда.

👉 Если у вас гигантское легаси, которое вы уже третий год пытаетесь зарефакторить, но всё никак не получается — это нужно сказать прямо, потому что есть люди, для которых это будет вызов. Наша задача — это не заманить максимальное количество кандидатов, а отсеить левых и привлечь тех, кому мы реально понравимся.

У нас свежее приложение без легаси. Пока только iOS-приложение на react native, на бэкенде нода, apollo (graphql).

👉 Чем именно крута вакансия? Нужно безбожно хвастаться

Каждый месяц мы выпускаем одну мажорную фичу. Это как дроп коллекции в фешн индустрии. Фича может быть контентной, а не функциональной, так что есть время прогать что-то большое.

Кратко:
— react Native, 99% всех компонентов функциональные, сильно декомпозированы — <100 строк на компонент;
— apollo для работы с бекэндом;
— стек можно посмотреть по package.json’у
— свой собственный модуль камеры, написанный на Свифте (можно закопаться в эту технологию, если есть желание);
— ESlint, Prettier и pre-commit хуки, чтобы не думать про стили;
— часть решений и модулей мы выкладываем в опен сорс (например) и в будущем хотим продолжить эту практику;

Большим плюсом будет знание бэкенда на ноде, чтобы сделать фичу целиком, а не только в приложении.

👉 Удаленка или офис? Фултайм или парт-тайм? Какие основные рабочие инструменты? Они много говорят о компании. Какая зарплата? Есть ли дополнительные бонусы или ограничения, о которых стоит знать?

Работа удаленная, фултайм. Лёша в Москве, Андрей в Нью-Йорке, встречаемся в телеграме, трелло и зуме. Зарплата 200-400тр, в случае высокой результативности можем договориться о доле.

👉 Обязательно укажите, куда обращаться. Ждете портфолио или примеры кода в первом сообщении — напишите. Хорошо бы объяснить процесс собеседования (сколько кругов ада предстоит пройти) и когда будет результат.

Пишите @leshaivanovsky в телегу. После знакомства мы дадим доступ к коду и предложим сделать небольшую фичу (за деньги, естественно). Если процесс и результат понравятся — начнем работать фултайм.

👉 Можно приложить картинку. Это как принт на футболке, привлекает внимание и доносит одну простую идею о вас.

Вакансия настоящая и я рекомендую w1d1.

пост №1124Разработка и инженерия

Через 15 минут, мой партнёр по бизнесу Федя будет поднимать docker swarm кластер для замечательного стартапа w1d1 в прямом эфире.

Вы можете посмотреть сами на Ютубе! Это лайв, заранее мы ничего не готовили, все будет как в жизни.

W1d1 - сервис для развития творчества. Отчасти игра, отчасти - соцсеть. Каждый день, в 10 утра, она присылает одно творческое задание всем участникам. Результат выполнения - фото или видео. Можно посмотреть, какие ответы присылают другие участники. Если у вас айфон - попробуйте сами, затягивает. Для Android запустят чуть позже.

Приложения кроссплатформенные, написаны на react native. Бэкенд тоже на жаваскрипте, nodejs. Там несколько сервисов, которые сейчас запускаются руками через docker start. Федя постарается 12-факторизовать бэкенд и настроить docker swarm, чтобы можно было меньше беспокоиться о падениях и упростить деплой. Для хранения конфигурации он применит ansible.

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

P. S. Мы недавно писали подкаст с основателем w1d1 Лешей Ивановским. Рекомендую, если вдруг пропустили.

пост №1109Продукты и дизайн

Доброе утро! Эпизод, в котором запуск — завтра. Леша Ивановский (бывший арт-директор культового медиа W-O-S) рассказывает про свой новый проект W1D1, который помогает людям быть более творческими. А ещё делится советами, как перестать тупить в телефон.

Душевный разговор с дизайнером, который объясняет техническому директору, как сделать так, чтобы анимации в React Native не тормозили. Apple, Google, Castbox, Spotify, Яндекс, Overcast, веб-версия.

пост №692Разработка и инженерия

Airbnb — одна из немногих крупных компаний (больше 100 мобильных разработчиков!), которая сделала ставку на React Native в мобильной разработке два года назад.

Их библиотека Native Navigation — одна из самых популярных.

За два года Airbnb написали на RN 80 тысяч строк кода, 220 экранов и 40 тысяч строк js-инфраструктуры (натива при этом 800 экранов и 320 тысяч строк кода).

Так вот, Airbnb отказывается от RN. Они описывают технические и организационные трудности в серии постов.

Аргументы, как всегда: незрелость технологии, плохие инструменты разработки, малое комьюнити и как следствие слабая веб-документация (в сравнении с iOS и Android), необходимость разбираться хорошо в мобайле и в js одновременно, сложность комбинации команд, сложность найма, низкая «воспринимаемая разработчиками» скорость разработки, добавленная сложность тестирования.

Ух.

Интересно, что они продолжают верить в Server-Driven Rendering. Это подход, в котором клиенты (мобильные приложения) умеют рисовать базовые компоненты, а сервер присылает список компонент и данные для экрана. Это дико интересный подход, и его на самом деле можно реализовать без RN (с RN он сам напрашивается). Сложности, которые возникают со старыми клиентами и фолбеками компонент в SDR — по настоящему интересная техническая задача. В ней нужно балансировать «красоту и гибкость в будущем» со сложность разработки «здесь и сейчас», а цена ошибки достаточно высока. Вот бы кто-то поделился своим опытом в этой области.

Часть проблем с RN, описанные Airbnb, специфичны для продуктовых компаний, часть — для крупных продуктовых компаний. В любом случае, «не создай себе кумира», выбирайте технологии не по хайпу, но на основе ваших потребностей и ваших ресурсов.

пост №676Разработка и инженерия

Айфоны и андроиды. Для потребителя разница минимальна. Тот же экран блокировки с большими цифровыми часами, те же самые приложения.

Для любого человек в этом варящегося, iOS и Android - две параллельные вселенные. То, что ты сделал в одном мире - во многом не применимо в другом. Редкие программисты умеют разрабатывать приложения для обоих платформ одновременно, знают хорошо обе платформы - единицы.

Если компания хочет сделать приложение и для андроидов и для айфонов, она содержит два параллельных отдела мобильной разработки - для iOS и для Android. Каждая из двух программ выглядит немного по-своему, сроки разработки немного разные, ошибки — уникальны.

Каждые пару лет появляется новая технология «кроссплатформенной разработки». Меняются названия, технологии под капотом и компании, её продвигающие. Я на своём профессиональном веку увидел хайп и угасание гигантов PhoneGap — монструозный HTML, купленный Adobe и позже отданный в Open Source и переименованный в Apache Cordova; Xamarin — пишем на C#, который компилируется в нативные приложения для каждой платформы. Microsoft купила её в 2016.

Остаются неизменными:
1) набор обещаний: в два раза меньше разработчиков (одна общая команда) и программы, выглядящие и работающие одинаково на айфонах и на андроидах;
2) проблемы — кросплатформенные программы тормозят, нещадно жрут батарейку, выглядят как пришельцы с другой планеты для внимательных пользователей каждой платформы, а ещё в какой-то момент эти инструменты начинают создавать больше проблем, чем решают.

Последняя модная (суперхайп) технология такого рода — React Native от Facebook. Программируем на современном lingua franca — javascript, а весь пользовательский интерфейс может быть нативным для платформы. Работает быстро, выглядит классно. Потенциально можно программировать силами веб-разработчиков (ну почти). Самое главное — в старые приложения можно добавлять новые экраны, сделанные на react-native. Технология молодая (2015 год), есть множество нерешенных проблем, но это первая кроссплатформенная балалайка, которую мне хочется попробовать. В России я знаю несколько компаний, которые успешно используют RN в продакшен-разработке. Радио Арзамас сделано на RN, например.

Я рассказываю всё это, чтобы вы поняли «интригу, скандал и расследование», которые рождает вот этот тред в твиттере

https://twitter.com/sandofsky/status/1002637340291018754 (мол сам фб перестал использовать RN в основном приложении)

пост №125Разработка и инженерия

Но есть и хорошие новости, вот целых два классных инструмента для того, чтобы (учиться) программировать-прототипировать в браузере:

1. Glitch от легендарных FogCreek, создателей Trello.
К классическому функционалу Codepen и JSFiddle, которые позволяют редактировать html/js/css в браузере и тут же видеть результат, добавлена сильная социальная составляющая. FogCreek — крутейшая техническая компания, посмотрите на Glitch сами, оно того стоит. Анонс

2. Sketch от команды Expo. Expo — что-то типа Rails, но для js/react native, чтобы писать кроссплатформенные мобильные приложения на самом модном языке/стеке, не заморачиваясь самому тонкой настройкой инструментов. Анонс. Особо доставляет, что имя совпадает с супер-модным инструментом для дизайнеров Sketch от Bohemian Coding. Удобно, когда 2 разные вещи в одной среде называются одним и тем же именем (на самом деле нет).