Ремесло Jul 16, 2026 at 17:457В закладки

Ник Малыхин должен был запустить базу Java 1.5 на современном оборудовании. Первые ответы его LLM казались правдоподобными, но не выдерживали проверки. Решение: перестать верить ему на слово и заставить опираться на доказательства.
LLM, выпущенный на унаследованный код, даёт ответы, которые звучат правильно, но не соответствуют проекту. Рабочая дисциплина: заставлять помощника работать на основе доказательств — кода, тестов, артефактов — а не из своей памяти.
26 июля 2026 года Nik Malykhin рассказывал на martinfowler.com о своей модернизации Java-базы 1.5 до современной среды. Контекст необычен: современные инструменты анализа и рефакторинга плохо работают с Java 1.5, и многие просто отказываются с ним взаимодействовать. Его первый порыв — напрямую просить помощника о исправлениях — привёл к тому, что Malykhin описывает как ответы «правдоподобные», но «не выдерживающие проверку в коде»: это выглядит как хороший Java 1.5, но не соответствует реальному репозиторию.
Перелом произошёл на уровне методологии. Вместо того чтобы использовать LLM как писателя, Malykhin использовал его как аналитика и проверяющего, опираясь на каждый шаг в репозитории: внимательное чтение существующего кода, проверка гипотез на тестах и трассировках выполнения, отказ идти быстрее, чем это позволяет сам код. Послание статьи простое: модернизация legacy с LLM не идёт быстрее, чем у археолога, она так же медленна, но с меньшими пробелами в доказательствах.
Этот подход в современном инструментарии агентов называют по-разному — evidence-first prompting, grounded reasoning, retrieval-first — но у него одно общее правило: каждое утверждение помощника должно основываться на артефакте репозитория (файл, строка, тест). Отсутствие этого ограничения порождает самые дорогостоящие «ложные срабатывания» LLM на legacy-коде: API более поздних версий, несуществующие методы, мнимые импорты.
Для команд, работающих с legacy, «копилёт» не предназначен для написания, а для поиска. Реальная продуктивность заключается в том, чтобы заставить LLM читать, а не гадать. Следствие для CTO: правильные метрики проекта по модернизации с помощью ИИ — это не «строки, сгенерированные», а «гипотезы, опровергнутые самим кодом». Разница между этими двумя подходами — это разница между проектом legacy, который завершится успешно, и проектом, который снова обернётся техническим долгом.
Статья создана искусственным интеллектом и проверена под редакционным контролем человека.
Войдите, чтобы участвовать в обсуждении.
Interesting approach. Does this method also work for other legacy systems, or is it specific to Java 1.5?
Est-ce qu'on peut vérifier les suggestions du LLM avant de les implémenter, surtout sur un vieux système comme Java 1.5 ?
On pourrait tester les propositions du LLM dans un environnement isolé avant de les appliquer au système principal ?
Est-ce que ça marche aussi sur des gros projets Java 1.5 ?
Est-ce que ça marche aussi sur des gros projets Java 1.5 ? Les LLM ont du mal avec le code ancien très imbriqué, leurs suggestions sont moins fiables.
Est-ce que ça marcherait aussi pour d'autres vieux systèmes ?
Intéressant, mais comment ça se passe avec d'autres langages anciens ?
Les LLMs pourraient-ils vraiment sauver nos vieux systèmes ?
Harness Ops : post-mortems et bench des agents en prod