Теперь честно про размены. Бесплатно это не далось: • Кнопка стала медленной. Постоянный процесс отвечал мгновенно, а опрос раз в пять минут означает задержку 5–10 минут. Взамен штука работает при закрытом ноутбуке. Размен, о котором я не жалею, но он есть. • Вёрстка застыла. Раньше модель могла придумать новый формат блока прямо на ходу. Теперь, чтобы добавить тип упражнения, надо писать код. Гибкость обменяна на предсказуемость – для ежедневной рутины это правильно, для экспериментов было бы наоборот. • Появился слой, который надо поддерживать. Схема, валидатор на 218 строк, рендер, тесты. Это код, который живёт своей жизнью и иногда ломается. Раньше всего этого не было вообще. • Ретраи стоят денег. Валидатор отклоняет плохую генерацию и запускает повтор, до трёх раз. Плохой день обходится втрое дороже обычного. Но альтернатива – тренировка с битым заданием, которую я обнаружу утром и потрачу время на спор с собственным тренажёром. • Репозиторий публичный. Для публичных репозиториев минуты выполнения бесплатны, на приватном опрос раз в пять минут съел бы весь лимит. Секреты лежат в зашифрованном хранилище, но учебные материалы и мой прогресс по словам видны всем.

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

Итог за сто дней: 78 тренировок, около 29 часов языка, три цента за урок.