Продолжение моей статьи Мечтают ли архитекторы об электроовцах?, в которой я обещал привести практический пример.

Резюме

Обычно начинают с начала, но я решил сразу представить итоги, от бизнес-идеи до запуска в продакшн, для тех, кто не любит вдаваться в подробности.

Краткое описание сервиса

Сервис для генерации XML-файлов, содержащих информацию о заказах для бухгалтерии, работающий по расписанию.
Основной рабочий процесс — запрашивает данные о заказе в БД, генерирует XML-файл и отправляет на FTP-сервер бухгалтерии.
Шесть основных бизнес-сценариев генерации XML-файлов.

Сроки реализации

  • Старт: 15 января 2026 года, задача взята в работу аналитиками.

  • Начало реализации: 26 января 2026 года, задача взята в работу архитектором.

  • Финал: 18 февраля 2026 года, успешные тесты и запуск в продакшн.

Итог: 5 рабочих недель или 26 рабочих дней от старта до финала.

Трудозатраты

  • Бизнес-аналитик: 13 ч. или примерно 1,625 полных рабочих дней.

  • Системный аналитик: 17 ч. или примерно 2,125 полных рабочих дней.

  • Архитектор (ваш покорный слуга): 18 ч. или примерно 2,25 полных рабочих дней.

  • LLM DeepSeek Reasoner: 2600 API calls, 117M tokens, $4.62 cost.

Итог: 48 ч или 6 раб. дней + $4.62 расходов на LLM.

Технический стек

Фаза 0. Анализ и подготовка

Самый важный этап на мой взгляд — это тщательный анализ требований и подготовка к реализации. Это включает в себя:

  1. Изучение бизнес-процессов: Понимание текущих бизнес-процессов и их сложности.

  2. Анализ данных: Анализ данных, необходимых для решения задачи.

  3. Определение требований: Определение конкретных требований и ограничений.

На этом этапе большую часть работы проделали аналитики.
Они подготовили примеры XML-файлов, SQL-запросы и данные в CSV-файлах для каждого бизнес-сценария.
Далее с помощью LLM был проведен анализ подготовленных аналитиками материалов.
LLM сформировала технический план реализации, по которому велась разработка.

Фаза 1. Каркас и докеризация

Проводя анализ технического плана, выяснилось, что LLM расположила этап докеризации седьмым пунктом.
Поэтому я указал LLM начать реализовывать п.1 «Каркас» и п.7 «Докеризация».
Так как мне было важно, чтобы сервис изначально собирался и запускался в Docker.

Важно! Всегда проводите анализ того, что собирается сделать LLM!

Фаза 2. Core

Получив работающий каркас приложения в Docker, я начал последовательно реализовывать пункты из технического плана.
После реализации каждого пункта проводилась проверка и тестирование сервиса.
Было реализовано:

  • Simple HTTP API: health-check, status, version endpoints

  • DB Layer

  • XML Generation

  • FTP Integration

  • Job Scheduling

Плюс к этому был реализован базовый набор юнит-тестов.

На этой фазе сервис уже полноценно работал, успешно генерировал XML-файлы и отправлял их на FTP-сервер.
Поэтому я передал сервис аналитикам для тестирования и валидации XML-файлов.

Примечание: Если у вас вдруг возник вопрос, почему тестировали аналитики, а не QA-специалисты, то ответ очень простой: вся суть сервиса — сгенерировать правильный XML-файл, провести валидацию содержимого бухгалтерских данных проще всего было именно аналитикам.

Фаза 3. Интеграционные тесты

Во время тестирования аналитики выявили ошибки в XML-файлах.
Мы начали изучать причины и выяснили:

  1. Изначальные SQL-запросы были некорректными: при изменениях в основной системе продаж SQL-запрос не возвращал часть данных. То есть SQL-запросу нельзя было доверять. Задача вернулась аналитикам на доработку SQL-запросов.

  2. Расхождение между данными в CSV-файлах и эталонными XML-файлами.

  3. Лишние данные в XML-файлах.

Все эти проблемы были выявлены LLM, я лишь транслировал их аналитикам и обсуждал, как так получилось.
Если коротко, то это человеческий фактор.

Возникла потребность в реализации интеграционных тестов. Этот пункт и так стоял в плане, но как обычно откладывался, чтобы быстрее выпустить продукт.

Идея очень простая: у нас есть эталонные XML-файлы и данные из CSV-файлов. Мы можем использовать данные из CSV-файлов для генерации XML-файлов и сравнивать их с эталонными XML-файлами.

После коррекций со стороны аналитиков я реализовал интеграционные тесты. В процессе реализации был исправлен ряд ошибок в коде с прошлых итераций.
И вновь сервис был передан на тестирование и валидацию аналитикам.

Фаза 4. Исправление багов

Естественно, были выявлены еще ошибки в XML-файлах. И вновь основной причиной были помарки в эталонных XML-файлах.
После их коррекции LLM легко исправляла проблемы.
Всего было найдено три бага:

  • 1-й и 2-й баг были исправлены в течение 10 минут каждый.

  • 3-й баг был более серьезным, ошибка была в бизнес-логике, на исправление было потрачено около 1 ч. Каюсь, это уже мой косяк, я сам не уловил, как должно быть, и так транслировал это LLM.

Опять человеческий фактор, а не LLM.

Ретроспектива

Давайте теперь пофантазируем на тему того, как было бы реализовано это без LLM.

Ну для начала, анализ и подготовка были бы такими же, как и в нашем случае, поэтому этот пункт мы опустим.

Прогнозирование

