Взгляд изнутри на процесс разработки мобильных приложений Facebook

Автор: Laura McKinney
Дата создания: 4 Lang L: none (month-011) 2021
Дата обновления: 1 Июль 2024
Anonim
029. Школа менеджмента – Процесс разработки мобильного приложения – Амир Биктимиров
Видео: 029. Школа менеджмента – Процесс разработки мобильного приложения – Амир Биктимиров

Содержание


Недавно я посетил штаб-квартиру Facebook в Лондоне, чтобы узнать о процессе разработки и поддержки своего мобильного приложения Facebook. Здесь происходит гораздо больше, чем вы, возможно, догадываетесь: некоторые приложения Facebook обрабатываются здесь полностью, например, WhatsApp для настольных компьютеров и бизнес-ориентированное приложение Workplace.

Офисы - это то, что вы ожидаете от имиджа Facebook, хотя, возможно, не совсем так, как в социальных сетях. Это место, где выполняется серьезная работа, но тем не менее, в нем царит модная, причудливая и непринужденная атмосфера. Сотрудники могут носить ноутбуки на работу, где бы они ни пожелали, есть типография для изготовления плакатов (только потому, что), заказанные произведения искусства на нескольких стенах и гигантская черепаха ниндзя - я так и не получил ответа на вопрос, почему.

Ох, и еда невероятна. Я был там во время китайского Нового года, и у меня было множественный свиные животы. Хорошие времена.


Тем не менее, я не был там, чтобы насладиться обстановкой и кухней, я был там, чтобы узнать о Facebook на мобильном телефоне. Более конкретно: как же вы вообще продолжаете поддерживать такой большой и амбициозный проект? Бэкэнд Facebook обслуживает более двух миллиардов человек, а одно только приложение Android видит новую версию, выпускаемую каждую неделю.

Как вы управляете приложением с таким амбициозным количеством функций

Я говорил с Талом Келлнером через собственную систему телеприсутствия Facebook. Тал - руководитель технической программы, ответственный за команду разработчиков релизов в Тель-Авивском инженерном офисе. Она была более чем счастлива поделиться мелкими деталями.

Тэл и ее команда впервые загружают свою версию Facebook для iOS на iOS


То, что я узнал, было довольно увлекательным как с точки зрения разработчика, так и пользователя. Вот что я узнал.

Управление проектами в Facebook - Почему Scrum> Водопад

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

такие компании, как Facebook, вместо этого выбирают более современный подход к управлению проектами под названием «scrum»

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

Когда дело доходит до программного обеспечения, этот подход носит ограничительный характер. В худшем случае обновление может занять так много времени, что оно устареет к тому времени, когда оно поступит. Duke Nukem Forever кто-нибудь?

Таким образом, некоторые софтверные компании предпочитают более современный подход, называемый «схваткой», который является гибкой методологией. Этот метод определяет приоритет работы, которая важнее всего, и разбивает ее на модульные куски. Он опирается на связь между внутренними отделами и даже отдельными агентами, работающими в одиночку над своими углами кода.

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

любой человек из любой точки организации может предложить идею новой функции

Я был очень впечатлен, узнав, что любой человек в любой точке организации может предложить идею для новой функции, а затем приступить к работе над ней, если получит разрешение. Иногда это может даже превратиться в отдельное приложение! Facebook - это скорее совместный проект, чем навязчивое видение нескольких человек (или одного человека), которым он часто изображается.

Это позволяет Facebook реализовывать чрезвычайно быстрый цикл разработки, позволяя обновлять каждое мобильное приложение каждую неделю, и тысячи коммитов (предлагаемых изменений кода) между ними. Если вы думаете, что это впечатляет, веб-версия (серверная часть которой также поддерживает мобильное приложение) обновляется каждые два-три часа!

Facebook, как правило, очень поддерживает новые идеи и стартапы. У него даже есть инициатива LDN LAB, посвященная поддержке новых идей и бизнеса.

Нахождение баланса

Взято из собственных слайдов Тала

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

Вот где «золотой треугольник» вступает в игру. Три точки этого треугольника представляют особенности, качество и время. Здесь у каждой компании есть выбор: когда наступает время кризиса, вы отдаете предпочтение новым функциям за счет того, что вы потратите немного больше времени? Вы позволяете незначительной существующей ошибке проскальзывать через сеть, если это означает, что вы можете добавить больше функций? Когда вы не можете сделать все, вы вынуждены расставить приоритеты.

В Facebook приоритетами являются качество и время. Если за выделенным окном выпадает обновление, функция, вероятно, будет отодвинута назад; а не срезание угла или задержка обновления.

Контроль версий и жонглирование изменений

Для обработки этих обновлений и изменений в коде Facebook использует собственную модифицированную версию Mercurial. Это вместо очень широко используемого Git, который, очевидно, не масштабировался для целей компании. Phabricator является эквивалентом GitHub и использует множество плагинов, чтобы упростить рабочий процесс, а иногда просто сделать его немного веселее (очевидно, Facebook нравится его мемы).

Для непрограммистов Mercurial, как и Git, является системой контроля версий. Он позволяет большому количеству людей работать над одним программным обеспечением и вносить изменения и исправления, не ставя под угрозу основную версию приложения, называемую «основной веткой». Эти инструменты помогают предотвратить конфликты кода и позволяют экспериментировать. Только после того, как изменение будет полностью одобрено в тестовой ветке, оно будет передано мастеру.

Представьте, что какой-то плохой программист сделал опечатку, которая сломала весь код, и была только одна версия! Это был бы плохой день для всех.

