Как я выбираю: костыль, рефакторинг или чистая архитектура. Мой алгоритм, выверенный многолетней практикой

28.01.26

Разработка - Рефакторинг и качество кода

Костыль, рефакторинг или архитектура - делюсь своим видением того, как выбирать правильный инструмент под конкретную задачу. За годы в 1С я выработал алгоритм "трех зон", который помогает мне не только писать код, но и говорить с бизнесом на его языке. В статье рассказываю, когда временное решение оправдано, а когда оно становится миной замедленного действия. Никаких нотаций, только мой опыт принятия решений, где каждая строчка имеет цену. Буду рад, если моя система поможет вам по-новому взглянуть на привычную рутину.

Кто я такой, чтобы рассуждать о стратегии разработки?
Я в 1С с 1998 года. Прошел путь от программиста-внедренца во франчайзи, до руководителя и совладельца бизнеса, который эту автоматизацию потребляет. И - да, так тоже бывает - вернулся обратно в ИТ. Я закладывал архитектуру в системах, которые работают до сих пор и разгребал последствия решений, принятых за пятнадцать минут до дедлайна. Сейчас я, в роли "играющего тренера", проектирую и руковожу, не отрываясь от кода. Мой опыт - это 27 лет принятия решений, где каждая строчка имеет цену в деньгах и рисках. Я не претендую на истину в последней инстанции и не собираюсь никого учить "жить", на Инфостарте очень много умных и опытных людей, у которых можно много чему научится. Я просто делюсь своей системой координат - если хотите примените её на своей практике, возьмите что-то полезное, если нет просто не забивайте себе голову.

Эта статья родилась из диалога.

Недавно я опубликовал шуточный рассказ "История о том, как Вася Пупкин спас квартальный отчет Марьи Ивановны" - байку про легендарный отчёт на 11 000 строк и костыль 2014 года. Некоторые читатели узнали в этой истории меня. И они были правы: прототипом был я, но очень, очень давно, да и сама история получилась с изрядной долей художественного вымысла. В комментариях развернулась жаркая дискуссия: одни говорили, что "за такое браться нельзя", другие - что "иногда приходится". Этот спор и заставил меня сформулировать то, что я интуитивно применял все эти годы: чёткую систему, которая определяет, когда можно (и нужно!) "костылить", а когда это - преступление против будущего проекта.
 

Вступление: Два типа боли и один разработчик

В понедельник мне нужно за 2 часа исправить алгоритм, иначе Марья Ивановна не сдаст отчёт. В пятницу я начинаю проектировать новый механизм ценообразования для сети розничных магазинов, который будет жить не менее 10 лет. Это - два полюса нашей работы. И главный навык senior-разработчика - не умение быстро кодить или правильно проектировать. А точное знание, когда какой полюс выбрать.

Сегодня я покажу свою систему принятия этих решений.

На мой взгляд, проблема в том, что в экосистеме 1С сложилась порочная экономика, где часто всем выгодно выбрать неправильный полюс:

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

  • Руководителю проекта выгоднее закрыть задачу костылём в срок, чем выделить бюджет на рефакторинг.

  • Бизнесу на первый взгляд выгоднее заплатить за доработку "вот этой кнопки", чем за "какую-то там архитектурную переделку".

Но на длинной дистанции проигрывают все. Статья - о том, как эту дистанцию пройти победителем.
 

Часть 1: Карта территории - три зоны ответственности разработчика

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

 

Зона 1: "Пожар" (Fire Zone)

 

 

  • Что это: Срочное требование, блокирующее бизнес-процесс прямо сейчас. Баг в период закрытия месяца/квартала.

  • Пример из жизни: "Не печатается ТОРГ-12 для отгрузки, машина стоит, клиент не доволен".

  • Ключевой критерий: Стоимость простоя бизнеса (здесь и сейчас) заведомо выше стоимости любого будущего техдолга.

  • Моё правило: Костыль не только допустим - он обязателен. Ваша задача - потушить пожар любой ценой. Но с одним железным условием: вы немедленно заносите это решение в реестр технического долга с меткой [FIRE] "разбором полетов" и сроком "обезвреживания".
     

