Go-разработчик — новая профессия в GeekBrains

Go-разработчик — новая профессия в GeekBrains

Зачем учить Golang, в чём его специфика и что будет уметь выпускник курсов
8 минут1966

В GeekBrains появился курс для подготовки профессиональных разработчиков Go. Эти специалисты пишут в основном серверные приложения для компаний — и хорошо зарабатывают. В Европе джуниор-разработчики Go получают 40–45 тысяч евро в год (до вычета налогов). В России средняя зарплата гофера с опытом от 3 лет во многом зависит от региона: это может быть и 75 тысяч рублей, и более 150 тысяч в месяц. 

Что должен знать и уметь Go-разработчик на старте карьеры и как учёба в GB поможет подготовиться к трудоустройству? Об этом рассказывает автор учебной программы курса Елена Граховац — инженерный менеджер компании GetYourGuide. Лена уже 13 лет в веб-разработке, из них 10 занимается бэкендом и 5 лет имеет дело конкретно с языком Go. За это время она познакомилась с рынком Go-разработки не только в России, но и в Германии, где живёт и трудится с 2017 года.

Какого специалиста готовят на курсах

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

А ещё знание Go полезно для работы в области DevOps и SRE (Site Reliability Engineering), ведь многие инструменты для управления инфраструктурой написаны на Go или содержат Go-компоненты. Поэтому, если вы захотите стать профессиональным инженером инфраструктуры, то будете часто видеть Go в требованиях к кандидатам.

Какую должность искать после обучения

Если вы начинаете с нуля, то есть пришли совершенно из другой отрасли и не имеете опыта в программировании, после успешного окончания курсов сможете претендовать на позиции уровня Intern, Associate и Junior Go Developer. Также будет смысл откликаться на вакансии типа «Go-разработчик на внутренние проекты».

Если вы разработчик с опытом в бэкенде и осваиваете дополнительный язык или смежную специальность, учёба на курсах и новые проекты в портфолио помогут вам скорее подняться на уровень Middle Go Developer.

Go как первый язык: в чём специфика

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

Часто в качестве первого языка рекомендуют выбирать интерпретируемый ЯП с нестрогой типизацией, вроде JavaScript или Python. Но если вам интересны вакансии, где нужен Go, можно начать с него. При этом важно будет внимательно отнестись к вопросам, которые непонятны с первого раза. Здорово, когда рядом есть преподаватель, который помогает во всём разобраться.

Go — компилируемый язык со статической типизацией. И это не страшно. На практике это значит следующее.

Нужно заранее думать, с данными какого типа вы работаете. Если вы один раз объявили, что переменная хранит целое число, в неё позже не запишешь ни строку, ни массив, иначе программа перестанет компилироваться. Напротив, у языков с динамической типизацией переменные на ходу меняют свой тип под содержимое. И оба этих подхода обоснованы.

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

На курсах мы поведём учащихся к пониманию работы Go кратчайшим путём — через доступные объяснения и постоянную практику. Студенты набьют руку на учебных проектах и научатся обходить подводные камни. Например, узнают, когда стоит использовать модель «конкурентности», или параллельных вычислений. Это популярная фишка Go, и даже у опытных разработчиков после знакомства с ней возникает соблазн распараллелить всё, что только можно. Но далеко не всегда это полезно! Мы поможем новичкам разобраться в назначении механизмов языка и научим избегать слишком сложных решений. В Go вообще ценится простота. 

Проекты для портфолио

Одной из ключевых задач для студентов станет проектирование микросервисов на Go. Но отдельные «контрольные» проекты предусмотрены во всех модулях, даже самых базовых. Причём каждый раз мы предлагаем задачи, приближенные к реальности, — такие, с которыми Go-разработчики часто сталкиваются в продакшене. 

В каждом контрольном проекте студент должен будет соблюсти определённые требования по качеству. Например, сопроводить приложение документацией и покрыть код тестами. Это повысит ценность проектов для портфолио выпускника — ведь даже несложное приложение, соответствующее хорошим практикам, может стать аргументом для будущего работодателя. Опрятный и правильно документированный код любят все.