До начала разработки своими силами я отдал задачу на анализ программисту.
Поэтому у нас есть стартовые прогнозы от него.

Предлагалось два схожих варианта, которые займут одинаковое время:

  1. Веб-приложение.

  2. Консольное приложение, которое запускается планировщиком задач Windows (Task Scheduler).

Технические работы:

  1. Описать контракты, приходящие из БД по каждому бизнес-сценарию.

  2. Описать контракты для сохранения в файл.

  3. Написать маппинг БД в файл.

  4. Проверить скрипты, добавить хранимые процедуры в базу.

  5. Добавить DAL (на Dapper будет быстрее всего).

  6. Добавить выгрузку на FTP.

  7. Мониторинг.

  8. Логирование.

  9. Метрики (по желанию).

  10. Развертывание и проверки.

Итоговая оценка: 40 ч. + накладные расходы/погрешность.

Моя оценка этого плана: 50 ч.

Вероятный сценарий реализации программистом

Уверен, что стартовый сервис он бы реализовал за прогнозируемое время, т.е. за 40+ часов.

Дальше бы он столкнулся с ошибками в XML-файлах, которые генерировал бы ему сервис.
Как долго бы он разбирался в проблеме? Как быстро бы он выявил те проблемы, которые были обнаружены в реальном кейсе?

Ну пусть он бы тратил по 8 ч на каждую из ошибок, рабочий день.
Мое личное мнение, что в разы больше, но давайте смотреть оптимистично!

Итак, предполагаем следующие:

  • Он бы понял, что проблема в SQL, за 8 ч. Пофиксили ее.

  • Дальше понял бы, что есть расхождение между данными и эталонными XML-файлами за 8 ч.

  • Обнаружил лишние данные в XML-файлах за 8 ч.

  • Пофиксил бы 1-й и 2-й баг за 8 ч. Это те, которые LLM исправила за 10 минут.

  • Пофиксил бы 3-й баг, проблема с бизнес-логикой за 8 ч. Не верю в такое, но пусть будет так.

Итог: 80+ часов!

Обращаю внимание, что интеграционных тестов в его плане нет.

Выводы

Все мои допущения я трактовал в пользу программиста, в вероятное итоговое время включил время аналитиков, опустил массовые code review и другие мелочи. Про сроки реализации вообще молчу.

Дальше делайте выводы сами!

P.S.

Статья про фактическое использование LLM в реальной разработке ПО со статистикой, описанием проблем и т.д.

Программист с «лопатой» не сможет «копать» так же, как программист на «экскаваторе»!

Комментарии (12)


  1. Dhwtj
    20.02.2026 16:00

    Программист с «лопатой» не сможет «копать» так же, как программист на «экскаваторе»!

    Чем система сложнее и дольше живёт тем меньше эффект от LLM.

    А статей про mini utilities on greenfield я уже накушался

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

    Тяжело джунам, не понимают они этого. Эффект Даннинга-Крюгера


    1. Dhwtj
      20.02.2026 16:00

      Добавлю еще

      Даже если Greenfield проект все равно LLM проигрывает в сопровождаемости. Чем сложнее тем сильнее.

      Я проектирую как шахматист: вот сделаю такой ход, тогда это будет стоить столько и повлечет такое. И продумывание в глубину 2-3-5 ходов.

      А LLM просто пытается склеить книжные решения. Результат предсказуем. Представьте такое в шахматах. После дебюта все пойдет плохо. LLM пока не научился в шахматы программиста... И далеко еще...


      1. Volodrippa
        20.02.2026 16:00

        И снова legacy-slop шахматист вещает о том, как LLM просто склеивает книжные решения, как будто на дворе 22 год, и мы просто до сих пор засовываем весь код в контекст как есть


        1. Dhwtj
          20.02.2026 16:00

          Лучше подумай о том, как ты за свою короткую и несчастную жизнь и 9 комментариев на Хабр умудрился получить 7 минусов в карму. Может, надо вежливо писать?


          1. Volodrippa
            20.02.2026 16:00

            На твое токсично-потничковое сообщение может быть только такая реакция. 0 понимания вопроса, зато Даннинг-Крюгера знает когда ввернуть.


            1. Dhwtj
              20.02.2026 16:00

              Где та молодая шпана, что сотрёт нас с лица земли?


  1. WhiteBehemoth
    20.02.2026 16:00

    Давайте теперь пофантазируем на тему того, как было бы реализовано это без LLM.

    Берется студент профильной специальности или любой другой любознательный подросток, который за пару дней вникает в задачу и пишет MVP. И ему опыт практический и вам плюс в карму за развитие молодого специалиста.


  1. arch1lochus
    20.02.2026 16:00

    • Он бы понял, что проблема в SQL, за 8 ч. Пофиксили ее.

    • Дальше понял бы, что есть расхождение между данными и эталонными XML-файлами за 8 ч.

    • Обнаружил лишние данные в XML-файлах за 8 ч.

    На месте программиста - ленивец Флэш из Зверополиса?


    1. Dhwtj
      20.02.2026 16:00

      Либо он не пробовал либо ему дули в уши.


      1. arch1lochus
        20.02.2026 16:00

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


    1. sickfar
      20.02.2026 16:00

      Да ладно вам, обычный разраб крупной компании. Это студентом я шпарил 10 фич за 2 часа. А сейчас надо подумать. 2 бага на восьмичасовой рабочий день - нормальный темп без напряга.


  1. frostsumonner
    20.02.2026 16:00

    Меня с этих цифр иногда в дрож бросает... 30 ч на ба+са - у нас на проекте на 1 задачу могут заложить столько.