Зона 2: "Ремонт" (Maintenance Zone)

 

 

  • Что это: Эволюция или расширение существующей функциональности. Новый отчёт на основе старого, интеграция с новым API, доработка типового механизма.

  • Пример: "Нужно добавить выгрузку в Ozon в дополнение к WB в уже работающий модуль".

  • Ключевой критерий: Решение будет жить долго и часто использоваться. Ошибка дорога, но не катастрофична. Сложность кода мешает развитию.

  • Моё правило: Рефакторинг перед расширением. Нельзя наращивать функциональность на кривой код. Сначала приводим участок кода в состояние "чисто и понятно", потом добавляем новое. Здесь важен баланс между качеством и сроком.
     

Зона 3: "Строительство" (Foundation Zone)

 

 

  • Что это: Создание новой сквозной функциональности, ядра сервиса, миграции данных. То, что станет основой для будущих развитий.

  • Пример: "Внедряем полный цикл планирования закупок с учётом сезонности и остатков с использованием ИИ".

  • Ключевой критерий: Ошибка проектирования обойдётся в миллионы и годы переделок. Решение станет "позвоночником" бизнес-процесса.

  • Моё правило: ПОЛНЫЙ запрет на костыли. Только проектирование, прототипирование, ревью кода. Здесь вы - архитектор, а не пожарный. Скорость вторична, правильность - первична.

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

Часть 2: Диагностика - 5 вопросов перед первой строчкой кода

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

  1. Вопрос на миллион: "Что случится, если это сломается через год?"
    Варианты ответа: 
    "Марья Ивановна позвонит и попросит пересчитать" → (Зона 1 или 2).
    "Остановится конвейер, будут простой и штрафы" → (Зона 3).

  2. Вопрос на время: "Сколько человек будут это использовать и как часто?"
    Частота использования - это мультипликатор.
    Костыль для отчёта, который запустят 1 раз - это терпимо.
    Костыль в механизме ежедневного проведения документов для 100 пользователей - бомба.

  3. Вопрос на связанность: "Сколько других процессов/модулей/отчетов от этого зависит?"
    Изменение в отчёте "Статистика посещений сайта" - это одно.
    Изменение в справочнике "Номенклатура" или документе "Заказ покупателя" - это другое.
    Чем выше связанность, тем ближе к Зоне 3.

  4. Вопрос на живучесть: "На сколько лет мы это делаем?"
    Временный отчёт для проверки гипотезы? Можно и на скорую руку.
    Механизм расчёта зарплаты? Только фундаментально.

  5. Вопрос на сложность: "Можно ли будет это выкинуть и переписать или это станет неубиваемым?"
    Самый важный вопрос. Если решение легко изолировать и заменить - риски ниже.
    Если оно "врастёт" в десятки точек системы - это Зона 3.
     

Часть 3: Инструменты - от быстрого хака до чистого кода

Для каждой зоны - свои инструменты и техники.

Для Зоны "Пожар": Техника "Изоляция и маркировка"

Цель: минимизировать ущерб от временного решения.

  1. Изолируйте костыль: Вынесите его в отдельную внешнюю обработку, общий модуль с понятным именем (Костыль_Для_ТОРГ12_До_01012026).

  2. Ярко пометьте: В названии и в заголовочном комментарии укажите: 
    // ВРЕМЕННОЕ РЕШЕНИЕ (FIRE). Причина: блокировка отгрузки. Удалить после: 01.01.2026. Автор: Иванов.

  3. Настройте напоминание: Создайте задачу в вашей системе учёта на дату "удаления после".
     

Для Зоны "Ремонт": Техника "Санитарная зона"

