Привет, Хабр! Меня зовут Антон Сулаев, я руководитель команды бэкенд-разработки Почты Mail.ru в VK и по совместительству ведущий преподаватель онлайн-курса «Разработка веб-сервисов на Golang». Недавно мы рассказали об открытии набора на новые бесплатные курсы VK Education по нескольким востребованным направлениям — программирование на Python и Go, а также техподдержка.
В этой статье мы подробнее расскажем о курсе «Разработка веб-сервисов на Golang», слушатели которого смогут развить навыки программирования на этом языке и научатся использовать его в серверной веб-разработке.
Подача заявок на программу открыта до 20 сентября включительно. Она бесплатная, но нужно пройти отбор. Для поступления требуются знание Python, С/С++ или JavaScript, а также понимание принципов работы основных веб-протоколов и баз данных. Само обучение начнётся 28 сентября. Эта статья поможет понять, из чего состоит курс, чем он будет полезен студентам, а также в целом составить представление о профессии Go-разработчика.
Для начала — немного о себе
Я занимаюсь веб-разработкой на Go шестой год. В VK работаю с 2017 года. Занимательный факт — я пришёл на работу в компанию после окончания того же курса, на котором теперь преподаю :) Я начал путь от стажёра в VK и вырос до senior-грейда, став тимлидом. Сейчас разрабатываю API основного бэкенда Почты Mail.ru, который связывает бизнес-логику глубокого бекенда (поиск, хранение писем, авторизация, профиль пользователя и другие) и клиентов (веб, iOS, Android).
Чем занимается наша команда:
Отвечает за SLA основного бэкенда Почты Mail.ru. Мы поддерживаем его на уровне 99,99999.
Предоставляем инструменты разработки и тестирования кода API для других команд. Мы обеспечиваем его проверку, выкатку и мониторинг.
На образовательных курсах VK Education преподаю уже четвёртый год. Кто-то занимается этим для построения личного бренда, другие — для развития ораторского мастерства, а я преподаю, чтобы находить талантливых стажёров и сотрудников к нам в команду. Не секрет, что лучшие выпускники курсов имеют перспективы трудоустройства в компанию.
Курс ведут:
Антон Сулаев (это я) — руководитель команды бэкенд-разработки API Почты Mail.ru
Дарья Фёдорова — ведущий разработчик команды бэкенд-разработки API Почты Mail.ru
Андрей Киселёв — бэкенд-разработчик кросс-командных сервисов в Почте Mail.ru
Александр Сазонов — бэкенд-разработчик API в Почте Mail.ru
О программе обучения
Go — популярный язык, который хорошо подходит для создания высоконагруженных систем. На нём приятно писать и поддерживать уже имеющийся код. Чаще всего его используют для бэкенд-разработки при написании сайтов, серверных приложений, парсеров, сложных вычислительных систем и даже баз данных. Мы всегда рады новым разработчикам на Go, учитывая рост таких систем в нашей компании.
На курсе вы освоите асинхронное программирование, оптимизацию производительности и кодогенерацию, поработаете с базами данных и микросервисами, научитесь разрабатывать веб-сервисы на Go. Всего будет 13 занятий на 52 академических часа. Программа курса будет разнообразной – ниже я постарался более подробно её расписать.
Итак, слушателей курса ждут:
Вступительная лекция. Знакомство с Go.
Асинхронное программирование.
Основы работы с сетью, HTTP.
Проектирование API, авторизация.
Разработка веб-приложения и его архитектура.
Работа с системами хранилищ.
Безопасность веб-приложений.
Микросервисы.
Конфиги, мониторинг.
Continuous integration & deploy.
Рефлексия и кодогенерация.
Резюме современного backend-разработчика и что мы делаем в highload.
Помимо этого студентам будет необходимо выполнить 10 практикоориентированных домашних заданий, например:
поэкспериментировать с «чистой архитектурой»;
сделать микросервис с использованием gRPC;
настроить развёртывание кода на виртуальной машине с помощью Gitlab CI/CD;
повозиться со связкой Grafana и Prometheus;
написать свой кодогенератор поверх парсера AST;
научиться работать с Reflect;
оптимизировать код и научиться пользоваться профилировщиком.
На заключительной лекции мы расскажем, как продолжать развиваться и строить карьеру в бэкенд-разработке, какие задачи решают бэкендеры конкретно в нашей команде и чего мы ожидаем от будущих кандидатов.
Анастасия Скуйбедина, менеджер образовательных проектов VK:
Мы постоянно совершенствуем наши образовательные программы, чтобы прививать студентам самые актуальные навыки, которые востребованы в IT-индустрии сегодня. Отличительной особенностью всех программ, включая “Разработку веб-сервисов на Golang”, является их практикоориентированность. Студенты будут выполнять домашние задания, приближенные к реальным задачам и кейсам индустрии, участвовать в практических воркшопах с менторами и финальном хакатоне, а также смогут получить первичную рецензию кода в домашних заданиях.
Чтобы поступить на курс, нужно пройти онлайн-тестирование. В него входят задачи на базовое знание C/C++, основ веба и логику. То есть для поступления нужно обладать начальным набором знаний по этому направлению. Например, мы не будем объяснять в деталях что такое SQL-запросы и HTTP и как они работают — всё это студенты должны уже знать. Подготовиться к прохождению вступительных испытаний поможет список полезных материалов на сайте.
Каким должен быть Go-разработчик?
Идеальный разработчик — не тот, кто просто пишет код, а тот, кто умеет его раскатывать и решать возникающие проблемы. И хотя наш курс называется «Разработка веб-сервисов на Golang», мы будем говорить не только про код, но и про всё, что с ним связано.
Главное, нужно уметь задавать вопросы, не терять энтузиазма и получать удовольствие от того, что ты встречаешь и решаешь новые, непривычные задачи. У нас в команде две похожие задачи одному человеку достаются раз в пару лет. Поэтому крутого стажёра отличает то, сколько он готов уделять времени изучению неизвестного. Не просить ментора расписать ему план действий, а копать самому и получать от этого настоящее удовольствие. То есть необходима самостоятельность в принятии решений, умение договариваться и исследовать.
Подчеркну: в нашей компании junior — это сотрудник, который порой может самостоятельно решать довольно крупные задачи. Это полноценный член команды. Конечно, стажёрам и начинающим специалистам мы помогаем, но по мере накопления опыта ожидаем, что человек будет всё больше делать самостоятельно.
Бэкенд-разработка так же интересна, как и другие направления, и здесь есть множество возможностей для карьерного роста — как вертикального, так и в экспертной плоскости. При желании всегда можно попробовать себя в новой специальности. Например, я знаю случаи, когда Android-разработчик становился бэкендером или бэкендеры начинали заниматься разработкой под iOS. Главное — готовность расти, вкладывать время и силы в постоянное изучение нового, брать на себя ответственность и принимать решения.