Planet

Иконка
Сокращение цикла
создания с месяцев до 24 часов
Иконка
Полный контроль
над инфраструктурой и данными
Иконка
Неограниченное тиражирование
и масштабирование
Иконка
Независимость
и цифровой суверенитет
Иконка Более 100 нативных мобильных приложений и экосистем создано на основе технологии
Телефон 1 Телефон 2 Телефон 3 Телефон 4 Телефон 4

Когда мобильное приложение перестаёт быть объектом разработки

Когда мобильное приложение перестаёт быть объектом разработки

За последние десятилетия программная инженерия изменилась гораздо сильнее, чем принято замечать.

Большинство этих изменений были связаны не с появлением новых языков программирования или более мощных вычислительных систем. Гораздо важнее оказалось другое. Постепенно менялся сам объект инженерной работы. История инженерии — это история смены объекта разработки.

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

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

Наблюдая за развитием мобильной разработки, я всё чаще задавал себе вопрос, почему здесь эта закономерность почти не проявляется.

Сегодня практически каждая новая мобильная платформа для Android и iOS по-прежнему начинается как отдельный инженерный проект. Несмотря на различие задач, отраслей и пользователей, значительная часть её архитектуры создаётся заново. Меняются интерфейсы, бизнес-логика и функциональные возможности, но фундаментальные механизмы мобильной инфраструктуры во многом воспроизводятся снова.

Но инженерная основа, на которой они строятся, продолжает возникать независимо в тысячах проектов?

Сначала этот вопрос казался частной особенностью мобильной разработки. Однако, чем дольше я размышлял над ним, тем яснее становилось, что он касается самой постановки инженерной задачи.

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

Если это предположение верно, то возникает следующий вопрос. Что произойдёт, если объектом инженерной работы станет не каждое новое мобильное приложение, а сама инфраструктура, внутри которой эти приложения могут возникать? Именно этот вопрос стал отправной точкой моего дальнейшего исследования.

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

Практически каждая зрелая технология проходит один и тот же путь. Сначала инженеры многократно выполняют похожую работу. Затем появляются инструменты, позволяющие делать её быстрее. Но настоящая смена инженерного уровня происходит позже — тогда, когда повторяющаяся работа перестаёт быть обязательной частью каждого нового проекта.

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

Инженерия последовательно устраняет повторение.

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

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

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

Разумеется, конкретные реализации отличаются. Отличаются требования, безопасность, нагрузка и бизнес-логика. Но сам факт различий ещё не означает, что вся инфраструктура должна возникать заново.

В этот момент вопрос о мобильных приложениях превратился для меня в другой вопрос: какая часть инженерной работы действительно уникальна, а какая повторяется только потому, что мы привыкли считать приложение самостоятельным объектом разработки? Этот вопрос важен не только из-за времени или стоимости. Главным ограниченным ресурсом технологической отрасли остаётся инженерная мысль.

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

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

Гипотеза

Любое инженерное наблюдение рано или поздно приводит к гипотезе. Моя оказалась удивительно простой. Что если мобильное приложение никогда не было главным объектом разработки? На первый взгляд такой вопрос кажется странным. Пользователь устанавливает приложение, работает именно с ним и оценивает именно его. Поэтому, естественно, считать приложение конечным результатом всей инженерной работы.

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

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

Из этого следовало предположение. Возможно, объектом инженерной работы должна стать не каждая отдельная мобильная платформа, а сама инфраструктура, внутри которой такие платформы могут возникать независимо друг от друга. Если подобная инфраструктура действительно способна существовать как самостоятельная инженерная система, то создание нового приложения перестаёт означать создание новой архитектуры. Оно становится процессом развёртывания новой цифровой платформы внутри уже существующей инженерной среды.

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

Практика

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

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

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

Главным объектом наблюдения оставалась инфраструктура. Каждое новое развёртывание отвечало только на один вопрос. Остаётся ли инженерная основа самостоятельной системой независимо от того, какое приложение возникает внутри неё?

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

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

Когда инфраструктура становится самостоятельной инженерной системой, новое мобильное приложение перестаёт означать создание новой архитектуры. Оно становится созданием новой цифровой платформы внутри уже существующей инженерной среды. Именно в этот момент инженерная задача начинает выглядеть совершенно иначе. Не «как быстрее разработать следующее приложение». А «какая часть этой работы вообще должна повторяться?»

Следствие

Любая инженерная гипотеза ценна не сама по себе, а тем, какие вопросы она заставляет поставить. Если объектом разработки действительно является инфраструктура, а не каждое отдельное мобильное приложение, меняется не только технология создания программного обеспечения. Меняется сама логика инженерной работы. Значительная часть интеллектуальных усилий перестаёт расходоваться на многократное воспроизведение одной и той же архитектуры. Инженер получает возможность сосредоточиться на том, что действительно отличает один цифровой продукт от другого: предметной области, пользовательском опыте, алгоритмах, данных и новых моделях взаимодействия.

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

