[Перевод] Революционный момент в программировании всё ближе
Компьютеры, вероятно, одно из самых крутых изобретений человечества.
Изначально они были сложными и непонятными: все эти перфокарты, интерфейсы командной строки — всё это точно нельзя было легко и быстро освоить без специальной подготовки.
Но всё изменилось, когда в Xerox PARC изобрели графический пользовательский интерфейс (GUI), который впервые добился коммерческого успеха с выпуском Apple Macintosh в 1984 году.
Графический пользовательский интерфейс, понятный любому человеку, добавил компьютерам визуальности и использовал знакомые всем метафоры, что открыло путь к тому, чтобы мощь вычислительных технологий стала доступной каждому.
Спустя несколько лет у многих дома появился компьютер. Затем мы соединили их при помощи кабелей, получили интернет, а дальше началась история, которую все знают.
Все эти изменения стали возможны благодаря устранению барьеров: компьютеры стали достаточно простыми в освоении и доступными.
На мой взгляд, аналогичный сдвиг начинается в мире программирования.
Комбинация визуальных интерфейсов и помощи искусственного интеллекта может сделать программирование таким же интуитивным, как использование смартфона. Это откроет возможности создания программного обеспечения совершенно новым группам людей, а в перспективе — каждому.
Поднимаясь по лестнице абстракции
История программирования — это последовательное упрощение сложных задач.
На заре программирования всё строилось вокруг двоичного кода. Это занятие было утомительным, подверженым ошибкам и в целом точно не для слабонервных.
Затем кто-то придумал написать программу, которая могла бы преобразовывать более читаемые для человека команды в двоичный код. Так появился ассемблер. Он всё ещё был низкоуровневым, но уже чуть более удобным для людей.
Появление языков более высокого уровня, таких как C, позволило абстрагироваться от множества технических деталей и сделало программирование доступным для большего числа людей.
Сегодня у нас есть современные языки и фреймворки, которые делают процесс написания кода проще, чем когда-либо прежде, но обучение программированию всё ещё остаётся сложным процессом.
Несмотря на все достижения, за последние десятилетия мы достигли некоторого плато. Способ написания кода принципиально не изменился с 70-х годов. Мы всё ещё, по сути, пишем инструкции, как это делали с помощью командной строки на заре вычислительных технологий.
Ценность визуализации
Почему графические интерфейсы (GUI) стали таким значительным шагом вперёд по части доступности вычислительной техники?
Потому что они учитывают то, как наш мозг естественно обрабатывает информацию. Знаете ли вы, что в визуальной обработке задействовано примерно 20–30% нашего мозга? Это значительная часть наших нейронных ресурсов.
Когда мы взаимодействуем с GUI, мы используем систему, которая соответствует принципам естественной работы нашего мозга.
Хотите переместить файл? Просто возьмите его и перетащите.
Это понятно интуитивно, потому что так мы взаимодействуем с физическими объектами в реальном мире.
Современное программирование: взгляд из 70-х
Теперь сравните это с тем, как мы пишем код сегодня. Несмотря на прогресс, программирование по-прежнему остаётся текстовой деятельностью, даже когда речь идёт о представлении сугубо визуальных вещей.
Это равно тому, как если бы программисты застряли в интерфейсе командной строки 70-х годов, в то время как остальной мир вычислительной техники перешёл на использование iPhone. И я выражаюсь не метафорически: какой бы язык вы ни использовали сегодня, он, скорее всего, вдохновлён и не сильно отличается от языков, таких как C, который был создан в далёком 1972 году.
Это создаёт огромный разрыв между теми, кто умеет писать код, и теми, кто не умеет — что приводит к неэффективности, разочарованию и упущенным возможностям.
Сколько раз у кого-то появлялась отличная идея фичи или продукта, но не была реализована из-за необходимости переводить эту идею в код?
Два ключевых компонента для интуитивного программирования
Итак, главный вопрос: как процесс программирования сделать таким же интуитивным, как использование современного компьютера?
Я считаю, что всё сводится к двум ключевым компонентам:
Визуализация кода: Представьте, что вы можете видеть структуру своего кода в визуальном формате, манипулировать ею с помощью жестов и сразу понимать её логику.
Обработка естественного языка: Опишите изменения на простом английском языке и превратите их в работающий код.
Эта комбинация визуальных и языковых интерфейсов может сделать программирование доступным для гораздо более широкой аудитории, так же как Macintosh сделал вычислительную технику доступной для массового рынка.
Думаю, в будущем появятся новые категории навыков программирования, которые будут открыты благодаря достижениям в этих областях.
LLM-ассистенты для всех
Я долго колебался по этому вопосу, учитывая весь ажиотаж вокруг искусственного интеллекта, но сейчас я твёрдо убеждён, что искусственный интеллект, особенно большие языковые модели, сыграет ключевую роль в этой трансформации.
Эти модели могут устранить разрыв между человеческими намерениями и машинными инструкциями, позволяя людям выражать свои идеи на естественном языке и превращать их в функциональный код.
Но дело не только в генерации кода. Реальная сила заключается в интеграции возможностей ИИ с визуальными интерфейсами программирования и их подключении к реальным системам и кодовым базам.
Такая интеграция позволит работать с готовым к продакшену кодом, а не только с упрощёнными «no-code«решениями, которые имеют ограниченные возможности. И это — главное достижение.
Подумайте о главной проблеме ИИ-ассистентов: они полезны только для выполнения простых задач. А кому нужно, чтобы простые задачи решались с помощью кода? Людям, которые не умеют программировать!
Да, но тогда вам придётся научить их клонировать код, находить нужные файлы, запускать ассистента в нужной области и так далее.
Или же вы можете создать систему, которая визуализирует сайт или приложение в редактируемом формате, позволяет LLM вносить изменения, показывать результат почти в реальном времени и повторять процесс. Это действительно даст этим ИИ-ассистентам суперсилы, которые оценят те, кому они нужнее всего.
Вот почему, на мой взгляд, комбинация визуализации кода и LLM-ассистентов даёт результат, который значительно превосходит сумму их отдельных частей.
Ценность устранения барьеров
Текущий разрыв между теми, кто умеет программировать, и теми, кто не умеет, создаёт искусственные барьеры между командами, замедляя рабочие процессы. Это похоже на необходимость каждый раз обращаться к переводчику, чтобы выразить свои мысли.
Представьте себе команду маркетинга, которая хочет внедрить и протестировать новые гипотезы. Сейчас им нужно создать спецификации, передать их разработчикам, дождаться реализации, проверить, дать обратную связь и внести правки. Это длительный процесс, зачастую подверженный недопониманиям и приводящий к тому, что конечный продукт заметно отличается от первоначальной идеи.
Теперь представьте мир, в котором та же команда маркетинга может мгновенно реализовать и протестировать свои идеи, не ожидая ресурсов от разработчиков. Или дизайнера, который может изменять не только макеты, но и сам рабочий код.
По моему опыту, разработчикам не нравится быть чем-то вроде посредников — между командой маркетинга, дизайнером или кем-то ещё и их целями.
Разработчики хотят заниматься сложными и интересными задачами, а не менять цвет кнопки каждую неделю на основе данных последнего A/B-теста.
И хотя я не думаю, что текстовое программирование в обозримом будущем исчезнет, ключ к раскрытию визуализации программирования заключается в том, чтобы бесшовно связать визуальное программирование с традиционным.
Нужно сбалансировать преимущества текущей системы, открывая доступ к новой системе для большего числа людей, но при этом сохранить их бесшовную интеграцию.
Именно эту проблему решают инструменты визуального редактирования Builder.io, позволяя нетехническим членам команды вносить изменения в существующие системы напрямую, без постоянной необходимости в участии разработчиков.
Потенциальное влияние
Этот сдвиг в программировании может оказать огромное влияние далеко за пределами технологической отрасли:
Ускорение инноваций: Когда больше людей смогут воплощать свои идеи в жизнь, мы увидим всплеск новых продуктов, услуг и решений. Это может привести к прорывам в областях, о которых мы даже не задумывались.
Улучшение существующих систем: Компании и организации всех типов смогут проще оптимизировать свои операции, что приведёт к повышению эффективности и улучшению пользовательского опыта для всех.
Развитие креативности: Устранение технических барьеров позволит людям сосредоточиться на творческих аспектах решения проблем. Это может способствовать созданию более инновационных и удобных для пользователя решений во всех секторах.
Экономическое равенство: Навыки программирования уже давно открывают доступ к высокооплачиваемой работе. Сделав эти навыки доступнее, мы сможем сократить экономическое неравенство и открыть новые возможности для людей по всему миру.
Уроки истории
Мы уже видели подобную демократизацию технологий. Помните, когда появился софт для работы с электронными таблицами, например, VisiCalc? Возможно, нет, потому что это было в 1979 году. Давайте вспомним, что тогда произошло.
Некоторые бухгалтеры опасались, что это сделает их работу ненужной. Но вместо этого новый инструмент сделал их работу более продуктивной, востребованной и стратегически важной. То же самое произошло с системами CAD в архитектуре и даже с цифровыми камерами в фотографии.
Этот же принцип применим и здесь. Сделав программирование более доступным, мы не заменим разработчиков. Наоборот, это освободит их от рутинны и позволит сосредоточиться на более сложных и интересных задачах. Это сделает их навыки более ценными, а не менее.
Путь вперёд
Переход к миру, где преимущества программирования доступны каждому, не произойдёт мгновенно. Скорее всего, мы увидим постепенные изменения, с появлением всё более визуальных и интуитивных инструментов.
Главное — сделать реальный, пригодный для использования в продакшене код доступным, а не только упрощённые «no-code» решения, которые обладают ограниченными возможностями.
По мере развития таких инструментов нам придётся пересмотреть подходы к обучению программированию, совместной работе над программными проектами и интеграции этих новых возможностей в существующие рабочие процессы.
Это потребует изменений не только в инструментах, но и в нашем мышлении и подходах к разработке программного обеспечения.
Преодоление вызовов
Конечно, эта концепция не лишена своих сложностей. Необходимо будет добиться того, чтобы новые инструменты могли справляться со сложностью реальной разработки, учитывать вопросы безопасности и качества кода, а также находить способы интеграции новых подходов с существующими кодовыми базами и практиками.
Но эти вызовы не являются непреодолимыми. Чтобы справляться с ними, современные платформы используют умный подход «интеграция в первую очередь». Они вводят визуализацию в существующие кодовые базы и рабочие процессы, позволяя постепенно адаптировать новые подходы без отказа от текущих инструментов и процессов.
Заключение
Революционный момент в программировании приближается, и он станет таким же трансформирующим, как и оригинальный Macintosh для персональных компьютеров.
Речь идёт не о замене человеческого творчества искусственным интеллектом. Речь идёт об усилении человеческой креативности за счёт устранения технических барьеров; о том, чтобы дать людям возможность сосредоточиться на том, что и зачем они хотят создать, а не застревать на вопросе, как этого достичь.
Как успешно управлять проектами, продуктами и командами в период высокой неопределенности и быстрых изменений? Научиться всем необходимым инструментам, подходам и методикам можно в рамках практических онлайн-курсов.
А 28 ноября пройдет открытый урок на тему «Риск-менеджмент для тимлидов разработки». Узнать подробности и записаться можно на странице курса «Team Lead».
Habrahabr.ru прочитано 9101 раз