Чему вы научитесь
- Запускать горутины и управлять их жизненным циклом: WaitGroup, безопасный сбор результатов, диагностика и предотвращение утечек
- Работать с каналами: буферизованные и небуферизованные, направления, close и range, ok-идиома, nil-канал и deadlock
- Мультиплексировать через select: неблокирующие операции с default, таймауты, done-канал, отмена
- Владеть пакетом sync: Mutex и RWMutex, atomic, Once, sync.Map, Cond — и осознанно выбирать между мьютексом и атомиком
- Управлять отменой и дедлайнами через context: пропагация по дереву горутин, first-error, корректное завершение
- Собирать боевые паттерны: pipeline, fan-in/fan-out, worker pool, semaphore, rate limiting, graceful shutdown
- Объяснять data race через модель памяти Go и happens-before — и находить гонки детектором -race
- Собрать капстоун ProcessOrders: worker pool + склад под мьютексом + отмена по context, с результатом, не зависящим от порядка горутин
О курсе
Конкурентность Go на уровне собеседования: горутины, каналы, select, sync, context и боевые паттерны — pipeline, worker pool, semaphore, graceful shutdown. 340 задач с автопроверкой в браузере на Go 1.26 плюс 21 локальное задание, где гонки вы ловите настоящим детектором -race. Финал — капстоун ProcessOrders: конкурентная обработка заказов интернет-магазина.
Для кого этот курс
Курс — для тех, кто пишет на Go и подходит к конкурентности всерьёз.
- Джунам и мидлам на Go, у которых в проде «иногда падает» и «иногда виснет», а причину найти не получается.
- Готовящимся к собеседованию: конкурентность — обязательная секция интервью на Go, от «чем буферизованный канал отличается от небуферизованного» до «покажи worker pool».
- Разработчикам с других языков, привыкшим к потокам и локам, которым нужно перестроиться на каналы, select и context.
- Выпускникам курса «Go: идиоматичный код», которые пишут идиоматичный последовательный код и хотят перейти к конкурентному.
Начальные требования
Что нужно:
- Уверенный базовый Go: функции, структуры, слайсы и мапы, указатели, интерфейсы и ошибки. Это курсы «Go с нуля» и «Go: идиоматичный код».
- Компьютер с браузером. Для 21 локального задания с детектором гонок — установленный Go (в курсе показано, как поставить).
Что НЕ нужно:
- Не нужен опыт многопоточного программирования на других языках: модель памяти и happens-before объясняются с нуля.
- Не нужно ставить Go, чтобы пройти курс и получить сертификат: все 340 задач решаются в браузере, локальные задания — дополнительные.
- Не нужна теория операционных систем: планировщик подаётся ровно в объёме, нужном для практики.
Преподаватели курса
Как проходит обучение
- Формат: 8 модулей, 48 уроков, 680 коротких шагов. Текстовые лекции с примерами на сквозном домене shopdb (конкурентная обработка заказов), без видео.
- Практика: 72 % шагов — активные. 340 задач с автопроверкой, 147 интерактивных тестов и 21 локальное задание с настоящим детектором гонок -race.
- Проверка: скрытые тесты на движке Go 1.26.1. Конкурентный результат проверяется детерминированным агрегатом и стресс-повтором — «работает через раз» не проходит. Отмена моделируется явным cancel(), а не таймером: тест не зависит от скорости машины.
- Темп: свой, без дедлайнов. Доступ бессрочный, попыток неограниченно.
- Поддержка: комментарии под каждым шагом.
Ориентир нагрузки: при 7–9 часах в неделю курс проходится примерно за 7–8 недель; общий объём — около 58 часов.
Что вы получите
- Навык писать конкурентный код, который не течёт и не зависает: осознанный выбор между каналом, мьютексом и атомиком, корректная отмена через context.
- Умение читать отчёт детектора -race и чинить гонку, а не прятать её под sleep.
- 340 решённых задач, 147 тестов и 21 локальный прогон с -race.
- Капстоун ProcessOrders — конкурентная обработка заказов shopdb (worker pool, потокобезопасный склад, graceful shutdown) — артефакт в портфолио и готовый ответ на вопрос собеседования.
- Бессрочный доступ к материалам и обновлениям, сертификат Stepik.
- Мост дальше: «Go: тестирование и стандартная библиотека» — https://stepik.org/course/297081.
Нагрузка
7–9 часов в неделю, 7–8 недель на курс (общий объём ~58 часов)