Цель: улучшить код ровно настолько, чтобы безопасно его расширить.

  1. Оцените объём: Выделите 30% времени от задачи не на новую функциональность, а на приведение в порядок только того кода, которого вы касаетесь.

  2. Не переписывайте всё: Не нужно рефакторить весь модуль на 11 000 строк. Нужно сделать чистым и понятным тот фрагмент, в который вы добавляете новую логику.

  3. Документируйте: Чётко опишите (хотя бы в комментарии), что теперь принимает и возвращает ваш переписанный метод.
     

Для Зоны "Строительство": Техника "Прототип в песке"

Цель: проверить архитектурную гипотезу до внедрения в боевую конфигурацию.

  1. Сначала - концепция: Схемы, UML, список сущностей и их связей. Обсудите с коллегами.

  2. Затем - прототип вне основной базы: Создайте внешнюю обработку или тестовую базу. Реализуйте ядро логики там.

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

  4. И только потом - интеграция: Перенос проверенного решения в боевую конфигурацию становится технической, а не архитектурной задачей.
     

Часть 4: Экономика решений - разговор с бизнесом на его языке

Самый важный навык senior-разработчика - переводить технические дилеммы на язык бизнес-рисков и финансов.

Пример неправильного диалога:

  • Бизнес: "Нужно доработать этот сложный отчёт к четвергу".

  • Разработчик: "Там плохой код, нужно долго рефакторить. Не успеем".

  • Итог: Конфликт. Бизнес считает разработчика "тормозом".

Пример правильно диалога:

  • Бизнес: "Нужно доработать этот сложный отчёт к четвергу".

  • Senior-разработчик: "Я понимаю срочность. Давайте рассмотрим варианты:

    1. Быстро (20 часов): Сделаем костыль и закроем задачу к четвергу. 
      Риск: В следующем квартале, при изменении требований, доработка обойдётся уже в 80 часов (в 4 раза дороже), так как код станет ещё запутаннее. Также есть риск ошибки при следующем закрытии.

    2. Надёжно (50 часов): Выделим время на рефакторинг проблемного модуля, затем сделаем доработку. Займёт больше времени сейчас, но полностью снимет риски на будущее. Дополнительные 30 часов сейчас - это страховой полис от будущих 80 часов переделки и срыва сроков.
      С точки зрения совокупной стоимости, вариант 2 экономит нам 80 - 30 = 50 часов и устраняет операционный риск.
      Какой вариант утверждаем?"

Мораль: Senior-разработчик не говорит "нет" и не говорит на все "да".

Он говорит: "Вот цена (деньги/время) и вот последствия каждого варианта". 

Он перестаёт быть "исполнителем запросов" и становится консультантом по ИТ и технологическим рискам.
 

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

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

Помните как в фильме "Тот самый Мюнхгаузен"? (Ссылка на фрагмент). "С восьми до десяти - подвиг". Речь не о работе в выходные и не о фантастических историях. Речь о том, чтобы ежедневно выделять стратегическое время - не на тушение пожаров, а на то, чтобы их предотвращать, вытаскивая проект за волосы из болота рутины и неочевидных рисков. Это про инициативу, которая на порядок снижает будущие затраты, потому что вы видите слабые места системы раньше, чем они дадут сбой.
 

Часть 5: Проактивность - ваш главный "некоммерческий" раздел

Что такое "подвиг" в разработке? 
Это не про героизм и сверхурочные. Это про видение пробела, о котором бизнес ещё не знает и предложение его закрыть до того, как он станет проблемой.

Пока junior и middle ждут, когда их "пнут" задачей, senior сам создает себе и другим новые задачи - те, что повышают устойчивость, снижают риски или открывают новые возможности для бизнеса.

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

