December 2, 2023

ИИ и ИТ

На этой неделе я наткнулся на две любопытные статьи о будущем IT-разработки и роли искусственного интеллекта (ИИ) в этой области. Первая, написанная директором по разработке департамента управления технологиями МТС, поднимает вопросы о возможности замены IT-специалистов ИИ [1]. (Возможно для ряда «нетворческих» работ.) Вторая статья касается алгоритмов и их важности/неважности в процессе разработки [2] (глубокие познания в алгоритмах не нужны для многих задач). Обе статьи предлагают интересные перспективы, которые резонируют с моими собственными мыслями и наблюдениями по этим вопросам.

Замена IT-специалистов искусственным интеллектом

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

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

Алгоритмы в работе IT-специалиста

Алгоритмическое мышление — это не просто запоминание и применение сложных алгоритмов. Это умение строить последовательности действий для решения задач, что является ключевым навыком для любого IT-специалиста. Да и не только для него [3].

Алгоритмы — не что-то особенное, мы все знаем, что это такое, живём в них. Я часто объясняю это понятие своим студентам на простых примерах. Например, составление четких инструкций о том, как доехать к вам домой, или как приготовить определенное блюдо. Эти простые задачи демонстрируют основы создания алгоритмов и от них легко перейти уже к более сложным задачам. Например, как приготовить определённое блюдо в процессе поездки в гости. 🙂

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

Почем? Потому что в современном мире IT многие сложные алгоритмы уже реализованы и доступны в библиотеках. Это означает, что специалистам часто не требуется переизобретать колесо, а вместо этого они могут использовать уже существующие решения. Автор второй статьи, на которую я ссылался ранее, правильно указывает, что знание сложных алгоритмов не всегда является необходимым условием для IT-специалиста. Его задача заключается в их эффективном применении, а не в написании с нуля.

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

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

ИИ в программировании

Многие пишут про то, как ИИ изменит разработку. Недавно я видел статистику, что чуть ли не половина кода на GitHub уже пишется ИИ. (Под ней разворачиваются баталии, где из дыма и пыли периодически доносятся разрывы и разлетаются осколки с надписями «это всё говнокод!», «да не хуже, чем у ваших джунов!» и т. п.)

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

Эффективное взаимодействие с ИИ-разработчиком

Ранее я сравнивал ИИ со спикартом [4]. Но есть более классическая аналогия — голем. Искусственное создание, требующее чётких инструкций и соблюдения техники безопасности. Иначе же способное наломать немало дров.

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

Увы, пока не существует кнопки «Сделай мне шедевр, а я пока посплю». Для успешной работы с ИИ, как и при управлении командой людей, необходимо четко определять цели и ожидания. Это касается не только разработки: скорее всего вы не сделаете с помощью команды продукт много лучше, чем вы могли бы сделать сами, если бы у вас была уйма времени и ресурсы. Нет, это не значит, что проектирующий завод инженер должен уметь и приварить прут, и наладить медосмотры. Но иметь достаточное представление обо всём этом он должен, чтобы контролировать исполнение. (Здесь можно поговорить про делегирование, подбор команды, «руководителей 5 уровня» по Коллинзу — но имхо сути это не меняет: при качественном делегировании просто вырастают требования к руководителю в части подбора сотрудников, умения ставить и контролировать задачи, и сводить их в целостный проект.)

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

Но — см. выше — надо точно знать, что ты хочешь, уметь это сформулировать и уметь на этом настоять.

Заключение

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

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

——

Ссылки

  1. Смогут ли разработчики конкурировать с нейросетями: оцениваем возможности AI и человека → https://habr.com/ru/companies/ru_mts/articles/777592/
  2. Почему алгоритмы не важны? → https://habr.com/ru/articles/776194/
  3. Квадривиум → https://akry.livejournal.com/1203247.html
  4. Спикартhttps://t.me/thoughts_pile/3969