«Мне сказали: этого сделать нельзя. Через 57 дней технология уже работала у миллионов людей»
Мобильный разработчик Гусейн Джалилов специализируется на платежных технологиях, для которых нет готовых инструкций. Он исследует сложные сценарии взаимодействия мобильных устройств и платежной инфраструктуры, занимается разработкой технологий взаимодействия мобильных устройств с банковскими картами. Он в одиночку разработал технологию привязки банковской карты через NFC для смартфонов, реализовав собственное решение для сценария, который отсутствовал среди стандартных возможностей платформы. От первых экспериментов до промышленного запуска прошло всего 57 дней. Сегодня этой функцией пользуются более 20 миллионов пользователей.
В интервью «Экспресс газете» Гусейн рассказал, почему самые ценные технологии начинаются со слова «невозможно», как отличить настоящее ограничение от воображаемого и почему в инженерии самая важная работа начинается задолго до первой строки кода.
— Гусейн, вы часто говорите, что существует два разных «невозможно». Что вы имеете в виду?
Гусейн Джалилов: Мне кажется, это одна из самых важных вещей, которые я понял за годы работы. Есть невозможность физическая, когда что-то действительно противоречит законам природы. А есть невозможность административная: этого нет в документации, никто еще не реализовывал такой сценарий, производитель платформы не дал готового интерфейса. Проблема в том, что индустрия очень часто не различает эти две ситуации.
Когда мне сказали, что привычный сценарий привязки банковской карты через NFC невозможно реализовать средствами приложения, я задал себе простой вопрос: это невозможно в принципе или просто никто еще не построил такой механизм? Разница между этими двумя ответами оказалась колоссальной.
— Именно так началась история той самой технологии, которая сейчас работает у миллионов пользователей?
Гусейн Джалилов: Да. Исходная ситуация выглядела довольно жестко. Производитель платформы не предоставлял готового пользовательского интерфейса для сценария, при котором человек прикладывает банковскую карту к телефону, а приложение автоматически получает необходимые реквизиты для привязки. Для пользователя это означало ручной ввод длинного номера карты, срока действия и других данных. А любой лишний шаг в таком процессе – это потеря части пользователей.
Готовой реализации не существовало. Не было документации, не было примеров, не было описанного механизма взаимодействия приложения с картой на том уровне, который требовался для такого сценария. Поэтому задача выглядела как закрытая дверь без ручки.
— Что вы сделали первым делом?
Гусейн Джалилов: Начал исследование. Не разработку, а именно исследование. Это принципиальная разница. Нужно было понять, может ли телефон вообще взаимодействовать с банковской картой на том уровне, который нам необходим. Формально в системе существует механизм работы с бесконтактными чипами, а банковская карта – это тоже бесконтактный чип международного стандарта ISO 7816. Но как именно построить этот диалог в рамках приложения, нигде не было описано.
Первые недели представляли собой почти полностью слепые эксперименты. Я подбирал идентификаторы приложений, последовательности низкоуровневых команд, фактически восстанавливал логику общения с картой. Карта либо никак не реагировала, либо возвращала коды ошибок, и было невозможно понять, где именно находится проблема: в команде, в порядке команд или в самом предположении о том, как должен работать этот обмен.
— Когда появился первый настоящий прорыв?
Гусейн Джалилов: Самое интересное, что самый тяжелый момент наступил не тогда, когда карта молчала, а тогда, когда она наконец ответила. Это звучит парадоксально, но до первого ответа у тебя есть только одна проблема: заставить систему отреагировать. Когда ответ появился, выяснилось, что это только половина задачи. Передо мной оказался поток байтов без какого-либо описания. Никакой документации, никакой спецификации формата, никакого готового алгоритма разбора. Нужно было понять, где в этом потоке находятся нужные реквизиты и как их извлечь корректно.
Разобрать одну конкретную карту можно относительно быстро. Настоящая сложность начинается тогда, когда ты понимаешь, что карт много, платежных систем несколько, и каждая организует данные по-своему. То, что прекрасно работает на одной карте, полностью разваливается на другой. Именно тогда началась самая длинная часть проекта – создание универсального алгоритма, который одинаково корректно обрабатывает любые карты. Это была граница между лабораторным экспериментом и технологией, которую можно выпускать на многомиллионную аудиторию.
— Сколько времени занял весь путь от первой идеи до запуска?
Гусейн Джалилов: От первых экспериментов до промышленной эксплуатации технологии прошло всего 57 дней. Причем это был не демонстрационный прототип, не экспериментальная функция и не проект для внутреннего использования. Это была полноценная серийная технология, встроенная в крупнейший платежный сервис страны и доступная всем пользователям смартфонов. Всю работу – от исследования до промышленного запуска – я выполнял один.
— На первый взгляд это выглядит как удобная пользовательская функция. Но специалисты понимают, что за такими решениями может стоять совершенно разный уровень инженерной сложности. Что в этой разработке делает ее именно серьезной инженерной работой, а не просто удачной функцией для приложения?
Гусейн Джалилов: Потому что инженерную ценность определяет не эффектная демонстрация, а поведение системы в реальной эксплуатации. С момента запуска прошло несколько лет. Все это время технология работает у миллионов пользователей, с разными картами, разными платежными системами и разными сценариями использования. Архитектуру не пришлось переписывать, систему не пришлось заменять. Это очень важный показатель. Кроме того, важно понимать, что мы не создавали альтернативу платформенным сервисам и не использовали какие-либо закрытые механизмы системы. Решение построено на открытых международных стандартах взаимодействия с бесконтактными банковскими картами – тех же принципах, на которых работают платежные терминалы по всему миру. Инженерная задача заключалась в том, чтобы самостоятельно реализовать программный стек для такого обмена в рамках возможностей, доступных разработчикам.
— Получается, конкурент может повторить то же самое?
Гусейн Джалилов: Идея сама по себе не является секретом. Но здесь важно различать идею и накопленное инженерное знание. Невозможно взять инструкцию из интернета и за неделю воспроизвести такой стек. Потому что готовой инструкции просто не существует. Все преимущество находится в понимании поведения реальных карт, в деталях протокола, в обработке пограничных случаев, в архитектурных решениях, которые обеспечивают стабильную работу на огромной аудитории. Это очень похоже на айсберг: пользователю видна одна простая кнопка «Приложить карту», а под водой находится огромный объем работы, который никогда не попадает в интерфейс.
— В вашей истории есть еще один интересный момент: вы работали один. Почему так получилось?
Гусейн Джалилов: Иногда так складываются обстоятельства, а иногда это просто вопрос личной ответственности. На подобных задачах количество людей далеко не всегда является главным фактором. Когда готового решения нет, сначала нужно понять саму природу проблемы. Исследовательская часть плохо масштабируется. Очень часто быстрее пройти длинную цепочку гипотез одному человеку, который держит всю картину целиком, чем постоянно синхронизировать большую команду. Конечно, речь не идет о том, что одиночная работа всегда лучше. Но в данном случае именно такая организация позволила принимать решения очень быстро.
— Что вас удивило больше всего за эти 57 дней?
Гусейн Джалилов: Наверное, количество людей, которые были абсолютно уверены, что задача нерешаема. В профильных сообществах писали, что подобная реализация практически невозможна. Но если внимательно читать такие обсуждения, то выясняется интересная вещь: никто не объясняет, почему именно это невозможно. Обычно имеется в виду только одно – «у нас не получилось». А отсутствие успешной реализации и доказанная невозможность – это совершенно разные вещи. Мне кажется, это вообще хороший жизненный принцип. Очень многие ограничения существуют только потому, что их давно перестали проверять.
— Сейчас искусственный интеллект уже умеет писать код. Не кажется ли вам, что такие инженерные исследования скоро тоже будут выполнять машины?
Гусейн Джалилов: Искусственный интеллект великолепно работает там, где существует большой массив известных решений. Он умеет воспроизводить, комбинировать и адаптировать уже накопленное знание. Но когда задача находится за пределами документированного опыта, модель сталкивается с тем же самым ограничением, что и человек: готового ответа нет. В таких ситуациях по-прежнему требуется инженер, который способен сформулировать проблему, построить гипотезу, провести эксперимент, интерпретировать неожиданный результат и принять ответственность за архитектурное решение. Чем больше отрасль автоматизирует рутинную разработку, тем ценнее становится способность работать именно с неизвестным.
— Если попытаться сформулировать главный вывод из этой истории одним предложением, каким он будет?
Гусейн Джалилов: Документация описывает то, что уже сделано. Конкурентное преимущество почти всегда находится за ее пределами – там, где никто еще не построил решение своими руками.
Василий Черный