Как и когда совершать "подвиги"?

  1. Не в ущерб основной работе. 
    Это не про работу по ночам.
    Это про выделение 10-15% вашего профессионального времени (как в Google) на улучшение системы, в которой вы работаете.

  2. Предлагать, а не делать молча. 
    Сначала - короткое предложение руководителю или бизнес-владельцу: "Я вижу проблему X. Она стоит нам примерно Y часов/денег в год. Я могу решить её за Z часов. Давайте сделаем?".
    Вы не ставите руководителя перед фактом проблемы, вы вовлекаете в процесс и сразу предлагаете решение.

  3. Считать и показывать выгоду. 
    Говорите не "я сделал такую крутую штуку", а "это решение сэкономит N часов в месяц отделу логистики" или "снизит риск штрафа от налоговой на K%".

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

Раз в месяц, раз в квартал, совершайте "подвиги" - уверяю вас бизнес это увидит, оценят и в долгу не останется.

Совет:
Ваш "подвиг" не должен превращаться в "сюрприз для команды".
Самая крутая фича может стать проблемой, если о ней знает только автор.
Главное в "подвиге" - сделать его прозрачным: зафиксировать изменения и объяснить бизнесу, какую дыру вы закрыли или какую пользу принесли.

Заключение: От интуиции к дисциплине - путь зрелости

Давным-давно, я думал, что senior - это тот, кто может починить что угодно. Теперь я знаю, что senior - это тот, кто не допускает ситуаций, где нужен героический ремонт.

Не через всеобщий контроль, а через дисциплину решений:

  1. Чёткое разделение задач на три зоны: Пожар, Ремонт, Строительство.

  2. Холодная диагностика пятью вопросами перед написанием кода.

  3. Мужество иногда потратить два дня на проектирование, чтобы сэкономить бизнесу два месяца боли в будущем.

  4. Понимание, что наша работа - не просто в написании кода, а в принятии решений о том, какой код писать, а какой - нет.

История про Васю Пупкина и костыль 2014 года - это не анекдот. Это памятник Зоне "Пожар", где решение было правильным для того момента.

Но (!) если вся ваша разработка - это череда таких "пожаров", ничего хорошего не получится, вы строите будущее на пепле.

Архитектурный иммунитет - это не про идеальный код. Это про правильные решения в нужное время.

Это про то, чтобы к 2026 году не оказаться заложником своих же быстрых решений (костылей) 2024-го.

Разрабатывайте осознанно.

Выбирайте зоны мудро.

 

Другие статьи автора:

Маркировка в "древней" УТ 10.3 (10.3.6.8) и полноценный ТСД (Online) или как обойтись без перехода на УТ 11.5
Как подключить маркировку в древней УТ 10.3 без перехода на УТ 11.5 - все необходимые объекты, модули и доработки
Автоматическое обновление токенов Честного Знака в 1С
Автоматическое обновление токенов Честного Знака в 1С - готовое решение для УТ, КА, ERP, УНФ, Розницы и Бухгалтерии, которое избавляет от ручных обновлений и остановки процессов.
Дубликатор кодов маркировки (КИЗ) DataMatrix: Расширение 1С с проверкой в Честном Знаке (копирует ЛЮБЫЕ КИЗы!)
Автоматическое обновление токенов Честного Знака в 1С - готовое решение для УТ, КА, ERP, УНФ, Розницы и Бухгалтерии, которое избавляет от ручных обновлений и остановки процессов.
Маркировка остатков товаров на складе: Как сделать все быстро и без ошибок (мой практический опыт)
Маркировка остатков 10 000+ товаров без ошибок — готовое решение, которое исключает человеческий фактор, автоматизирует процесс и работает напрямую с 1С. Пошаговый опыт и готовое расширение внутри.
Маркировка остатков в распределенной рознице: Как промаркировать более 100 тыс. товаров в нескольких десятках магазинов без хаоса и ошибок
Маркировка остатков 100 000+ товаров в рознице без хаоса и ошибок — клиент-серверное решение, где сканируешь ШК в магазине и сразу получаешь КМ на принтере, независимо от кассового ПО. Практический опыт, регламент и готовый комплект кода внутри.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Математика и алгоритмы Рефакторинг и качество кода Программист Бесплатно (free)