Работа над проектами поможет на практике разобраться в следующих темах:

  • использование универсального конфигуратора для приложений;
  • параллельная загрузка данных;
  • шаблонизатор для построения сервисов и решения задач автоматизации;
  • REST API сервис, соответствующий лучшим практикам;
  • сервисы, поддерживающие gRPC или GraphQL;
  • профилирование, трейсинг, снятие метрик и оптимизация приложений;
  • конфигурирование Go-приложений для работы с CI/CD;
  • работа с production-like кластером Kubernetes;
  • создание собственного чек-листа готовности к продакшену;
  • лучшие практики командной разработки: совместная разработка дизайна сервиса, проведение дизайн- и код-ревью, выполнение релизов, дежурства on-call;
  • работа над качеством проектов: документирование и тестирование;
  • работа над собственным портфолио: как сделать примеры проектов привлекательными для потенциального работодателя.

Зачем все эти учебные модули

Учебный план по Go у нас очень насыщенный — на 400 часов и 90 практических занятий. Давайте разберёмся, чем поможет выпускнику каждый освоенный предмет.

HTML/CSS — этот модуль будет крайне полезен тем, кто делает первые шаги в мире IT. Веб-вёрстка — это не совсем о программировании, но она поможет разобраться с базовыми концепциями веб-разработки. Например, понять, как устроены страницы, которые мы просматриваем в браузере.

Базовый курс JavaScript — логическое продолжение уроков по HTML и CSS. Здесь студенты знакомятся с языком, который помогает сделать веб-страницы динамическими. Для тех, кто никогда не изучал разработку, этот курс станет введением в программирование.

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

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

Go. Уровень 1 — модуль знакомит с базовыми концепциями языка и миром программирования вообще. Вы узнаете, что такое переменные, константы, типы данных, функции, интерфейсы.

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

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

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

Бэкенд-разработка. Уровень 1 — здесь мы начинаем знакомиться с практиками и библиотеками, которые пригодятся в бэкенд-разработке. Проектируем и реализуем веб-сервер для отдачи JSON API, работаем с базами данных, заворачиваем приложение в Docker, начинаем изучать вопросы профилирования и оптимизации, а также осваиваем принципы сборки и развёртывания приложений.

Бэкенд-разработка. Уровень 2 — знакомимся с другими видами API: JSON RPC, gRPC, GraphQL. Конфигурируем приложение по Kubernetes. Начинаем работать с очередями. Пробуем функциональное тестирование. Знакомимся с основами безопасности Go-приложений.

Командная разработка — финальный модуль, который знакомит с принципами работы в реальном проекте. К началу занятий вы уже научитесь писать бэкенд на Go, так что сможете попробовать, как это бывает в реальной жизни. Студенты разделятся на команды и пройдут путь разработки собственных сервисов: от концепта и RFC до работы в продакшене и дежурств on-call. А ещё на этапе командной разработки получат три консультации — по одной на каждый из ключевых этапов реализации проекта.

Согласно последнему опросу Stack Overflow, Go делит с Rust третье место в списке самых высокооплачиваемых языков программирования

Карьера: пути развития

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

Вертикальный путь развития карьеры у Go-разработчика такой же, как и у других программистов: набирать опыт и расти до Senior Engineer’а, потом до Principal Engineer’а компании. Альтернативный вариант — после уровня Senior уйти в менеджмент и стать, например, тимлидом. 

Также специалист со знанием Go может развиваться по горизонтали. Если его что-то не устроит в бэкенд-разработке, он достаточно легко сможет сменить направление и стать инженером инфраструктуры (DevOps, SRE). Тем более на наших курсах студенты научатся запускать приложения в Kubernetes, конфигурировать их, мониторить и отлаживать. Для инженеров инфраструктуры это обязательные навыки. DevOps-культура, направленная на ускорение доставки ценности клиентам, толкает нас к тому, что ответственность за конфигурацию приложений сдвигается в сторону разработчика. И в мире Go это проявляется особенно ярко, поэтому мы считаем важным дать практику по этим темам.

Правда, инженеры должны уметь не только запускать приложения, но ещё и поддерживать инфраструктуру вообще — для этого нужно знать нетворкинг и низкоуровневые вещи. А это уже отдельное направление, которое лучше осваивать на курсах, целиком посвящённых DevOps. Но, как бы то ни было, знание Go станет важным слагаемым успеха на этом пути.

Сентябрь — отличное время, чтобы построить далеко идущие планы и начать идти к новым целям! Если вы хотите освоить профессию мечты, то с 1 по 11 сентября 2020 г. мы дарим вам скидку 40% почти на все программы обучения GeekBrains. Успехов! :)

 

программированиеgodeveloper
Нашли ошибку в тексте? Напишите нам.
Спасибо,
что читаете наш блог!
Posts popup