Много тревоги вокруг того, что разработчики программного обеспечения «теряют свою работу» из-за ИИ, будучи заменены более разумной версией ChatGPT, GitHub Copilot, Google Codey или чего-то подобного.
Основатель стартапа в области ИИ Мэтт Уэлш говорит и пишет о конце программирования. Он спрашивает, приведут ли большие языковые модели (LLM) к концу программирования, такого, как мы его знаем, и он рад тому, что ответ — положительный: это произойдет когда-нибудь, если не в ближайшем будущем.
Но что это значит на практике? Что это значит для людей, которые зарабатывают на жизнь написанием программного обеспечения?
Ценность в новых навыках программирования
Некоторые компании, безусловно, будут ценить ИИ как инструмент для замены человеческих усилий, а не для расширения человеческих возможностей. Программисты, работающие на эти компании, рискуют потерять работу из-за ИИ. Если вы работаете в одной из этих организаций, то это действительно может произойти.
Несмотря на хорошо освещаемые в СМИ увольнения, рынок труда для программистов отличный, он, вероятно, останется отличным, и вам, вероятно, лучше найти работодателя, который не рассматривает вас как расходы, подлежащие минимизации. Пришло время изучить новые навыки и найти работодателя, который действительно ценит вас.
Но количество программистов, которые «заменены ИИ», будет небольшим. Вот почему, и вот как использование ИИ изменит дисциплину в целом.
Если набрать «Сколько времени разработчик ПО тратит на кодирование» в строке поиска и посмотреть несколько первых статей, они дадут проценты от 10% до 40%. Но, исходя из разговоров и наблюдений, это время попадает в нижний конец этого диапазона: от 15% до 20%.
Время для «остальной части работы»
ChatGPT не заставит 20% времени, которое программисты тратят на написание кода, исчезнуть полностью. Вам по-прежнему нужно писать запросы, и мы все находимся в процессе обучения тому, что если вы хотите, чтобы ChatGPT хорошо справился с работой, запросы должны быть очень подробными.
Насколько это экономит время и усилия? Есть оценки, что до 80%, но скорее всего это не так, 25-50% более разумно. Если 20% вашего времени уходит на кодирование, а генерация кода на основе ИИ делает вас на 50% более эффективным, то вы действительно получаете обратно только около 10% своего времени.
Вы можете использовать его для создания большего количества кода, нет программиста, который работал бы неполный рабочий день, или который не был бы ограничен невыполнимыми сроками поставки. Или вы можете потратить больше времени на «остальную часть работы», 80% вашего времени, которое не было потрачено на написание кода.
Часть этого времени тратится на бессмысленные встречи, но большая часть «остальной работы» — это понимание потребностей пользователя, проектирование, тестирование, отладка, проверка кода, выяснение того, что действительно нужно пользователю (чего он не сказал вам в первый раз), уточнение дизайна, создание эффективного пользовательского интерфейса, аудит безопасности и так далее. Это длинный список.
Программисты нужны: у ИИ нет навыков проектирования
Эта «остальная часть работы» (в частности, часть «потребности пользователя») — это то, с чем наша отрасль никогда особенно не справлялась. Дизайн — самого программного обеспечения, пользовательских интерфейсов и представления данных — определенно никуда не исчезнет и не то, с чем текущее поколение ИИ очень хорошо справляется.
Мы прошли долгий путь, но нет никого, кому не приходилось спасать код, который лучше всего описать как «кипящую массу битов». Тестирование и отладка — ну, если вы немного поработали с ChatGPT, вы знаете, что тестирование и отладка никуда не исчезнут. ИИ генерирует неправильный код, и это не скоро закончится.
Аудит безопасности станет только более важным, а не менее; очень сложно программисту понять последствия для безопасности кода, который он не писал. Тратить больше времени на эти вещи — и оставлять детали выдачи строк кода ИИ — определенно улучшит качество продуктов, которые мы поставляем.
Программирование другой формы
Теперь давайте посмотрим на это с очень долгосрочной точки зрения. Давайте предположим, что Уэлш прав и что программирование, как мы его знаем, исчезнет — не завтра, но в какой-то момент в следующие 20 лет. Исчезает ли оно на самом деле?
Написание подробной подсказки действительно просто другая форма программирования. Вы по-прежнему говорите компьютеру, что вы хотите, чтобы он сделал, шаг за шагом. И после 20 лет жалоб на то, что программирование существенно не изменилось с 1970-х годов, ChatGPT вдруг сделал этот следующий шаг.
Это не шаг к какой-то новой парадигме, будь то функциональной, объектно-ориентированной или гиперпространственной. Ожидалось, что следующий шаг в языках программирования будет визуальным, но это тоже не так. Это шаг к новому виду программирования, которое не требует формально определенного синтаксиса или семантики. Программирование без виртуальных перфокарт. Программирование, которое не требует, чтобы вы тратили половину своего времени на поиск имен и параметров библиотечных функций, которые вы забыли.
Понимание проблем на глубоком уровне, а не подсчет строк кода
В лучшем из всех возможных миров это может свести время, фактически затрачиваемое на написание кода, к нулю или близко к нему. Но этот лучший случай экономит только 20% времени программиста. Более того, это на самом деле не устраняет программирование. Оно меняет его — возможно, делая программистов более эффективными и определенно предоставляя программистам больше времени для общения с пользователями, понимания проблем, с которыми они сталкиваются, и проектирования хороших, безопасных систем для решения этих проблем.
Подсчет строк кода менее важен, чем глубокое понимание проблем и нахождение способов их решения — но в этом нет ничего нового. 20 лет назад манифест Agile указывал в этом направлении, ценя:
- Людей и взаимодействие больше, чем процессы и инструменты
- Работающее программное обеспечение больше, чем исчерпывающая документация
- Сотрудничество с заказчиком больше, чем согласование условий
- Готовность к изменениям больше, чем следование плану
Внедрение ИИ: программисты, работающие напрямую с клиентами
Несмотря на 23 года «гибких методов», сотрудничество с клиентами всегда недооценивалось. Без взаимодействия с клиентами и пользователями Agile быстро сводится к набору ритуалов. Приведет ли освобождение программистов от синтаксиса фактически к большему времени для сотрудничества с клиентами и реагирования на изменения?
Чтобы подготовиться к этому будущему, программистам потребуется научиться больше работать напрямую с клиентами и проектировать программное обеспечение, которое удовлетворяет их потребности. Это возможность, а не катастрофа. Программисты слишком долго работали под клеймом бородатых, которым нельзя и не следует позволять разговаривать с людьми. Пришло время отказаться от этого стереотипа и создавать программное обеспечение так, как если бы люди имели значение.
ИИ — это не то, чего нужно бояться. Рассказывая о новом плагине OpenAI Code Interpreter (постепенно внедряется сейчас), Итан Моллик говорит: «Мое время становится более ценным, а не менее, поскольку я могу сосредоточиться на том, что важно, а не на рутине».
ИИ — это то, чему нужно научиться, протестировать и включить в практику программирования, чтобы программисты могли уделять больше времени действительно важным вещам: пониманию и решению проблем. Конечная точка этой революции — это не очередь безработных, это лучшее программное обеспечение. Единственное, чего стоит бояться, — не сделать этот переход.
Программирование никуда не денется. Оно изменится, и эти изменения будут к лучшему.