engineering-practice
Инженерная практика
Привычки, которые отличают пет-проект от профессиональной команды, — хорошо тестировать, безопасно выкатывать изменения и поддерживать сервис живым в продакшене.
Начать трек →С нуля
Перед senior-материалом: что вообще такое инженерная практика и горстка слов, которые остальной трек считает уже знакомыми.TDD и property-based-тестирование
Тест-сначала — это давление на дизайн, а не ритуал покрытия: red-green-refactor вскрывает плохие интерфейсы рано, правило границ укрощает тестовые дублёры, property-тесты находят граничные случаи, которые вы бы не перечислили, а мутационное тестирование — честная метрика того, заметит ли набор баг.Контрактное тестирование
Сквозное интеграционное тестирование рушится с масштабом; consumer-driven-контракты заставляют потребителя задать истину, провайдер проверяет её через брокер, а can-i-deploy превращает матрицу верификации в гейт безопасности деплоя — заменяя бо́льшую часть межсервисного e2e для известных внутренних потребителей.Ревью кода
Ревью существует, чтобы ловить дизайн и замысел, а не стиль — механическое автоматизируйте; размер PR задаёт и задержку, и обнаружение, действенный фидбэк с пометкой важности бьёт вердикты, а на масштабе вы маршрутизируете владение, ограничиваете время подхвата и иногда переводите ревью в непрерывное или post-commit.Trunk-based разработка
Почему частота интеграции — главный рычаг элитной поставки: вливайтесь в trunk ежедневно, прячьте незавершённую работу за флагами, пропускайте каждый merge через зелёный CI и удаляйте ветки и флаги так же быстро, как создаёте.Feature flags
Скоро — Инженерная практикаPostmortems
Скоро — Инженерная практикаOn call
Скоро — Инженерная практикаМастерство отладчика
Отладчик — микроскоп с управляемым исполнением; брейкпоинты, watchpoint'ы, core dump'ы и live-трейсинг превращают невоспроизводимый баг в наблюдаемый.Putting it together
Скоро — Инженерная практикаПроекты по этому треку
Guided-проекты, которые закрепляют изученное здесь.
Сервис фич-флагов
Собери небольшой сервис флагов с правилами таргетинга, процентными раскатками и типизированным SDK, который вычисляет флаги на клиенте из закешированного набора правил.
Распределённый rate limiter
Собери token-bucket лимитер, который держится поперёк многих инстансов приложения за счёт счётчика в Redis, а не в памяти процесса.
Текстовый diff — алгоритм Майерса
Реализуй алгоритм diff Майерса с нуля: вычисли наибольшую общую подпоследовательность, построй edit script обратным ходом, докажи минимальность и применяй патчи так, чтобы любой round-trip был побайтово точным.
Планировщик сборки на топологической сортировке
Собери планировщик задач на основе DAG — как Make или CI-пайплайн — который упорядочивает задачи по зависимостям, обнаруживает циклы до дедлока и определяет, какие задачи можно выполнять параллельно.
URL-сокращатель под нагрузкой
Собери URL-сокращатель, который выдерживает настоящий трафик, — а потом эксплуатируй его: задеплой, наблюдай и разберись с инцидентом, когда одна горячая ссылка плавит твой кэш.
SQL и PostgreSQL вглубь
Язык SQL и внутренности Postgres для senior-инженеров — джоины, окна, CTE, транзакции, планировщик.