Я три месяца разрабатывал библиотеку в рабочем проекте (изначально написанную в основном руками) через LLM.
Библиотека довольно важная, покрыта unit и браузерными тестами. Я единственный автор и вычитывал каждое изменение, но... все равно в конце концов я стал сам в ней путаться.
Мне стало сложно найти логику которая я точно знаю где-то тут есть, влоть до того что быстрее было спросить LLM - где реализация того что я ищу.
Важный момент - код работает, и работает шустро, дело делает, есть слои, абстракции и т.п. - это не какой-то безумный спагетти-код - но читать его самостоятельно стало сложно. Почему?
Я отдохнул на выходных, и решил что это отличный кейс разобрать что же с ним не так. Я взял чашку чая и начал читать его от начала до коцна подмечая вещи которые меня смущают:
1. По прошествии трех месяцев некоторые сущности остались со старыми названиями хотя в корне поменяли свою зону ответственности
2. Файл не был переименован, хотя были переименованы экспортируемые из него обьекты.
3. В файловой структуре больше нет логики - иерархия директорий не соответствует иерархии в логике
4. Неоправданно большой файл - то что легко можно было вынести в три отдельных файла было свалено в один большой на 350 строк.
Все это можно было избежать через отдельное прогоны ревью LLM (которые я периодически запускал) и линтерами.
Проблема не в инструменте, проблема во мне - человеке.
У меня банально нет мотивации это делать, ведь я не вижу эти проблемы:
Во-первых - я делаю ревью изменений, т.е. дифов. А значит, я не вижу каждый раз картинку целиком, я не "загружаю" "карту кода" в голову, как это случается при разработке вручную с погружением в задачу. При работе с LLM у меня в голове более абстрактный образ системы с пунктами плана или какая-то блок схема - и на этом уровне все выглядит вполне хорошо.
Во-вторых - я сам не спотыкаюсь о проблемы с организацией кода и для LLM это не мешает работе - т.е. не получаю фидбэк о проблемах. При разработке в ручную это происходит само собой - "неровности" мешают, отвлекают, усложняют - как следствие, у меня есть мотивация это поправить - так код всегда поддерживается в приемлемом состоянии. Нет нужды в нем ориентироваться - нет потребности ему уделять внимание.
Кстати похожая проблема у меня возникала еще до LLM - когда работа постоянно в режиме спешки, но механика там совсем другая - что-то дополнительно делать кроме прямого выполнения задачи кратчайшим путем, времени просто нет. А боль есть. Разработчики мучаются, им хочется поправить, они копят бэклог и выгорают от того, что не в силах с этим что-то сделать.
Мне кажется что по иронии, именно на таких проектах LLM используется сегодня особенно активно потому что разработчики убивают двух зайцев - не "страдают" от ковыряния в таком коде, и успевают уложится в супер сжатые сроки (на качество в таких условиях всем и так ведь плевать)
Post #463
1.06K
- 👍 18