Бесконечный Regenerate

G
Завершён
0
Фэндом:
Размер:
32 страницы, 7 517 слов, 7 частей
Описание:
Публикация на других ресурсах:
Уточнять у автора / переводчика
0 Нравится 0 Отзывы 0 В сборник

Страсть Артёмки

Настройки
Артёмке было тридцать пять. В компанию он пришёл полтора года назад и сразу произвёл хорошее впечатление на коллег и начальство. Говорил он спокойно, размеренно, не суетился, на вопросы отвечал после паузы — как будто сначала выстраивал в уме целую систему, а потом уже выражал словами то, что считал нужным. Формально его должность называлась Senior Software Engineer. Иногда в переписке рядом с его именем появлялось ещё и Team Lead — Артёмка отвечал за небольшой, но, по его словам, критически важный модуль большого проекта. То, что в команде, работавшей над этим модулем, он числился единственным участником, Артёмку совершенно не смущало. У него была любимая фраза: «Я больше про архитектуру и процессы», — и это отчасти было правдой. Код он писал редко. Чаще всего он его генерировал. В этом и заключалась его главная профессиональная страсть. Артёмку завораживал сам процесс появления решения. Возможность снова и снова запускать генерацию, наблюдать, как меняются структуры, упрощаются конструкции, исчезают лишние детали. Каждая новая версия казалась шагом к чему-то более точному, более чистому, более правильному. При этом сам код как таковой интересовал его значительно меньше. Он не любил вникать в детали реализации. Синтаксис разных языков казался ему избыточным, а чтение чужих функций — утомительным. Если в решении встречалась сложная логика, он предпочитал не разбираться в ней, а сформулировать новый запрос и получить более понятный вариант. Иногда он ловил себя на том, что не до конца понимает, почему именно текущая версия работает лучше предыдущей. Но это его не смущало. Главное, что был результат. Если код компилировался — это был хороший знак. Если проходили тесты — ещё лучше. Если код выглядел аккуратно и уверенно — значит, решение созрело. Артёмка считал, что настоящий инженер должен работать на уровне принципов, а не строк. В его понимании программирование делилось на два этапа: формулирование задачи и проверка результата. Всё, что происходило между ними, относилось к реализации. Реализацию можно было доверить системе. Со временем он выработал для себя простой критерий качества. Если он открывал сгенерированный код и понимал его с первого взгляда — версия считалась удачной. Если приходилось читать внимательнее — это означало, что система пока думает не в ту сторону. Тогда он нажимал Regenerate. Иногда генерация происходила десятки раз подряд. Артёмка спокойно наблюдал за процессом, время от времени уточняя формулировки. «Упрости логику». «Сделай более читаемо». «Подумай про производительность». «Это должно быть production-ready». В такие моменты Артёмка испытывал почти профессиональное удовлетворение. Не от того, что он писал хороший код, а от того, что, как ему казалось, он умел правильно направлять процесс. Артёмка искренне верил, что его главная компетенция — не программирование. Он умел добиваться от системы нужного состояния. И в этом, как ему казалось, и заключалась современная разработка. Писать код вручную было бы шагом назад. Каждое утро начиналось одинаково. Около полудня. Кофе. Почта. Календарь. Артёмка внимательно просматривал задачи, открывал одну из приоритетных и некоторое время просто читал описание, пытаясь решить, достаточно ли он мотивирован для неё сегодня. Чаще всего оказывалось, что нет. Тогда Артёмка возвращался к списку и выбирал задачу попроще — менее срочную, но, на его взгляд, более подходящую для текущего рабочего настроя. Но выполнять выбранную на день задачу Артёмка не торопился. Он внимательно смотрел на несовершенный код, слегка прищурившись, иногда откидывался на спинку кресла, иногда снова наклонялся к монитору. Со стороны это выглядело как сосредоточенная инженерная работа. По крайней мере, сам Артёмка был в этом уверен. Собравшись с мыслями и наконец допив кофе, он уверенно нажимал Regenerate. С первого раза никогда не получалось. Второй вариант был немногим лучше. Третий — тоже. Четвёртый возвращал знакомые конструкции, но в другом порядке. Пятый выглядел увереннее. Шестой — осторожнее. Артёмка кивал. Он верил в процесс. Иногда он мог просидеть над одной функцией два или три часа. Он не отвлекался, не переключался на другие задачи. В его календаре стояли блоки «Deep work», и коллеги старались его в это время не дёргать. — Он очень вдумчивый, — иной раз говорил менеджер на планёрке. — Не просто пишет код, а ищет оптимальное решение. Сам Артёмка на дейли отчитывался кратко и лаконично: — Продолжаю работу над задачей. Там есть нюансы по архитектуре. Хочу добиться устойчивого решения. Нюансы действительно были. Иногда код не компилировался. Иногда компилировался, но падал на тестах. Иногда тесты проходили, но решение казалось тяжёлым. И тогда Артёмка снова нажимал Regenerate. Со временем у него выработался особый ритм работы. Сначала — общий запрос. Потом — уточнение. Потом — аккуратное давление. «Сделай более читаемую версию». «Оптимизируй по памяти». «Учти граничные случаи». «Это должно быть production-ready». После каждого ответа он делал паузу. Читал. Сравнивал. Иногда открывал предыдущую версию. Иногда просто смотрел на экран несколько секунд. И вновь нажимал Regenerate. Когда Артёмка изредка появлялся в офисе, коллеги замечали, что он почти не печатает. — Ты что, всё время думаешь? — как-то спросил один из них в общем чате. — Пытаюсь сначала найти правильный подход, — ответил Артёмка. — Переписывать потом дороже. Это звучало разумно. Иногда Артёмка замечал, что не до конца понимает, что именно изменилось между последними версиями. Но это не вызывало тревоги. Если поведение становилось стабильным, тесты проходили, а код выглядел аккуратно — значит, процесс шёл правильно. Настоящий перфекционизм, как считал Артёмка, заключался не в том, чтобы написать решение самому. А в том, чтобы не мешать появиться лучшему варианту. К середине рабочего дня у него вырабатывалось почти медитативное состояние. Экран обновлялся. Варианты сменяли друг друга. Где-то менялись имена переменных. Где-то появлялись дополнительные проверки. Где-то исчезали. Иногда новая версия оказывалась хуже предыдущей. Это тоже было частью процесса. Тогда он нажимал Regenerate ещё раз. К вечеру решение начинало «собираться». Код выглядел аккуратно. Логика становилась ровной. Тесты проходили один за другим. Когда последний тест загорался зелёным, Артёмка некоторое время просто смотрел на экран. Потом открывал diff. Если изменения выглядели спокойными и понятными, он коммитил. В комментарии он писал: «Refactored and optimized implementation». Когда-то давно, казалось, в прошлой жизни, а на самом деле всего лишь в конце испытательного срока, менеджер пригласил его на встречу один на один и сказал: — Мне нравится твой подход. Ты не гонишься за скоростью. У тебя чувствуется инженерная культура. Артёмка тогда ответил: — Я просто стараюсь доводить решения до правильного состояния. В тот же вечер Артёмка сидел в почти пустом офисе — экран светился мягко, кондиционер тихо шумел. Он открыл новую задачу, прочитал её и запустил первый вариант. Код появился мгновенно. Артёмка посмотрел на него. Помолчал. Слегка улыбнулся. И нажал Regenerate. Он не писал код, не в этом была его страсть. Он добивался, чтобы код написал себя сам.
0 Нравится 0 Отзывы 0 В сборник