Возможно, мобильная разработка приближается к такому же рубежу. Если это так, то главным результатом станет не более быстрое создание приложений. Главным результатом станет изменение ответа на вопрос, что именно мы разрабатываем.

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

Когда мобильное приложение перестаёт быть объектом разработки

Когда мобильное приложение перестаёт быть объектом разработки

За последние десятилетия программная инженерия изменилась гораздо сильнее, чем принято замечать.

Большинство этих изменений были связаны не с появлением новых языков программирования или более мощных вычислительных систем. Гораздо важнее оказалось другое. Постепенно менялся сам объект инженерной работы. История инженерии — это история смены объекта разработки.

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

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

Наблюдая за развитием мобильной разработки, я всё чаще задавал себе вопрос, почему здесь эта закономерность почти не проявляется.

Сегодня практически каждая новая мобильная платформа для Android и iOS по-прежнему начинается как отдельный инженерный проект. Несмотря на различие задач, отраслей и пользователей, значительная часть её архитектуры создаётся заново. Меняются интерфейсы, бизнес-логика и функциональные возможности, но фундаментальные механизмы мобильной инфраструктуры во многом воспроизводятся снова.

Но инженерная основа, на которой они строятся, продолжает возникать независимо в тысячах проектов?

Сначала этот вопрос казался частной особенностью мобильной разработки. Однако, чем дольше я размышлял над ним, тем яснее становилось, что он касается самой постановки инженерной задачи.

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

Если это предположение верно, то возникает следующий вопрос. Что произойдёт, если объектом инженерной работы станет не каждое новое мобильное приложение, а сама инфраструктура, внутри которой эти приложения могут возникать? Именно этот вопрос стал отправной точкой моего дальнейшего исследования.

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

Практически каждая зрелая технология проходит один и тот же путь. Сначала инженеры многократно выполняют похожую работу. Затем появляются инструменты, позволяющие делать её быстрее. Но настоящая смена инженерного уровня происходит позже — тогда, когда повторяющаяся работа перестаёт быть обязательной частью каждого нового проекта.

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

Инженерия последовательно устраняет повторение.

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

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

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

Разумеется, конкретные реализации отличаются. Отличаются требования, безопасность, нагрузка и бизнес-логика. Но сам факт различий ещё не означает, что вся инфраструктура должна возникать заново.

В этот момент вопрос о мобильных приложениях превратился для меня в другой вопрос: какая часть инженерной работы действительно уникальна, а какая повторяется только потому, что мы привыкли считать приложение самостоятельным объектом разработки? Этот вопрос важен не только из-за времени или стоимости. Главным ограниченным ресурсом технологической отрасли остаётся инженерная мысль.

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

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

Гипотеза

Любое инженерное наблюдение рано или поздно приводит к гипотезе. Моя оказалась удивительно простой. Что если мобильное приложение никогда не было главным объектом разработки? На первый взгляд такой вопрос кажется странным. Пользователь устанавливает приложение, работает именно с ним и оценивает именно его. Поэтому, естественно, считать приложение конечным результатом всей инженерной работы.

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

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

Из этого следовало предположение. Возможно, объектом инженерной работы должна стать не каждая отдельная мобильная платформа, а сама инфраструктура, внутри которой такие платформы могут возникать независимо друг от друга. Если подобная инфраструктура действительно способна существовать как самостоятельная инженерная система, то создание нового приложения перестаёт означать создание новой архитектуры. Оно становится процессом развёртывания новой цифровой платформы внутри уже существующей инженерной среды.

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

Практика

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

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

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

Главным объектом наблюдения оставалась инфраструктура. Каждое новое развёртывание отвечало только на один вопрос. Остаётся ли инженерная основа самостоятельной системой независимо от того, какое приложение возникает внутри неё?

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

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

Когда инфраструктура становится самостоятельной инженерной системой, новое мобильное приложение перестаёт означать создание новой архитектуры. Оно становится созданием новой цифровой платформы внутри уже существующей инженерной среды. Именно в этот момент инженерная задача начинает выглядеть совершенно иначе. Не «как быстрее разработать следующее приложение». А «какая часть этой работы вообще должна повторяться?»

Следствие

Любая инженерная гипотеза ценна не сама по себе, а тем, какие вопросы она заставляет поставить. Если объектом разработки действительно является инфраструктура, а не каждое отдельное мобильное приложение, меняется не только технология создания программного обеспечения. Меняется сама логика инженерной работы. Значительная часть интеллектуальных усилий перестаёт расходоваться на многократное воспроизведение одной и той же архитектуры. Инженер получает возможность сосредоточиться на том, что действительно отличает один цифровой продукт от другого: предметной области, пользовательском опыте, алгоритмах, данных и новых моделях взаимодействия.

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

Возможно, мобильная разработка приближается к такому же рубежу. Если это так, то главным результатом станет не более быстрое создание приложений. Главным результатом станет изменение ответа на вопрос, что именно мы разрабатываем.

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