К основному содержимому
к странице архива
#AI4SDLC

Макс Канат-Александер: нужно ли качество кода, который можно заменить? (Рубрика #AI4SDLC)

У Max Kanat-Alexander из Capital One вышел доклад «Does Code Quality Still Matter?», который хорошо продолжает тему моего keynote на DotNext: что происходит с инженерией, когда реализацию становится проще сгенерировать заново, чем поддерживать годами?

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

Дальше он предлагает шкалу от disposable до durable software. На одном конце — программа для организации одной вечеринки. На другом — система, от которой годами зависят люди и бизнес. Положение на шкале определяют четыре вещи: последствия отказа, стоимость замены, зависимости и стоимость сопровождения. Для первого случая, считает Макс, качество кода может не иметь значения. Для второго инженерная дисциплина остаётся необходимой.

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

И вот здесь я бы отдельно развёл срок жизни системы и срок жизни её реализации.

На DotNext я развивал идеи Чада Фаулера из книги "Regenerative Software". Система может жить десятилетиями, а код отдельных компонентов — регулярно заменяться. Для этого накопленное знание должно переживать очередную генерацию:

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

Это для меня и есть важная часть regenerative software development. Мы заранее создаём условия, при которых реализацию можно выбросить, сохранив поведение и понимание системы. Одна папка с Markdown сама по себе такой способности не даёт :)

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

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

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

#AI4SDLC #Engineering #Architecture #Software #AI #Conference

Открыть видео на YouTube