Разработка
Три удаленных разработчика и миллион довольных пользователей: правила разработки Guides от Lonely Planet
Миллион пользователей, рейтинг 4.5 балла в Google Play и 4.9 в App Store: несколько вещей мы точно сделали хорошо и хотим поделиться этим опытом с вами.
Как Lonely Planet используют свои инструменты и сотрудников для большей эффективности: перевод статьи разработчика Франа Севиллано из блога компании.
Наша команда образовалась в 2015 — мы хотели создать лучшее приложение для путешественников.
После года разработки и года дальнейшей работы с выпущенным приложением мы считаем, что Guides достигли поставленных целей. Миллион пользователей, рейтинг 4.5 балла в Google Play и 4.9 в App Store: несколько вещей мы точно сделали хорошо и хотим поделиться этим опытом с вами.
Примите ограничения и различия
Мы очень маленькая команда, пытающаяся изменить принципы работы в компании, которая вдохновляла путешественников в течение 44 лет. У нас нет возможности принимать все вызовы, поэтому нам постоянно приходится выбирать битвы, в которых мы будем сражаться. Это раздражает, но мы все знаем, что ограничения стимулируют креативность.
Расставляйте приоритеты и беспощадно упрощайте
Я могу только представить, как много ненужных функций, библиотек и архитектур мы могли бы сделать при наличии ресурсов. Мы не могли это сделать и не сделали. В итоге приложение было сокращено до самых необходимых и ценных функций.
Делайте вещи простыми, насколько возможно, но не проще того.
Перед созданием каждой функции мы спрашивали себя, а есть ли в ней смысл? Как мы можем её упростить? Как мы можем её протестировать? От дизайна к разработке — мы пытались сделать вещи еще проще. Мы не просто этого хотели, мы вынуждены были так поступать.
Используйте проверенные архитектуры и модели вместо экспериментальных
В то время, когда мы начинали размышлять об архитектуре приложения, было много хайпа вокруг VIPER и чистой архитектуры, особенно на iOS. Многие начинали их использовать, но нигде они не прижились на долгий срок. Мы не хотели ограничивать себя необходимостью поддерживать так много скаффолдингов, поэтому мы решили создать приложение, используя более традиционные подходы и избегая общеизвестных подводных камней.
Например, наши предыдущие приложения часто приводили к появлению множества Views Controller-ов. Чтобы избежать этого вопроса в Guides, мы вынесли из контроллеров все не принадлежащие им функции, используя классы контролеров данных для работы с данными, модели представления для управления состояниями экранов, и вспомогательные классы, которые выполняли самые разные вещи — от управления местоположением пользователя до отправки уведомлений или обработки всех наших кастомных шрифтов.
Мы очень довольны результатами. Этот упрощенный подход позволил нам заново использовать и тестировать код очень легко, без необходимости писать безумное количество повторяющегося кода.
Используйте преимущества международной команды
Мы живем на разных континентах в таких городах, как Сан-Франциско, Солт-Лейк-Сити, Нэшвилл и Мадрид. Существуют определенные неотъемлемые ограничения, но за годы работы мы научились извлекать из них преимущества и быть более эффективными.
Мы разбросаны по разным часовым поясам. Создание дизайна и разработка — это творческие задачи, которые требуют полной сосредоточенности. Я считаю, что мне очень повезло распоряжаться утром на свое усмотрение и работать над текущими заданиями без отвлечений.
Мы не пересекаемся по времени работы и всегда можем подхватить задание, которое не успевает закончить кто-то другой. Если я не выполню важную задачу до конца дня, другой сотрудник может взять её на себя и продолжить оттуда, где я остановился. Первое, что я делаю при начале работы — проверяю работу других людей.
Так что мы используем такую модель работы, когда минимально отвлекаем друг друга и позволяем себе концентрироваться на своих задачах.
Мы используем простые инструменты. С помощью GitHub мы управляем практически всем. Даже задачи продактов и дизайнеров принимали форму задач GitHub. Мы используем майлстоуны, чтобы придать форму нашим двухнедельным спринтам и задачам. Мы пытаемся сохранять наши проблемы и pull requests небольшими и конкретными, чтобы их было легко решать и просматривать. Если что-то может занять больше дня работы, мы разбиваем эту задачу на более мелкие.
Друг с другом мы общаемся в Slack. С его помощью нам не особенно нужен имейл. Slack позволяет нам своевременно что-то обсуждать, не теряя историю тех решений, которые мы приняли за день.
https://youtu.be/5G9T_9FFqtw
Объедините дизайн и разработку в одну команду
В нашей команде разные отделы работают близко друг к другу. Мы долго работали над объединением продактов, дизайнеров и разработчиков в одну команду. Мы, разработчики, можем быстро и часто давать обратную связь по дизайнерским решениям, а дизайнеры могут сообщать нам мнение о том, как мы реализуем их решения.
Мы участвуем в работе друг друга, делясь мнениями максимально быстро и часто, при этом мало прерывая друг друга, работая в разное время.
Сокращайте цепь обратной связи
Так как наша команда невелика, нам нужно было улучшить скорость и количество обратной связи о качестве наших приложений. Поэтому мы рано вложились в автоматическое тестирование и хороший инструмент для отчетов о сбоях.
Тестирование и continuous integration
Для других наших приложений мы писали множество UI-тестов и с ними были некоторые проблемы. Они требовали много внимания и не выявляли многие ошибки, которые мы хотели поймать. Для Guides мы решили пойти ва-банк в юнит-тестировании. Наша архитектура позволяет нам изолировать компоненты довольно легко — таким образом, мы тестируем их без особых проблем.
Когда мы торопились выпустить 1.0 версию Guides, нам было довольно трудно писать юнит-тесты для большей части кода, поэтому мы делали всё медленно. Все изменилось, когда мы запустились и начали итерацию функций. Благодаря хорошему покрытию тестов мы теперь очень уверены во внесении изменений.
Для проведения тестов мы используем облачную платформу непрерывной интеграции, которая выполняет все тесты каждый раз, когда мы нажимаем Commit в Git-репозитории. Это позволяет нам продолжать работать над другими функциями или багами, пока выполняются тесты.
Отчеты об ошибках
Когда вы выпускаете свое приложение для тысяч людей, происходят вещи, которых вы не ожидали. Сбои и ошибки происходят в безумном количестве. Хороший инструмент, который собирает их и организует в одном месте — это одна из важнейших инвестиций. Он позволяет вам быстро определять наиболее важные проблемы.
Прямые каналы обратной связи с пользователями
Мы общаемся с пользователями посредством Helpshift, Zendesk и Google Forms. Мы побуждаем людей давать нам обратную связь постоянно при пользовании приложением.
Мы лично просматриваем каждый запрос и отвечаем подходящим образом. Это сохраняет наш контакт с пользовательскими желаниями и потребностями.
Также мы собрали отзывы из App Store и Google Play в Slack, используя AppFigures. Этот инструмент постит каждый отзыв в наш канал и мы видим, что говорят о нас люди.
Много путешествуйте и используйте свое приложение
Мы не только получаем отзывы от наших пользователей, но и от нашей команды: мы активно путешествуем и за последние два года посетили более 25 городов, в которых использовали приложение. Это позволило нам увидеть массу проблем и потенциальных возможностей для приложения. На самом деле, многие из текущих функций приложения мы придумали, используя Guides.
Частые командные встречи
Хотя мы любим удаленную работу, команда не смогла бы так хорошо функционировать. если бы не встречались друг с другом время от времени.
Мы пытаемся встречаться лично 2-3 раза в год. Это особенно важно, когда появляется новый человек и нам нужно познакомиться получше. Я сам заметил огромную разницу между восприятием людей лично и при общении онлайн.
Для ежедневной работы мы встречаемся в Hangouts. Это позволяет нам увидеться и немного поговорить друг с другом. Одно время мы очень серьезно относились к этим встречам и говорили только о работе. Однажды мы поняли, что эти встречи для нас нечто большее. Это единственный раз за день, когда мы действительно разговариваем друг с другом, поэтому мы сделали эти встречи более неформальными и веселыми. Перед обсуждением работы и после него мы немного разговариваем о разных вещах. Это помогает нам расслабиться, сменить тон беседы и насладиться общением друг с другом чуть больше.
Ограничения в вашей работе и команде не всегда плохи. Если вы примете их, они могут стать вашими значительными преимуществами. Помните, что все вышесказанное сработало для нас. Мы пытались не следовать никаким правилам и делать то, что будет правильным для нашей команды и в наших условиях. Пожалуйста, поступайте так же.
1045791869
com.lonelyplanet.guides