Разбираемся, что такое чистые функции и почему именно они становятся основой простого, понятного и адаптивного кода в 1С. Показываем, как выделение бизнес-логики в чистые функции упрощает переиспользование и делает модульное тестирование быстрым и эффективным, а также объясняем, почему без них сложно применять TDD. Демонстрируем на практических примерах, как перейти от «гвоздями прибитого» кода к архитектуре с минимальными зависимостями и удобной поддержкой.

02.04.2026    543    alex_sayan    13    

2

Нейросети Рефакторинг и качество кода Программист Бесплатно (free)

Создадим скрипт на Пайтон, предназначенный для автоматизированного подбора чанков (фрагментов требований к коду) при разработке на 1С. Она помогает разработчику формировать качественные промпты для ИИ, включающие все необходимые требования безопасности, производительности и стандартов кодирования. Кому интересно, покритикуйте и предложите улучшения. Результаты опубликуем.

20.03.2026    794    ksnik    4    

5

Нейросети Рефакторинг и качество кода Программист Бесплатно (free)

ИИ действительно помогает команде ускориться: быстрее разбирать код, быстрее входить в сложные участки, быстрее запускать доработки. Проблема в том, что вместе со скоростью он может ускорять и другое — накопление скрытой сложности, рост цены изменений и потерю управляемости. В статье разбираю, почему первые успехи с ИИ так легко опьяняют, когда система начинает выставлять счёт и что нужно сделать, чтобы ускорение не превратилось в новый виток технического долга.

17.03.2026    1510    IgorVasilyev    51    

26

Рефакторинг и качество кода Программист 1С:Предприятие 8 1С:Комплексная автоматизация 2.х 1C:ERP Бесплатно (free)

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

09.02.2026    1636    Eugen-S    10    

4

Нейросети Рефакторинг и качество кода Программист Бесплатно (free)

В статье рассказываю, как писать код 1С в VS Code с помощью бесплатных AI-моделей 🤖 Используем GLM-4.7 через Roocode + Cerebras (до 1 миллион токенов в день). Подключаем бесплатные MCP. Генерируем новый код и смотрим, как AI справляется с задачами.

06.02.2026    13552    Ibrogim    77    

50

Нейросети Рефакторинг и качество кода Программист Бесплатно (free)

Некоторые задачи можно и нужно делегировать ИИ, а простые задачи можно отдавать бесплатным моделям. В статье коротко рассказываю про расширение roocode для vscode, инструмент openrouter и реальную задачу по рефакторингу кода.

02.02.2026    12524    Ibrogim    54    

49

Рефакторинг и качество кода Программист Бесплатно (free)

Открываешь код и глаз начинает дёргается? Я собрал личный список ТОП-10 самых раздражающих и опасных ошибок в 1С, с примерами, юмором и практическими рекомендациями, как писать так, чтобы потом не было мучительно больно.

31.01.2026    3602    GarriSoft    89    

6

Рефакторинг и качество кода Программист Бесплатно (free)

История о легендарном отчете на 11 000 строк, копеечном расхождении и костыле 2014 года, который пережил все обновления. О том, как Василий спас квартальное закрытие, не тронув ни единой строчки кода монолита

15.12.2025    1921    GarriSoft    21    

