С чего начать путь Go-разработчику

Go — относительно молодой, но уже востребованный на рынке язык программирования. В марте 2023 года этот язык вошёл в топ-10 самых популярных языков программирования по версии TIOBE. Go хорошо подходит для создания микросервисов, тестирования и развёртки приложений, а также для работы с многопоточностью. 

 

В этой статье мы разберем, кто такой Go-разработчик, плюсы и минусы профессии. Поделимся, какие soft и hard-скиллы нужны. А также расскажем, как подготовиться к собеседованию и поделимся историей нашего разработчика, как он пришел в профессию.

Другие статьи серии: «Android-разработчик»«Системный аналитик», «iOS-разработчик».

 

чем занимается go-РАЗРАБОТЧИК

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

По сути обязанности Go-разработчика такие же, как и у других разработчиков. Разница только в использовании языка. 

 

КАКИЕ HARD И SOFT-СКИЛЛЫ НУЖНЫ go-РАЗРАБОТЧИКУ 

Hard Skills

 

Основы. Для каждого разработчика вне зависимости от стека есть база, которую необходимо изучить:

  •  Алгоритмы и структуры данных (объекты, массивы/хэш-мапы, связанные списки, стеки, очереди, деревья, графы);
  • ООП, основы функционального программирования, принципы проектирования SOLID, принципы программирования KISS, DRY и другие, паттерны проектирования;
  • Базы данных SQL и NoSQL;
  • Протоколы обмена данными между приложениями (HTTP, REST);
  • Системы контроля версий Git;

Также нужно иметь представление про:

  • Архитектуры ЭВМ и UNIX-системы;

  • Методологии разработки ПО (Agile, Scrum, Kanban, XP, RAD и другие);

  • Архитектурные подходы в разработке ПО: MVC, Clean Architecture;

  • Паттерны микросервисного проектирования, принципы пакетно-ориентированного программирования;

Библиотеки:

  • Обязательно знание всех стандартных библиотек Go;

IDE и инфраструктура. Мы предпочитаем использовать IDE GoLand для разработки на Go. Как полноценные IDE также используют текстовые редакторы кода, например, Visual Studio Code и Vim/Neovim. Есть возможность подключить отладчик кода Delve в Sublime Text.

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

​​​​​​​​В будущем, когда вы наберетесь опыта, вам пригодятся знания этих инструментов:

  • ​​​​​​Брокеры сообщений, например, Kafka, RabbitMQ, NATS;
  • Высокопроизводительное объектное хранилище, например, MinIO;
  • Способы реализации удалённых вызовов процедур: JSON-RPC и gRPC;
  • Docker и Kubernetes;
  • Unit Tests, интеграционные тесты, функциональные тесты;
  • ELK Stack (Elasticsearch, Logstash и Kibana) — позволяет надежно и безопасно получать данные из любого источника во всех форматах и работать с этими данными.

Soft Skills

Для разработчиков важно не только хорошо разбираться в технологическом стеке, но и делать свою работу комфортной для себя и окружающих. Уделите внимание софт скилам, которые мы описали ниже:

Командная работа. Разработчик ежедневно взаимодействует с большим количеством людей — с командой проекта, со смежными отделами разработки, тестировщиками и аналитиками. Чтобы работа была продуктивной и комфортной, важно взаимодействовать с коллегами, делиться идеями, мыслями и помогать друг другу. Также при общении с клиентом иногда приходится аргументировать свои решения и слушать критику, спокойно на неё реагируя.

Тайм-менеджмент. Любому специалисту нужно знать, как правильно управлять своим временем и расставлять приоритеты в решении задач. Для того чтобы не выгорать, а держать в балансе работу и личную жизнь, следует использовать приёмы эффективного распределения времени.

Способность к обучению и развитию. Каждый год сфера IT развивается и становится более усовершенствованной, появляются новые технологии. Разработчику нужно идти в ногу со временем и уметь применять новое в своей работе, а также подстраиваться под изменения. 

Стрессоустойчивость. В работе программиста бывает много стресса — падает прод, код сначала работал, потом перестал и ты не понимаешь почему. И много всего, что может «подкосить» твой настрой на работу. Важно уметь справляться со стрессом и с холодной головой подходить к исправлению ошибок. 

