🗺️ Дорожная карта Go-разработчика в 2023 году
В статье рассмотрим версию дорожной карты по Go в 2023 году и подробно разберем основные темы для успешного старта в разработке.
Как учиться?
Процесс обучения программированию на Go состоит из нескольких этапов: основы языка, фундаментальная информатика, веб-разработка и серверная (backend) часть. С этапами определились, но где же искать информацию?
Чтобы ответить на этот вопрос, рассмотрим основные способы обучения:
- Курсы. Этот вариант подходит тем, кто предпочитает заниматься по заранее составленной программе и не искать материал самостоятельно. Чаще всего курсы требуют финансовых вложений, но есть и бесплатные варианты, которые будут рассмотрены далее.
- Обучение с наставником. Этот способ позволяет получать знания от практикующего разработчика, который поделится личным опытом и проведет от азов до продвинутых аспектов языка.
- Самостоятельно. Обучение по книгам и открытым источникам довольно распространенный метод, но он требует самодисциплины и терпения. Из недостатков: нет гарантий эффективности, зачастую трудно подобрать подходящий материал и быстро в нем разобраться.
Все эти способы имеют свои преимущества и недостатки, поэтому выбирайте тот формат, который лучше всего подходит под ваши цели. Дорожная карта поможет разобраться в необходимых темах и составить структурированный план обучения.
Нулевой этап: настройка окружения
Начать стоит с настройки рабочего пространства, без которого не получится разрабатывать полноценные программы.
- Операционная система. Настоятельно рекомендуется Linux, так как он наиболее приближен к разработке, гибок и прост в настройке, имеет функциональный терминал.
- Редакторы кода, IDE. Есть множество вариантов, но большинство программистов предпочитают VS Code. Широко используется проприетарный Goland, который заточен под язык и обладает полезным функционалом.
- Установка и настройка Go. Необходимый пункт для локального запуска кода. Вся необходимая информация есть на официальном сайте go.dev.
Первый этап: основы языка
Рекомендуется начать с "Tour of Go" – интерактивного туториала по основам языка от его создателей. В нем содержатся все необходимые знания для погружения в Go, рассматриваются частые конструкции и примеры. Код можно писать, не выходя из браузера в интерактивном окне рядом с теорией.
Стоит отметить, что весь туториал написан на английском языке, поэтому вот список альтернативных ресурсов на русском:
- Курс по основам Go (Code Basics)
- Программирование на Golang (Stepik)
- Go (Golang) – первое знакомство (Stepik)
Второй этап: сomputer science
Фундаментальные знания в области компьютерных наук необходимы каждому программисту по нескольким причинам.
- Во-первых, они позволяют не только писать код, но и понимать, почему и как он работает.
- Во-вторых, computer science учит решению сложных задач, с которыми рано или поздно сталкивается каждый разработчик.
- В-третьих, знания в этой области открывают безграничные возможности для карьерного роста и ценятся в ведущих IT-компаниях.
Последовательность изучения тем:
- Архитектура компьютера: основные компоненты, как они взаимосвязаны.
- Операционные системы: принцип работы, управление памятью, ввод-вывод.
- Основы сетей: топологии сетей, уровни OSI и TCP/IP, коммутация и адресация.
- Алгоритмы поиска, сортировки, рекурсивные, комбинаторные.
- Парадигмы программирования: императивное, декларативное и другие.
- Многопоточность: параллелизм, процессы и потоки.
- Для погружения в материал рекомендуется прочитать статью «Разбираемся, как работают операционные системы»
Третий этап: изучение основ веб-разработки
Переходим к изучению веб-разработки и разбираемся как устроены современные сайты и приложения. На этом этапе важно понять общую структуру интернета, сетевые протоколы, взаимодействие с API. После прохождения этого раздела вы научитесь писать SQL-запросы, делиться кодом с помощью Git и настраивать веб-серверы.
Последовательность изучения тем:
- HTTP, DNS, SSL, TLS: принцип работы, для чего используются.
- API, JSON, XML
- Git
- Базы данных: какими бывают, как в них хранятся данные.
- SQL: изучите базовый синтаксис и основные СУБД (PostreSQL, MySQL).
- Веб-серверы: принцип работы, настройка Nginx и Apache.
- NoSQL (доп.): для чего используются, отличие от реляционных БД.
- Bash (доп.): как работать с командной оболочкой в UNIX-системах.
Четвертый этап: погружение в backend-разработку
На финальном этапе погружаемся в серверную часть. Важно разобраться в клиент-серверном взаимодействии, работе с контейнерами в Docker и Kubernetes, научиться проектировать микросервисы и использовать популярные фреймворки. Стоит также уделить внимание знакомству с тестированием и кэшированием.
Последовательность изучения тем:
- Docker & k8s: контейнеризация, виртуализация.
- CI / CD: непрерывная интеграция и доставка кода.
- Тестирование: интеграционное, функциональное, юнит.
- Микросервисы: архитектура, принцип работы, go-kit.
- Кэширование: как работает, какие есть уровни, типы.
- Фреймворки: документация, примеры кода.
Пятый этап: практика
Пришло время применить полученные знания на практике. Это самый ответственный этап становления разработчика, так как здесь начинается работа с реальными задачами и преодоление ошибок.
Хорошей стратегией будет создание собственного проекта по интересующей теме. При таком подходе вы увидите пробелы в знаниях и отточите навыки написания кода, а также пополните своё портфолио, которое может сыграть важную роль при трудоустройстве. Если не можете выбрать тему, рекомендуем обратиться к репозиторию project-based-learning.