20
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. DmitryKlimushkin 176 19.12.25 13:13 Сейчас в теме
Я тоже вернулся в ИТ после многих лет своего бизнеса) И это было не ИТ)) Можно сказать, "уходил на лёгкий труд") Получил бесценный опыт понимания "какой учёт нужен и зачем он вообще нужен". На мой взгляд, такой человек в нашей индустрии очень желанный сотрудник в любой серьёзной организации
3. GarriSoft 459 19.12.25 13:42 Сейчас в теме
(1)
Полностью солидарен. Этот "уход на лёгкий труд", если так можно назвать - лучшая школа бизнес-анализа и архитектуры из возможных.
Теперь мы можем разговаривать с заказчиком на одном языке: не "зачем вам эта кнопка?", а "какую бизнес-проблему мы решаем и сколько она стоит".
Именно таких людей и не хватает в нашей отрасли - переводчиков с языка бизнеса на язык технологий.
Рад встретить коллегу, прошедшего тот же путь!
5. DmitryKlimushkin 176 19.12.25 13:57 Сейчас в теме
(3) Путь был тернистый и есть куча опыта из разряда "да, шоб вечно этого не знать!" или "как это развидеть!")))
Комплексные выездные проверки, изъятия документов, уголовные дела, про арбитражи вообще можно не упоминать, банкротства...
Я точно знаю, что учёты бывают не "хорошие и плохие", а "хорошие, плохие и.... непроверенные")
2. gybson 6 19.12.25 13:29 Сейчас в теме
Каждый "пожар" имеет причину и её надо разбирать конечно, как шахматисты свои сыгранные партии. Тогда становится намного понятнее почему надо проектировать и как это делать так, чтобы не горело.
4. GarriSoft 459 19.12.25 13:43 Сейчас в теме
(2)
Абсолютно верно.
Разбор "пожаров" - это лучший учебник по проектированию.
Каждый такой костыль должен оставлять после себя не только временное решение, но и запись в "реестре причин".
Это превращает хаотичный опыт в системное знание, которое и формирует ту самую интуицию senior-разработчика, а именно умение видеть будущий пожар еще на этапе эскиза или прототипа.
6. chuevsf 124 19.12.25 14:53 Сейчас в теме
Бизнес всегда хочет быстро и дешево, а еще лучше бесплатно....

А мне кушать хочется вкусно сытно и почаще... А еще жена, дети и внуки....
7. GarriSoft 459 19.12.25 14:58 Сейчас в теме
(6)
Бизнес хочет быстро, дешево и бесплатно? Передайте им, что программист - как элитный шеф-повар:
1. Костыль - это доширак: готовится 3 минуты, стоит копейки, но если питаться им месяц, "желудок" системы вылетит в трубу.
2. Рефакторинг - это бизнес-ланч: добротно, полезно, кормит семью.
3. Чистая архитектура - это банкет в мишленовском ресторане: закладывается на годы, кормит даже внуков повара, но за вход надо платить золотом.

Так что, если бизнес хочет бесплатно - пусть грызут гранит науки сами, а у нас по расписанию "Подвиг"... а после подвига, как известно, полагается усиленное питание!
8. chuevsf 124 19.12.25 15:08 Сейчас в теме
(7) Эх, пойду распечатаю и повешу при входе... Хотя, лучше себе на грудь.
Вызовет меня хозяин, начнёт рассказывать какую большую мне зарплату платит.... А я ему эту бумажку на стол.

P. S. Осталось только найти ближайший мишленовский ресторан, чтобы он меня туда на обед возил.)))
9. GarriSoft 459 19.12.25 15:10 Сейчас в теме
(8)
Пока вы не нашли тот самый ресторан, помните: хороший архитектор 1С не ждет приглашения на обед - он просто проектирует систему так, чтобы она сама приносила ему десерт )))
10. chuevsf 124 19.12.25 15:13 Сейчас в теме
(9) Точно. Секретаршу обязательно надо для доставки десерта!... )))
11. gybson 6 19.12.25 15:34 Сейчас в теме
(6) сильно зависит от того покупаете или продаете =)
12. chuevsf 124 19.12.25 15:36 Сейчас в теме
(11) Чтобы продать что-нибудь ненужное, надо сначала купить что-нибудь ненужное...)))
13. aximo 2630 21.12.25 09:55 Сейчас в теме
Че-то ты разошелся со статьями… ну ок)))
14. GarriSoft 459 21.12.25 10:18 Сейчас в теме
(13)
Пока семья мандарины чистит, я свои "костыли" разбираю. ))))
Для отправки сообщения требуется регистрация/авторизация