Три недели. Скепсис, эйфория, разочарование, умиротворение, бессонница. Как я месяц подряд экспериментирую c Claude. Через мою призму и призму Claude. 

Эта статья написана в паре с ИИ (первоначально вообще надиктована чату гпт), поэтому за какие-то странные обороты прошу прощения.


Привет! Меня зовут Саша Раковский. Эта статья изначально планировалась в мой канал и попала на Хабр только по одной причине: кривая вёрстка в телеге. Но, если вам стало вдруг интересно, залетайте. Там нет ничего про вайб-код, но вещи, про которые рассказываю, как бы их ни пытались забыть, всё никак не могут устареть.

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


Скепсис

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

И вот с нового года начинается моё знакомство с Claude и первое удивление. При генерации фронта по небольшому промпту - всё в точку. То, что нужно.

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

Эйфория и бессоница

Мой скепсис сменился эйфорией быстро. Теперь идеи приходили в голову одна за другой - и нужно было попробовать всё. С тех пор эта эйфория сопровождает работу почти постоянно.

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

FOMO

Первые несколько недель меня непрерывно преследовал FOMO - страх упущенных возможностей.

  • Во-первых, чувствую, что отстал. Я начал спустя год после того, как Claude стал доступен. Постоянное ощущение догоняющего до сих пор не даёт покоя.

  • Пока ты точишь пилу, ты не пишешь код. Для работы с ИИ нужен арсенал: скиллы, промпты, правила, шаблоны. И пока ты точишь инструмент, совершенно не понимаешь, окупится ли оно. Вот как Claude прокомментировал один из этапов моего знакомства:

19 января — коммит с файлом, содержащим вопрос: «What would be the next step for improving my work with Claude?» Автор перестал просто использовать инструмент и начал его настраивать. За день: CLAUDE.md вырос до 97 строк с workflow и чек-листами. Родились пользовательские скиллы. После этого промпты стали короче — с 39 строк до 5, потому что контекст уже заложен в системе.

  • Узкое место теперь - это ты. Машина могла бы молотить бесконечно, но ей нужен человек, чтобы ревьюить, корректировать, принимать решения. Один агент работает — ты уже открываешь следующий терминал. Параллелишь потоки. И всё равно ты читаешь медленнее, чем машина в параллельном потоке делает итерацию.

  • Отдых. Это вообще отдельная очень странная форма FOMO. Тебе нужно есть, спать, общаться с семьёй. И все это время есть жгучее ощущение, что машина простаивает и не работает.

Разочарование и умиротворение

В один день моя эйфория упёрлась в реальные границы LLM. Вот как это описывает Claude:

25 января — 30 скиллов для каждой фазы TDD-цикла: /red-acceptance/red-usecase/green-usecase.

26 января — конвейер-промпт: 8 последовательных скиллов с правилом «коммит после каждого шага».

27 января — первый запуск. 40 коммитов, красивые пары RED/GREEN. И тут же — коммит с разочарованием: «Снёс нафиг всю документацию. Нейросети пока не готовы делать все сами.» 

Удалено 8800+ строк. На следующий день — ещё минус 980.

Опять бессонная ночь и идея: давай ещё раз, это ж ничего не стоит:

В конвейер добавлены скиллы ревью и рефакторинг после каждого шага. 9 контрольных точек STOP FOR REVIEW вместо NEVER STOP

В общем, к чему это я. Не вышел у меня заводик по производству софта без участия человека: не получилось отдать ллм генерацию кейсов и их последующую реализацию. Узкое место - какая-то непредсказуемая дичь, которую в 20% случаев ллм генерит на этапе решения. Может return true воткнуть в код репозитория вместо похода в базу, может ещё что-нибудь учудить.

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

Второе удивительное открытие - теперь почему-то просто не хочется писать код самому: ты почти всегда начинаешь что-то делать именно с постановки задачи Клоду. Исключения - простые фиксы и рефакторинг.

Четыре режима работы

Я увидел 4 основных режимов взаимодействия с LLM.

  1. По-старинке — LLM как замена поисковика. Это то, что сейчас, наверное, делают большинство разработчиков. Из моего опыта, это быстрее, чем гуглить решение на Stack Overflow. Но сейчас, в основном, я этот режим использую для оценки тех или иных решений, находясь на развилке, куда мне лучше пойти.

  2. Copilot — формулируешь задачи, агент выполняет. Тут есть не очень удачный вариант, где ты, как микроменеджер пытаешься закодить что-то руками нейросети. Так-то, конечно, быстрее самому будет.

    А есть вариант, который у меня сейчас очень хорошо заработал. Выглядит он так: процесс реализации сценария нарезается на RED-GREEN-REFACTOR участки в разных местах кодовой базы. После каждой фазы TDD цикла Клод делает коммит и ждёт ревью. Ты смотришь решение, рефачишь или просишь его скорректировать, а потом отпускаешь клод идти по потоку реализации дальше. При этом параллельно заканчивает работу второй поток, и ты идешь читать и исправлять его. Это сейчас у меня основной вариант разработки.

  3. Заводик — это вариант, где ты выдал Клоду десяток кейсов и описал процесс реализации: красный тест, зеленый тест, красный тест, зеленый тест. После чего потребовал не останавливаться, пока всё не будет готово. На опыте оказалось, что без ревью такое решение оставлять нельзя никак, а ревьюить такие большие куски кода невероятно скучно и утомительно. Ну и вероятность что-то пропустить резко повышается. Поэтому не рекомендую.

  4. Заточка пилы — работа над самой агентской системой, над девопсом всяким и еще много чем. Делается агентами практически в автономном режиме, в параллель основной работе.

Поток разработки

Мой процесс разделился на два этапа.

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

    1. /story - Сначала с опорой на письменное описание продукта и списка историй генерируется подробное описание конкретной истории.

    2. /mockups - На основе этого описания генерируются наброски интерфейса.

    3. /api-spec - На их основе - апи ��риложения.

    4. /test-spec - И потом на основе всего этого уже - тестовая модель, которая пойдет потом на вход разработки.

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

  2. TDD-конвейер из скиллов.

    Красный acceptance-тест, его ревью, красный тест уровня приложения, green-реализация, юнит-тесты, адаптеры. Каждый шаг — коммит. Через diff видно, трогала ли модель то, что не должна была. Работаю в режиме co-pilot в 2-3 потока, постоянно отсматривая и корректируя работу модели.

25 января — взрыв формализации. За один день создан полный набор TDD-скиллов: /red-acceptance/red-usecase/green-usecase/green-controller и ещё десяток. Каждый — подробная инструкция с описанием workflow, архитектурными правилами и примерами кода. Ключевое ограничение: «ONE test scenario per invocation». Claude пытался написать сразу все тесты — качество падало.

Выводы и прогнозы

В общем, чего хочу сказать.

Выводы:

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

  2. На текущем этапе вся эта песня про "ИИ заменит разработчиков" - пока ещё чушь. ИИ всё еще не способен надёжно писать код без ревью, всё еще регулярно генерит какой-то треш.

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

    Да-да, я про тесты. Но и не только. К тому же тесты - это идеальный способ замкнуть ИИ в цикл обратной связи, в котором он работает наиболее эффективно. Гораздо эффективнее, чем человек.

Прогнозы:

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

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