Про остальные навыки вы можете прочитать в нашей статье «Какие Soft Skills нужны разработчику».

 

ПЛЮСЫ И МИНУСЫ ПРОФЕССИИ 

Плюсы

  • Востребованность. На сайте hh.ru на март 2023 года опубликовано больше 1000 вакансий разработчика на Go для начинающих и опытных.

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

  • Большое количество обучающих материалов. Go сопровождается подробной технической документацией. А также в интернете есть много полезной информации — от статей до обучающих курсов.

Минусы

  • Специфика языка. Если раньше вы писали на скриптовых языках, например, на PHP, в Go многое покажется непривычным. Также могут возникнуть трудности у программистов, которые не привыкли к языкам со статической типизацией.

  • Несмотря на то, что на Go создавать проекты легче, за счет упрощенного синтаксиса, необходимо дополнительно изучить много сопутствующих технологий, чтобы «создавать легче» было безболезненным.

  • Английский язык. Большинство материалов для изучения на английском языке. 

КАК ПОДГОТОВИТЬСЯ К СОБЕСЕДОВАНИЮ

Чтобы вас пригласили на собеседование, от вас потребуются:

  • Хорошие теоретические знания — понимание основ и специфичных для Go-разработки концепций.
  • Успешное выполнение тестового задания. По его результатам работодатель поймет, насколько вам близки технологии и методы, используемые в компании. 
  • Портфолио — обычно это GitHub-аккаунт. Пригодится вам для составления резюме и потенциальному работодателю для оценки ваших навыков. Подробнее о том, как составить портфолио, мы писали в статье «Как составить портфолио начинающему программисту».
  • Правильно написанное резюме. Исходя из того, что вы напишете о себе, будет зависеть итог собеседования. Как правильно составить резюме, вы можете прочитать в статье «Как составить резюме в IT: советы HR».

Помните, что нельзя подготовиться к собеседованию за один день — необходимо не только постоянно расширять кругозор, но и углублять свои знания, возвращаться к уже изученному и практиковаться

Теория

Чтобы закрепить в голове полученные знания, можно воспользоваться дорожной картой начинающего разработчика на Go — например, Go-Developer.

Также можно посмотреть видео на YouTube, где рассказывают об особенностях собеседований в IT, чтобы примерно знать, к чему готовиться.

 

Практика

Во время собеседования вас могут попросить решить несколько задач. Потенциальный работодатель будет обращать внимание на то, как вы действуете при решении проблемы, насколько быстро доходите до ответа, как рассуждаете и ориентируетесь в коде. 

Советуем вам найти в интернете решение типовых задач на Go и посмотреть, как находится то или иное решение.

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

КАК ПРИШЕЛ В СФЕРУ НАШ go-РАЗРАБОТЧИК

Интересоваться программированием я начал со школы. Моя учительница брала меня на IT-мероприятия. Самостоятельно я начинал изучать Java по курсам из интернета. После школы поступил в УлГТУ на факультет информационных систем и технологий по специальности «Вычислительная техника». В ВУЗе познакомился с основами программирования, алгоритмами и структурами данных. Там же я познакомился с языком C. Но писать на нем большие проекты было довольно сложно, так как приходилось много времени уделять работе с памятью и не допускать её утечек. 

После выпуска из университета мне посоветовали изучать язык Go. Из-за того что язык достаточно молодой, специалистов в нём не так много, а востребованность на рынке большая. Язык мне понравился, так как имел много общего с языком С, но при этом имел автоматическую сборку мусора, что было плюсом в разработке. Я был нацелен на веб-разработку, а Go предоставлял большой инструментарий в данном направлении. 

Через полтора года самостоятельного изучения у меня было большое портфолио проектов. Я пошёл на курсы Академии разработки MediaSoft. По итогам курса меня заметили и пригласили на собеседование. Так я и попал в разработку.

 

В ИТОГЕ

В начале пути не обязательно знать все то, что мы описали в этой статье. Главное — иметь высокую мотивацию к работе. Учитесь и развивайтесь, находите новые источники знаний, вы уже на верном пути :) 

Обратите внимание на обучающие материалы ниже, они помогут получить необходимые знания. Также рекомендуем вам пройти наш курс по разработке на Go — регистрируйтесь на сайте!

дополнительные ресурсы ДЛЯ ПОГРУЖЕНИЯ

 

​​