Могут ли разработчики сократить затраты на программное обеспечение с помощью ИИ?

Как разработчики могут сократить затраты на программное обеспечение с помощью ИИ?

Давным-давно те времена, когда вы покупали картридж Nintendo и никогда не обновляли его программное обеспечение. Мир изменился, и также изменилось программное обеспечение. Вместо того, чтобы жить в своей собственной маленькой (потрясающей) серой и черной коробке, программное обеспечение живет на взаимосвязанных машинах. Оно должно реагировать на изменения; оно должно адаптироваться по разным причинам. Будь то обновление безопасности перед новой атакой или обновление функций для поддержки этих изменяющихся экосистем. Программное обеспечение должно быть обновлено; оно должно быть поддержано. Код должен быть переписан, зависимости должны быть обновлены, приложения должны быть развернуты заново.

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

Эволюция кода и развитие экосистемы разработки

Чтобы понять ценность кода, нам нужно поговорить об абстракции. Большинство разработчиков не программируют с помощью 0 и 1, даже с 0 по f (некоторые так и делают). Вместо этого языки программирования развились так, чтобы позволить разработчикам использовать настоящие слова вместо 0 и 1. Аппаратное обеспечение изменилось, чтобы абстрагировать то, что разработчики должны были бы написать. Языки программирования со временем эволюционировали и продолжают эволюционировать в более высокие уровни абстракции, чтобы облегчить жизнь разработчиков. Мы перешли от низкоуровневого машинного языка (язык первого поколения или 1GL) к языку сборки (язык второго поколения или 2GL), к более абстрагированным высокоуровневым языкам (3GL), таким как C или Java, к языкам, ориентированным на конкретную предметную область (4GL), таким как R, SQL или PL/SQL, к языкам с ограничениями/логическими языками (5GL), таким как Lisp, OPS5 или Mercury. Суть в том, что каждое поколение абстрагирует все больше сложности от разработчика. 5GL полагаются на искусственный интеллект для создания решателей на основе поставленных проблем и условий.

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

Снижение общей стоимости владения (ТСО) и улучшение обслуживания

Начинать с нуля было бы чрезвычайно дорого. Я всегда помню эту историю про тостер. Томас Тветс решил создать тостер с нуля, без использования уже существующих абстракций. Он сделал все сам, начиная от добычи руды и заканчивая всем, что нужно для постройки тостера. В итоге тостер не работал и стоил абсурдные суммы времени и денег. Чтобы создать тостер, требуется целая цивилизация. Программное обеспечение тоже самое (хотя мы, возможно, пока не достигли этой точки). Если вы хотите предоставлять ценность, используйте абстракции. Меньше написанного кода означает меньше кода для поддержки, что в свою очередь приводит к снижению затрат на поддержку и снижению общей стоимости владения.

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

Влияние искусственного интеллекта на разработку программного обеспечения

Что имеет это общего с искусственным интеллектом? Было много возбуждения по поводу больших языковых моделей (LLM), и мы видели, как появляются новые инструменты, которые обещают писать код за вас. Хотя это может уменьшить начальные затраты на разработку программного обеспечения, это действительно то, чего хотят разработчики/организации/команды? Какая стоимость имеет написание большего количества кода, который может или не может делать именно то, что мы просили, и который не был написан членами команды? Как сложно будет поддерживать такой код, который мог бы быть абстрагирован с помощью правильного инструмента, правильной библиотеки? И насколько дороже это станет?

Учтите, что генеративное искусственное интеллект – это генераторы технического долга для 3GL, пока что. Возможно, это изменится в будущем, поскольку он станет более точным и лучше использовать существующие абстракции и окружающие экосистемы. Но прямо сейчас он не создает добавленной стоимости; наоборот. У вас есть столько способов написания кода на Scala, сколько у вас есть разработчиков Scala (с 3GL вы будете генерировать много “клея” или шаблонного кода – кода, который помогает взаимодействовать с используемыми абстракциями или даже заменяет то, что могло бы/должно было быть другой абстракцией, другой зависимостью).

В данный момент более интересно посмотреть на существующие 5GL или использовать генеративное искусственное интеллекта для 4GL, особенно для ограничений домена, таких как SQL. SQL идеально подходит для генеративного искусственного интеллекта, потому что синтаксис проще. SQL – это SQL. Вам не нужно так сильно поддерживать SQL-код, как вам пришлось бы делать с 3GL. И когда генерируется SQL-код, создается прямая ценность для домена, бизнеса. Вот что важно. SQL – это золотая середина между 3GL и 5GL. Это все еще язык программирования, как 3GL. Вы можете выразить то, что вы хотите, а не проблемы и ограничения, которые у вас есть, как это было бы с 5GL. Есть причина, по которой каждое хранилище данных в конечном итоге возвращается к SQL. И почему SQL постоянно обновляется новыми функциями, как мы делаем это в Couchbase.

Вывод

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