Вайб-кодинг в IoT: год практики. Как ИИ меняет разработку, почему ключ — в соединении знаний, и что делать прямо сейчас.
Большинство ретроспектив о вайб-кодинге пишут люди, создающие веб-приложения. Когда их код ошибочен, страница просто не рендерится. Я работаю над IoT-системами, где софт управляет физическим оборудованием, которое движется — иногда в сетях, до которых я физически не дотягиваюсь. Когда мой код ошибочен, кому-то приходится ехать на объект. Это мои мысли на июль 2026 года. Моё мнение менялось примерно каждый месяц, так что относитесь к этому соответственно.
Раньше было так: сначала учишь язык, потом строишь на нём. За последний год я делал наоборот. Сначала выбираю, что хочу построить. Просматриваю язык ровно настолько, чтобы понять его характер. Сразу перехожу к рабочей системе. А затем уже учу язык как следует, рефакторя код.
Понимание приходит во время рефакторинга, а не до первой строки. Так я освоил языки, которые никогда не писал, и, думаю, знаю их лучше, чем если бы проходил туториалы — каждая концепция привязывалась к уже существующей проблеме.
Первым потолком была не галлюцинация, а повторение: одни и те же структуры пересоздавались в каждой сессии, ничего не накапливалось. Задолго до появления скиллов как фичи я сам делал их примитивные версии — переиспользуемые блоки инструкций, осознанное бюджетирование токенов. С тех пор эта проблема в основном ушла.
Это главное, что я хочу донести. Однажды мне нужно было связать софт с аналоговой телефонной линией. Я описал проблему подробно. Долгое время получал ответы разумные, но бесполезные — библиотеки SIP, софтфонные стеки, маршрутизация аудио. Всё правильно, но не для моей задачи.
Тогда я перестал спрашивать и пошёл читать про само железо. Там я нашёл два термина, о которых не знал: FXO и FXS — две стороны аналогового телефонного интерфейса. Вся моя проблема жила в этом различии, а я описывал её словами, которые его не касались.
Я добавил эти два термина в запрос — и ответы мгновенно изменились. Модель не поменялась. Просто у меня наконец появилось слово, которое указывало на мою проблему — и чтобы его получить, мне пришлось сначала чему-то научиться.
ИИ не учит меня тому, чего я не знаю. Он достраивает то, что я знаю наполовину. Полузнание остаётся на мне.
Следствие: чем стандартнее домен, тем чаще «средний» ответ и есть правильный. Для веб-прототипирования один человек с ИИ теперь побеждает небольшую команду, работающую по старинке, и это не близко. Для встраиваемых систем мне каждый раз приходится сужать самому.
В какой-то момент я отдал модели shell от запасного Raspberry Pi и позволил ей работать. Всё шло прекрасно, пока она не добралась до coreutils — и машина умерла.
Потеря одноразовой платы ничего не стоила. Но это стоило мне одного предположения. Большая часть действий модели была разумной. Провал был в том, что между правдоподобной командой и необратимой не было ничего.
Именно так появился слой безопасности выполнения в homebutler — узкий набор инструментов, которые агент может вызывать, вместо shell, где он может делать что угодно.
Люди ожидают, что моё правило будет категоричным — «никогда не давай ИИ трогать парсер протоколов». У меня нет такого правила. Моя граница — радиус поражения.
Двадцать строк, меняющих формат лога, и двадцать строк, достающих до контроллера устройства — не одно и то же, хотя в диффе выглядят одинаково. Чтобы это оценить, нужно знать систему.
Поначалу я отказывался двигаться дальше, пока полностью не понимал всё, что было создано. Потом я заметил очевидное: генерация быстрая, моё чтение — нет, и разрыв рос. Поэтому я создал кастомный скилл, который проходит по коду и выдаёт отчёт на естественном языке: пути вызовов, сложность, структуру. Я читаю отчёт, а не весь код.
Буду честен, что это такое. Я делегировал проверку тому же классу систем, который порождает проверяемое. Это реальная слабость. Я пошёл на неё, потому что альтернатива обесценила бы весь выигрыш в скорости. Я не решил эту проблему — я выбрал компромисс.
Недавно меня попросили провести ревью кода коллеги. Я сразу увидел фикс — вся структура была у меня в голове. Но когда я сел за клавиатуру, я не смог его написать, потому что не мог вспомнить, какую функцию взять. Замысел был цел, а вот извлечь его из головы — нет. Год назад я бы это сделал. Я не буду делать вид, что это нормально.
Способность соединять идеи, которые живут в разных местах. Не глубину в одной точке — этот разрыв ИИ закрыл быстрее всего. Если мне нужно глубоко копнуть одну тему, я добираюсь туда за полдня. Глубина стала дешёвой.
Но не подешевело умение видеть, что идея здесь и идея там — одна и та же идея в разной одежде. Держать в голове всю форму системы и знать, где её швы. Именно такой была проблема с телефонной линией. Не технически сложная — просто ответ жил в домене, который я не связывал со своим.
И именно эта связующая работа определяет качество того, что возвращается. Увидь форму — и сможешь указать модели, какая связь важна. Не увидишь — и будешь вечно получать разумный средний ответ, даже не подозревая об этом.
Если выстроить год в линию, закономерность трудно не заметить. Каждый предел выше выглядит как предел инструмента. Но ни один из них таковым не является. Повторение — не то, что модель не запомнила: я не построил каркас. Средние ответы — не поверхностность: у меня не было нужного слова. Мёртвый Pi — не безрассудство: я не создал слой между правдоподобным и необратимым. Узкое место в ревью — это я, по имени.
Модель стала лучше почти во всём за этот год. Но она не стала лучше в знании моей системы — и не станет. Это не навык, это место, где ты должен побывать. Плата на моём столе. Ограничение, которое никто не записывал, потому что все его знали. Сбой, за которым я наблюдал в 2 часа ночи. Ничего из этого нет в обучающих данных, потому что ничего из этого никогда не было записано.
Всё, что я делаю, ускорилось, кроме одного: решения, что с чем соединять. Это решение остаётся за мной, и оно влияет на гораздо больший объём вывода, чем раньше. Поэтому отдача от понимания, как части сочетаются, в этом году выросла, а не упала. Это противоположно тому, что я ожидал.
Так что если вы спросите, что стоит прокачивать в себе прямо сейчас, я бы не сказал «язык», «фреймворк» или «умение промптит». Я бы сказал: умение соединять одно знание с другим. Это единственный вход, который модель не может дать, и он определяет качество всего, что она возвращает.
Это мой ответ после года. Ваш будет другим — вы стоите там, где я никогда не стоял.
Начните с малого: выберите задачу, где вы чего-то не понимаете, и вместо того чтобы спрашивать ИИ, сходите и прочитайте документацию по железу или спецификации. Найдите ключевые термины, которые описывают вашу проблему, и только потом возвращайтесь к модели. Вы увидите, как ответы изменятся. Это первый шаг к тому, чтобы перестать быть «средним» и начать соединять знания.
Хочешь закрепить знания на практике?
Решай задачи на Algolit — интерактивная платформа для обучения
Начать бесплатно →