Такие инструменты, как Mercurial, позволяют с относительной легкостью реализовывать подход Scrum, позволяя всем одновременно работать над определенными функциями и ошибками, прежде чем объединить их в один большой банк.

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

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

Для компиляции Facebook использует другой инструмент под названием Buck. Этот единственный инструмент для сборки может создать что угодно, когда дело доходит до упаковки приложения. При нацеливании на разные платформы нет необходимости использовать отдельные опции, такие как Gradle или Ant.

Ловля ошибок вовремя

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

С этой целью команда разбивает тестирование программного обеспечения на уровни, называемые C1, C2 и C3.

C1 - внутреннее тестирование, и все сотрудники будут использовать эту версию. Во время C2 версия проходит через 2 процента широкой публики, а C3 является производственной. Если что-то действительно серьезное будет найдено, каждый сотрудник сможет получить доступ к кнопке аварийной остановки, чтобы остановить производство.

Добровольцы, которые выдвигают себя за то, чтобы поддерживать продвижение уровней, называются «хьюггеры деревьев» (потому что ветви), и делают это в дополнение к своей обычной работе.

На мобильных устройствах подобные уровни называются альфа, бета и прод. Альфа означает внутренний тест, который будут проходить все сотрудники. Процесс, которым любая компания использует свои собственные продукты таким образом, называется «собачьим кормом» - от «употребления в пищу собственного собачьего корма».

У тестеров также есть несколько уникальных и интересных инструментов для быстрого сообщения об ошибках. Одним из них является «Rageshake», когда простое встряхивание устройства приводит к появлению сообщения об ошибке, как в Google Maps.

У тестеров также есть несколько уникальных и интересных инструментов для быстрого оповещения об ошибках.

Во время альфа-тестирования, который фактически относится к любому внутреннему тестированию, Facebook также использует автоматическое тестирование для запуска приложения. Например, одна недавно приобретенная часть программного обеспечения под названием «Sapienz», по сути, работает, нажимая каждую кнопку и используя каждую функцию в случайном нападении, пока она не вызовет сбой. Затем он регистрирует трассировку стека, записывает действие и сообщает обратно.

Бета-версия (версия, протестированная широкой публикой) проходит через небольшой подраздел (~ 2 процента) широкой публики. Этот небольшой отрывок получит обновление заранее, предоставляя Facebook реальную обратную связь. Если все выглядит хорошо, обновление распространяется на все население, и процесс начинается заново.

Мощные инструменты для автоматизации и умножения сил

Чтобы весь этот процесс был максимально быстрым и плавным, Facebook использует большое количество различных инструментов. Мы уже видели, как компания использует Phabricator и Sapienz, но у нее есть другие инструменты и плагины для других этапов.

Инструмент под названием Picknic собирает все запросы (изменения, сделанные сотрудниками) в одном месте для быстрого и удобного просмотра.

Когда тестирование выдает ошибку, бот под названием Nagbot информирует ответственных и мягко подталкивает их к выполнению работы. Использование элементарного ИИ для управления этим процессом не только гарантирует выполнение работы, но и позволяет менеджеру избегать «плохого парня», постоянно ворча!

когда тестирование выдает ошибку для кого-то, чтобы исправить, бот под названием Nagbot информирует ответственных и мягко подталкивает их к выполнению работы

Crashbot - еще один бот, отвечающий за сообщение об этих ошибках по мере их возникновения, и он предпочтительнее метрик из консоли Google, поскольку он сообщает в режиме реального времени. Crashbot сообщит о проблеме, как только проблема превысит «допустимый порог сбоя». Это может быть связано с количеством людей, столкнувшихся с ошибкой, или с тем, как один пользователь сталкивался с одной и той же ошибкой. В любом случае, Facebook также будет иметь показатель, показывающий количество печальных пользователей.

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

Конечно, Facebook не собирается тратить время на загрузку каждой новой версии своих приложений в Play Store, App Store, Amazon и все остальное. Существует также приложение для этого под названием Mobile Push Train.

Заключительные мысли

Поддержание приложения, такого как Facebook, в актуальном состоянии - огромная задача, и компании по-прежнему необходимо убедить пользователей действительно установить эти обновления. Это особенно сложно в странах, где подключение не гарантируется. В Канаде только один процент пользователей по-прежнему используют версию Facebook старше года. В Эфиопии это число приближается к 50 процентам!

Команда в Facebook явно работает очень усердно и использует множество инструментов и процессов, чтобы все было максимально упорядочено. В конце концов, команда разработчиков стремится придерживаться пяти руководящих принципов:

  • Держите мастера в чистоте.
  • Есть одна команда с опытом в разработке релизов.
  • Выпуск вовремя часто.
  • Корм для собак.
  • Будьте добры к пользователям.

Звучит просто, но, как вы видите, в нем много вращающихся тарелок. Даже поддержание всех инструментов, используемых в процессе, само по себе является проектом!

Со своей стороны, Facebook поддерживает дружескую и беззаботную атмосферу в офисе в Лондоне. Команда обменивается GIF-файлами и мемами через плагины, они называют комнаты, основанные на «вещах, которые британцы ненавидят» и шекспировские каламбуры, и они гордятся своей работой. В Facebook они усердно работают и играют, и похоже, что по большей части система работает.

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

Выпуск Android 9 Pie является доказательством в общеизвестном пудинге, что Android как операционная система достигла своего апогея. Android 9 Pie не обладает ни базовыми функциями, ни поверхностной по...

Знание того, как использовать LinkedIn и найти работу в LinkedIn, может полностью изменить вашу жизнь. Мы живем в эпоху, когда технические навыки создают огромные возможности, которых раньше никогда н...

Интересное