Подборка: навыки и инструменты начинающего Go-разработчика

Привет! Меня зовут Александр Тетеркин, я Go-разработчик в VK. Раньше я писал на Python, потом перешел на Go — пишу на этом языке уже три года, а также являюсь наставником на курсе «Go-разработчик с нуля».

Я знаю, что новички в любой сфере задаются вопросами о том, с чего начать: какие инструменты самые актуальные, про что прочитать в первую очередь, о чём спросят на собеседовании на младшую позицию.

Эта статья поможет разобраться, какие навыки и инструменты необходимы начинающему разработчику на Go. Я поделюсь полезными ссылками на курсы, статьи и другие ресурсы, чтобы вы могли самостоятельно углубиться в разработку на этом языке. 

Go — язык программирования, который стал очень популярным благодаря своей простоте, эффективности и скорости выполнения. Он подходит для разработки высоконагруженных систем, веб-приложений и микросервисов. 

Помимо изучения основ языка начинающий специалист может сфокусироваться на базовых знаниях о веб-разработке, работе с базами данных и инструментах разработки:

  • Основы веб-разработки пригодятся, чтобы создавать веб-приложения на Go, работать с HTTP-запросами и REST API.

  • Знания баз данных помогут в работе с хранением и обработкой данных.

  • Инструменты разработки позволят эффективно управлять кодом, контейнеризировать приложения, оптимизировать процессы.

В этой статье мы рассмотрим не только эти пункты, но давайте пока не забегать вперед. Начнём с самых основ.

688cc42467fa66b41b761eb7c4c0c30e.png

Основы программирования на 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-разработки. 

© Habrahabr.ru