[#] Вайбкодинг
hugeping(ping,1) — All
2026-09-20 14:20:41


Попробую эту заметку написать без лишней рефлексии. Понял, что сильно зацикливаюсь на тексте, когда это совсем неважно. Краткое резюме всей статьи: я начал вайбкодить, у меня кончился недельный лимит, пришлось писать эту статью. Дизлайк, отписка...

Если вы всё ещё здесть, погнали!

## Путь программиста

Я из тех программистов, которые больше инженеры, чем математики. Первый мой компьютер - БК-0010-01 показал главное -- он делает точно то, что ты ему скажешь. Словно шарманка. Повторяет всё, даже ошибки. Это было похоже на откровение и я заразился на долгие годы.

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

Практически всю свою т.н. "карьеру" я был системным программистом. Но любопытство толкало меня в разные области и я не стал упёртым дедом-сишником. Я использовал и продолжаю использовать различные высокоуровневые ЯП, изучать ФП, пробовать себя в сложных и непривычных для себя задачах.

При этом, к нейросетям я всегда относился скептически, так как:

- не верил (и не верю), что сознание это алгоритм;
- не верил, что нейросеть пройдет тест Тьюринга.

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

Когда начали появляться все эти чаты с ИИ и copilot'ы, я стал понимать, что пройти тест Тьюринга _они_ смогут. Но по-прежнему не видел большой пользы в применении ИИ для программирования. Тем более -- системного. Даже сложно было представить себе сам процесс - отладку кода ИИ!

Потом прошло ещё немного времени и на github стали появляться проекты в которых в истории коммитов стоял Claude. С немалой долей презрения, я стал избегать подобные проекты.

Тут есть ещё момент момент, на котором хочу остановиться. Даже если представить, что ИИ полезны при программировании, зачем мне лишать себя удовольствия? Ведь делегирование своей работы убивает сам _дух_ программирования! Отбирается то, ради чего я и стал программистом. Так рассуждал я, читая очередные заметки программистов, которые стали "вайбкодить".

## OpenCode

Но пропустим лирику. Так или иначе, неделю назад (или уже больше? время пролетело как во сне) я поставил себе OpenCode. Ссылку на проект прислал true-grue. Зачем я вообще начал эту историю? Вероятно, как обычно, сработало любопытство. В плане OpenCode есть бесплатная llm под названием Big Pickle. С ограничением на контекст 200к токенов. Ну, и я попробовал...

Опять пропустим лирическую часть. Напишу пока факты, которые я признал в результате первого опыта.

- Мощь этой штуки (работа в режиме агента) не идёт ни в какое сравнение с режимом чата. То есть, если вы судите о программировании с ИИ по чат-сессиям -- вы не понимаете о чём говорите. Это, если что, я не про _читающего_ эти строки, а про себя. Я не понимал о чём говорил. ИИ в режиме агента: ставит инструментарий, отлаживается, ловит ошибки и исправляет их. Эта обратная связь меняет всё.

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

- Радость от процесса не ушла. Но это другая радость. Я думал, люди выбирающие ИИ работают ради результата и мне с ними не по пути. Потому что мне важен процесс. (Почему _работодатель_ принуждает сотрудников использовать ИИ мне уже понятно.) Но оказалось, что фан не ушёл, хотя и стал другим. Самое близкое, что я могу тут предложить: парное программирование.

## Выводы

То, что ИИ изменило программированиее навсегда -- факт, который невозможно игнорировать. Кто-то уже осознал это, кто-то осознает потом. Он опустошает, потрясает, пугает и восхищает одновременно. Но это та мощь, которую просто невозможно игнорировать. При этом, я не могу сказать, что я "рад" своему открытию. Я тоже опустошён. Я тоже чувствую, что "ИИ" отобрал у меня работу. Я также считаю, что ИИ несёт для всего человечества угрозу, просто потому... что это (снова остаётся только употребить то самое слово) МОЩЬ. Что нас ждёт?

- Больше не будет _настоящих_ программистов (раскрывать не буду, очевидно);
- Ждём массу CVE, а у тех "кому нужно", уже есть тонны 0-day уязвимостей;
- Философские и религиозные вопросы, к которым человечество не готово (и не будет готово никогда);
- Большая вероятность потери контроля над "ними";
- Само программирование становится облачной услугой (ужасный факт!);
- Само ПО скорее всего будет больше и сложнее (ИИ могут писать много), потеря контроля над таким ПО.

## Практика

Надо ли говорить, что после того, как я всё это испытал, я занёс деньги в OpenCode (дают возможность пробовать разные модели). А потом, когда исчерпал лимиты - заплатил напрямую DeepSeek. Кстати, чисто практическое наблюдение. Мне очень понравилась дешёвая, но быстрая модель: DeepSeek v4.1 Flash. Очень быстро работает, дёшево относительно лидеров, и её уровня мне определённо достаточно. С умными, но медленными моделями -- не покатило совсем. Уныло. :)

