Роль ИТ в банках сложно переоценить.
Сюда входит безопасность, согласованность всех транзакций и многое-многое другое, о чем конечный пользователь редко даже осознает в принципе.
Главное, без чего сложно представить современный банк – это адекватное приложение для мобильных устройств.
Человек – существо, которое любит комфорт и быстро к нему привыкает. Поэтому, если сейчас всех вернуть к парадигме, в которой банк и любое взаимодействие с ним подразумевают походы по отделениям и оформление документов на любую обычную операцию, всем станет грустно.
Банк должен быть доступен, приложение должно позволять проводить максимальное количество доступных транзакций, настраивать автоматические платежи, переводить деньги друзьям, оплачивать все, что можно оплатить, заказывать карты и так далее, и так далее, скоро.
У нас в Альфа-Банке для этого есть «Альфа-Мобайл» и «Альфа-Бизнес-Мобайл».
Меня зовут Илья Царев, я руководитель отдела iOS, и сегодня я расскажу вам, как у нас работает процесс разработки мобильных приложений.
Я работаю в Альфа-Банке более 2 лет, начинал с должности старшего разработчика, а сейчас отвечаю за всю iOS-разработку.
Год назад у нас было шесть iOS-разработчиков, которые делали все.
Сейчас нас 19 человек.
Нам удалось нормально масштабировать процесс разработки, не потеряв в качестве и сильно увеличив скорость.
Затем
У нас было несколько периодов бурного развития.Все началось 2 года назад, мы полностью поменяли команду разработчиков, на тот момент это была одна большая команда - 2 iOS, 2 Android, несколько дизайнеров, один продукт, аналитики, и вся эта толпа (всего около 20 человек) разрабатывала Альфу.
-Мобильный.
Мы работали в этой команде и раз в месяц выпускали обновление приложения, которое включало в себя в среднем около 3-х функций.
Во второй половине 2016 года мы разделили эту толпу на три части.
В результате выяснилось, что есть приложение «Альфа-Мобайл», над которым работают три команды, каждая из которых имеет свой определенный кусок работы.
Эти команды небольшие, по 5-8 человек каждая.
В каждом по одному участнику каждой роли, то есть 1 разработчик iOS, 1 разработчик Android, 1 дизайнер, 1 дизайнер продукта и так далее.
Более того, каждая команда может вырезать свои фигуры независимо от других команд. Например, команда №1 занимается платежами и переводами.
Команда №2 – состоятельные клиенты (это ребята, которые обычно тратят значительно выше среднего и, конечно, весьма важны для банка).
Команда №3 – редизайн и всякие общие улучшения.
Когда мы все это сделали, оказалось, что это работает гораздо лучше, чем в рамках одной команды.
Каждая команда делала свои фичи, решения внутри команд принимались быстрее, и в результате в релизе оказалось больше функционала, чем от одной большой команды.
Ну и пошло, мы решили сделать не 3 команды, а 20. И это именно то, что мы начали делать в 2017 году.
Сейчас
Сегодня у нас 15 команд (включая и «Альфа-Мобайл», и «Альфа-Бизнес-Мобайл»), они все очень раздроблены, и каждая команда опять же делает свою часть работы.Некоторые осуществляют платежи и переводы, другие делают узконаправленные функции, например, для нашего сотрудничества с FIFA. При этом, если у ребят из этой команды сейчас оказывается, что нет задач по FIFA, они начинают заниматься чем-то другим, например, улучшают процесс авторизации и так далее.
В итоге получаем, что у нас 15 команд, они что-то делают параллельно, благодаря чему мы выпускаем раз в 2 недели, и каждый релиз включает в себя гораздо больше возможностей (около 10) и правок, чем раньше.
На словах такая переделка звучит довольно просто, мол, взяли и разбросали людей по командам, каждая из которых делает что-то свое, но на деле это повлекло за собой достаточно сложные изменения в техническом процессе.
Ведь команда изолирована, общается в основном внутри себя, а вокруг всего этого тоже есть слои — iOS, Android, дизайн.
Все это нужно синхронизировать, иначе все :)
Технический процесс
Чтобы все это не развалилось на лету, мы привели техпроцесс к такому виду:- есть разработчик, который вдохновенно пишет свой код;
- наш общий код находится в удаленном репозитории;
- когда разработчик заканчивает, он создает пулл-реквест (не менее вдохновенный) и пишет ребятам, мол, я закончил, давайте вливать.
Если говорить подробнее о Swiftlint — у нас включены почти все стандартные правила, а также есть несколько своих.
Все это позволяет сэкономить время на проверке кода.
Сервер непрерывной интеграции (в нашем случае используется Jenkins) запускает статический анализатор кода, запускает тесты в приложении, помогает его собрать и запустить, а также пишет обо всем этом в Slack. После всего этого уже проводится ручная проверка кода.
Когда код принят, наш любимый jenkins собирает несколько сборок: для установки на тестовые устройства, для автотестов и для возможного релиза.
Тестировщик внутри команды проверяет такую сборку, и если всё хорошо, то код можно мержить в следующий релиз.
С недавних пор AppStore позволяет развернуть новый релиз не всем людям, как раньше, а определенному проценту пользователей.
Поэтому мы сначала развертываем новые функции для 1–5 процентов пользователей и смотрим, что там и как в целом обстоят дела.
Если нужно, что-то подправляем, раскатываем процентов на 10 и так далее.
Кроме того, у нас есть собственное решение, которое позволяет нам развертывать определенные функции для определенных групп пользователей и гибко всем этим управлять.
Эти два механизма позволяют нам не бояться проводить как технические, так и продуктовые эксперименты.
Все это покрыто внутри подробной аналитикой, позволяющей вовремя понять, что и где пошло не так, и как это быстро исправить.
Также можно определить, что только 2 процента пользователей получают доступ к определенному разделу приложения, а остальные 98% игнорируют его.
Обычно это намекает на удобство расположения раздела или его смысл в целом.
Команды
В настоящее время над Alfa Mobile работают 15 iOS-разработчиков.
Выше Альфа Бизнес Мобайл – 3.
Помимо продуктовых команд, ребята активно участвуют в так называемых технических командах, которые появились параллельно с нашим масштабированием.
У нас есть команда, которая следит за архитектурой (кстати, эта команда разработала собственное решение , который мы используем в Alfa Mobile), команда, которая разрабатывает дизайн-систему, и команда, которая улучшает нашу CI/CD. На все это ребятам выделяется время в продуктовых командах.
Команда дизайн-системы разрабатывает библиотеку компонентов пользовательского интерфейса.
Когда разработчик пишет что-то, что может быть полезно всем, он загружает это в общую библиотеку.
Поэтому, когда у нас появляется новый проект, команда может сразу подключиться к этой библиотеке и получить массу уже готовых и полезных вещей.
Кстати, об идеальном размере команды.
Как руководитель могу сказать, что нас уже слишком много (не паникуйте, мы по-прежнему активно набираем мобильных разработчиков).
Я просто имею в виду, что чем больше людей, тем больше времени уходит на синхронизацию, и это нормально.
Кстати, по этой причине мы не рассматриваем джуниоров (хотя, признаюсь, бывают исключения).
В основном мы нанимаем разработчиков среднего и среднего+ уровня.
Это люди, которые уже достаточно уверенно владеют необходимыми технологиями, но при этом могут быть адаптированы под себя и обучены специально для работы в текущих командах.
Мы используем много новых технологий, например, у нас больше половины кода на Swift, собственный собственная архитектура и есть еще несколько вещей, которые обычно не используются так часто.
Конечно, достойный старший тоже будет оценен по достоинству.
Но мы предпочитаем генерировать лиды внутри компании.
Сейчас мы активно набираем мобильных разработчиков, у нас появилось несколько новых команд (продуктов с идеями много, и им нужны люди в команду), так что если вы чувствуете в себе силы и желание попробовать себя в разработке мобильных приложений для Альфа - Банк, не стесняйся - https://hr.alfabank.ru/vacancies/ios-dev Буду рад ответить на вопросы об особенностях разработки мобильных приложений в банке или об общих принципах нашей работы.
Теги: #Альфа-Банк #scrum #Управление разработкой #управление командой #jenkins #iOS #мобильная разработка #разработка iOS #Разработка мобильных приложений #Управление разработкой #agile
-
Сенегал
19 Oct, 24 -
Распространенные Типы Веб-Хостинга
19 Oct, 24 -
Приложения Для Смартфонов И Их Преимущества
19 Oct, 24 -
15 Неизвестных Фактов О Стиве Джобсе
19 Oct, 24 -
Вверх! Mini 2 - 3D-Принтер Для Ваших Детей
19 Oct, 24 -
Код Стиля Дампа Потока Сознания
19 Oct, 24 -
Немного Поискового Юмора
19 Oct, 24