Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Привет! Меня зовут Александр Тетеркин, я Go-разработчик в VK. Раньше я писал на Python, потом перешел на Go — пишу на этом языке уже три года, а также являюсь наставником на курсе «Go-разработчик с нуля».
Я знаю, что новички в любой сфере задаются вопросами о том, с чего начать: какие инструменты самые актуальные, про что прочитать в первую очередь, о чём спросят на собеседовании на младшую позицию.
Эта статья поможет разобраться, какие навыки и инструменты необходимы начинающему разработчику на Go. Я поделюсь полезными ссылками на курсы, статьи и другие ресурсы, чтобы вы могли самостоятельно углубиться в разработку на этом языке.
Go — язык программирования, который стал очень популярным благодаря своей простоте, эффективности и скорости выполнения. Он подходит для разработки высоконагруженных систем, веб-приложений и микросервисов.
Помимо изучения основ языка начинающий специалист может сфокусироваться на базовых знаниях о веб-разработке, работе с базами данных и инструментах разработки:
Основы веб-разработки пригодятся, чтобы создавать веб-приложения на Go, работать с HTTP-запросами и REST API.
Знания баз данных помогут в работе с хранением и обработкой данных.
Инструменты разработки позволят эффективно управлять кодом, контейнеризировать приложения, оптимизировать процессы.
В этой статье мы рассмотрим не только эти пункты, но давайте пока не забегать вперед. Начнём с самых основ.
Основы программирования на Go
Первым шагом в вашем путешествии в мире разработки на Go будет изучение основ синтаксиса языка.
Начните с изучения официальной документации, там вы найдёте все необходимые материалы для быстрого погружения в среду разработки на Go. Документация довольно обширная, но программа-минимум — прочитать раздел «Начало работы с Go». Продвигаться дальше вы можете по мере обучения.
→ Начало работы с Go
Если вы пока не готовы углубляться в документацию, начните с интерактивного тура по языку или бесплатного курса Практикума.
→ Интерактивный тур по языку
→ Бесплатный курс «Основы Go»
После теории нужно применить полученные знания на практике. В этом вам помогут различные платформы для программистов, их яркие представители — это Leetcode и Codewars. Они предлагают задачи по программированию для развития навыков алгоритмического мышления и практики кодирования.
На этих платформах пользователи решают задачи различной сложности, участвуют в соревнованиях и обмениваются знаниями с другими участниками. Обе платформы предлагают обучающие ресурсы и сообщество для общения с другими программистами.
→ LeetCode
→ Codewars
Инструменты разработки
Свой код программисты пишут в специальных редакторах кода, которые также называются интегрированными средами разработки. Для написания программ на языке Go используют чаще всего GoLand или VS Code.
→ GoLand
→ Visual Studio Code
Ваша задача как программиста не только в том, чтобы написать код, — его ещё нужно правильно хранить и версионировать. С этим вам помогут системы контроля версий и платформы для управления.
Система контроля версий (VCS) — это инструмент, который позволяет отслеживать изменения в коде и управлять ими. С помощью VCS разработчики сохраняют различные версии файлов, откатываются к предыдущим версиям, управляют конфликтами изменений, работают с коллегами над одним проектом. Популярные системы контроля версий: Git, Subversion и Mercurial.
Платформы для управления проектами, такие как GitHub, GitLab и Bitbucket, предоставляют дополнительные инструменты для работы с кодом. Например, возможность создания задач, отслеживания ошибок, совместной работы и управления кодом на удалённых серверах.
Начинать изучение Git можно параллельно с изучением основ программирования на Go. Оба навыка будут взаимодополнять друг друга в процессе изучения.
→ Что такое Git и для чего он нужен программистам
→ Что такое GitHub и как он работает
Будет полезно узнать о контейнерах — разработчики пользуются ими практически всегда. Стандартом для создания, запуска и обслуживания контейнеров считается платформа Docker (она тоже написана на Go!).
→ Что разработчику нужно знать о контейнерах Docker
Веб-разработка
Go создавался, чтобы писать лёгкие микросервисы и запускать их в облаке, поэтому понимание основ веб-разработки — одно из самых важных умений начинающего программиста.
Изучите основы создания веб-приложений на Go, освоив официальное руководство. Также вы можете прочитать статью на Хабре, где подробно описаны основные компоненты веб-сервера на языке Go.
→ Официальное руководство по созданию веб-сервера
→ Разработка веб-серверов на GoLang — от простого к сложному
→ Дока — документация на понятном языке
Базы данных
Любая информация хранится в базе данных — это актуально для всех языков программирования. Но если проанализировать вакансии на различных площадках, очевидно, что в большинстве компаний требуются знания SQL.
SQL — декларативный язык программирования, применяемый для создания, модификации и управления данными в реляционной базе данных. Если по-простому, это язык общения с базой данных.
→ Что такое база данных
→ Как работают базы данных в IT: разбор на примерах
→ Oracle: что такое база данных
Основы Computer Science
Разберитесь, как устроены сети, как работать в консоли Linux, что такое виртуальная машина и как её запустить. Вы не только узнаете многие базовые вещи из мира компьютеров, но и поможете будущему себе успешно проходить собеседования.
→ Основы интернета
→ Туториал: что такое DNS
→ Основы Linux (обзор с практическим уклоном)
→ Знакомство с виртуальными машинами
Оптимизация и тестирование
Чтобы программа работала корректно и быстро, вы должны оптимизировать производительность кода и провести тестирование на работоспособность. Изучите методы оптимизации производительности кода на Go и освойте тестирование программного обеспечения на этом языке.
→ Профилирование и оптимизация программ на Go
→ Стратегия тестирования REST API: что именно вам нужно тестировать?
→ Основы тестирования Go: простые тесты, testify и визуализация покрытия
Продвинутые темы
После освоения основных навыков изучите возможности параллелизма и конкурентности, кодогенерации, дженериков. Если есть мотивация и желание, напишите тестовый проект, чтобы закрепить все темы. Например, вы можете написать сокращатель ссылок по типу Bitly.
→ Конкурентность в Go простым языком
→ Как писать кодогенераторы в Go
→ Дженерики в языке Go
Итак, эти ресурсы и рекомендации помогут вам освоить необходимые навыки и инструменты для старта в мире Go-разработки.