Итак, во время "вайбкодерского" запоя я решил (нет! _МЫ_ решили) технические долги по всем моим хобби-проектам. Эти задачи я думал в лучшем случае закончить за пол года-год:

- rein+red: поддержка sam Edit, tls, клиент gemini, клиент irc, поддержка цветовых тем, разбиение на окна. как в acme и многое, многое другое.
- instead 3.6: переход на SDL3 завершён, сборка на гитхаб workflow для всех вариантов (в том числе и macOS), порт android-launcher на SDL3, куча багов исправлено и многое другое.

За это время я действительно вымотался. Потому что темп процесса очень высокий и за проектом нужно следить, иначе ты теряешь контроль. То есть, это постоянный коде-ревью и "руководство". Я часто вносил изменения параллельно с работой "напарника", получалось очень весело. Мы работали вдвоём. :)

## Один старый баг

В 2011г. я написал для жены игру - цветные шарики. В игре был баг, который иногда воспроизводился, когда в неё играла жена. Этот баг я не мог найти все эти годы. В основном, потому что не мог воспроизвести проблему. Я, конечно, задал эту задачу "ему". Цитирую:

> Нашёл. Проблема не в правилах игры, а в рассинхроне поля и графики; воспроизвёл её детерминированно в симуляторе (40×30k тиков с агрессивным «кликером»: 946 утечек путей, 523 невидимых шарика — после фикса 0/0/0).

> Механика бага

> board_move (board.lua:392-414) — единственное место, где ставится метки пути move_matrix += FL_PATH; снимает их только анимация движения (board_clear_path из game_display_board).

> Анимацию запускает game_move_ball (gfx.lua:122-127), но берёт «откуда» из текущего выделения selected_x/selected_y, а не из фактического источника хода. Если в окне между ходом (state=CHECK) и стартом анимации игрок успел кликнуть по клетке-назначению (шарик уже логически там, а gfx-клетка ещё пуста), получается source == target: эффект moving тут же гасится disable_effect и обнуляется та же клетка (gfx.lua:127-137) — прогулка никогда не выполняется, метки пути остаются навсегда. Клик по другому шарику в этом окне даёт board_follow_path-нал и ошибку «Fatal: moving».

> Дальше game_process_board ставит логическому шарику fadein, но ветка fadein (gfx.lua:226-233) при board_path ~= 0 не рисует и не увеличивает step — шарик навсегда застревает невидимым в клетке-метке. А board_move при попытке сдвинуть его возвращает 0 (move_matrix источника ≠ 0), пустые клетки старого пути — вечные невидимые стены.

> Окно маленькое (один тик таймера, ~30 мс; шире при пропуске кадров), поэтому «иногда».

> Готовый фикс (проверен симулятором, исходники в /tmp/opencode/ilines-fix):

> board.lua: запоминать источник удавшегося хода (ball_from_x/y); в начале board_move чистить move_matrix целиком (самолечение застрявших меток);

> gfx.lua: для состоявшегося хода брать источник из ball_from_x/y и запускать анимацию всегда (без гейта cell == 0).

> Применить патч к games/ilines?

## Как раньше

> Окно маленькое (один тик таймера, ~30 мс; шире при пропуске кадров), поэтому «иногда».(c)

Это можно ненавидеть, презирать, отрицать и уходить в "затвор". Но игнорировать _это_ невозможно. Я не знаю, что нас всех ждёт, но в одном убеждён:

Как раньше -- больше не будет.

Посмотрим.

P.S. Edited: 2026-09-20 13:52:33