Лого МТС
0
Обложка: 4 инструмента будущего, которые упростят жизнь разработчикам

4 инструмента будущего, которые упростят жизнь разработчикам

Вадим Сагидулин
Вадим Сагидулин
ВрИО руководителя центра RnD

Добрый день! Я Вадим Сагидулин, в информационных технологиях с 1998 года, а в МТС с 2005. Сейчас занимаюсь R&D-исследованиями внутри компании.

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

Генератор кода

Представьте сервис, который пишет код самостоятельно. Вам нужно создать задачу и наблюдать, как машина её выполняет. Сейчас мы в МТС планируем создать такой. Уже есть исследования по этой теме, которыми занимается один из вузов страны.

Но существуют и готовые прототипы. Самый яркий — GitHub Copilot, который продвигает Microsoft. Технология только появилась в открытом доступе, но один из наших сотрудников успел протестировать её заранее — пока она находилась в ограниченой бете. Выглядит многообещающе.

UPD: Сейчас подписка на GitHub Copilot стоит $10 в месяц или $100 в год (есть пробная версия на 60 дней). Для студентов с пакетом GitHub Student Developer Pack и авторов популярных проектов с открытым исходным кодом на площадке подписка бесплатная.

Иллюстрация: инструменты будущего

Эту часть пишем сами

Иллюстрация: инструменты будущего

А эту пишет алгоритм

GitHub Copilot — это модель, обученная определённым образом. Вы открываете IDE, начинаете писать код, и система выдаёт его примерное продолжение. Другой способ — обозначить желаемый результат в виде комментариев. Модель сама напишет под них функции.

Код GitHub Copilot неидеальный — человек всё равно должен его проверить. И результат будет напрямую зависеть от того, насколько подробно и понятно вы описали машине техзадание.

Инструмент для анализа безопасности кода

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

Сейчас мы настраиваем конвейер разработки и говорим системе: «Вот тебе репозиторий, который находится на внутреннем GitLab, пожалуйста, отслеживай коммиты и по мере их накопления проводи анализ».

Результат проверки приходит на почту, где описаны внутренние проблемы. Процессы идут постфактум, когда ты сохранил код и сам проверил несколько раз.

Хочется, чтобы система работала внутри IDE, в режиме реального времени и без лишних затрат (и ложных срабатываний). Мы в МТС пока ищем такой и сами думаем, как его можно сделать.

Инструмент реализации Infrastructure-as-Code

Пока мы не видели ни одного инструмента, который бы позволил нам создавать виртуальную инфраструктуру, просто говоря: «Компьютер! Я хочу сделать четыре виртуальных сервера. В каждом из них должно быть столько оперативной памяти и столько жёстких дисков. А ещё — вот такой программный стек».

Пока мы вместо этого пишем очень много кода:

И это далеко не всё

На примере установка WordPress c помощью шаблонов. Грубо говоря, мы пишем «Компьютер, создай мне, пожалуйста, базу данных. И собственный движок WordPress. И веб-сервер, который будет предоставлять информацию наружу».

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

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

Предиктор ошибок

Следующий пункт — про эксплуатацию, а не написание кода. Существует проблема: понять, почему что-то десять минут назад работало, а сейчас перестало. А предугадать, что какая-то часть системы сломается в ближайшее время, и вовсе невозможно.

Существуют инструменты, которые оценивают проблемы постфактум. А также объясняют, что нужно сделать, чтобы такого не повторялось. Но это мало помогает, если всё лежит прямо сейчас.

Хотелось бы видеть инструмент, который проанализирует систему и скажет: «Дорого́й друг, через десять минут всё упадёт. Добавь ресурсов, — или, — включи кондиционер».

Попытки такое создать есть. По крайней мере, у российских компаний существуют наработки в сфере информационной безопасности. Они пробуют сделать систему класса the extended analyze and respond. По идее, она будет анализировать огромный поток данных, которые генерируются в виде логов. А также искать аномалии и адекватно на них реагировать, например, блокировать сетевой доступ для подозрительного лица.

И пара уже существующих инструментов, которыми пока мало кто пользуется

Есть компания Open AI, в которую вкладывают миллиарды крупные игроки рынка, такие как Microsoft. Её разработчики обучили модель, которая изучила открытые репозитории кода. И создала возможность писать с помощью них ПО (в основе GitHub CoPilot лежит как раз технология OpenAI Codex).

Расскажу о паре инструментов Open AI — что-то похожее на них хотелось бы внедрить внутри компании.

Поисковые запросы из описания

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

У Open AI есть инструмент, который позволяет делать это автоматически. Благодаря ему любой человек может «попросить» какие-либо данные, например, всех, кто летал в Турцию в апреле. И машина довольно быстро это выдаст.

Анализ кода

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

Инструмент, который создали Open AI, делает это за вас. Он анализирует код и вкратце объясняет, для чего тот нужен.

Ещё есть инструмент, который переводит код из одного языка программирования в другой. Или помогает оптимизировать код — например, оставить 50 строк вместо 120.

Вместо вывода

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

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

Разные команды МТС, в том числе RnD-специалисты ищут новые и нетривиальные решения, которые помогут выполнять простую и не очень работу, не тратя время и нервы сотрудников.

А какие инструменты мечтаете увидеть вы? Делитесь хотелками и идеями.