Golang-разработчик.
Basic

Backend

Онлайн-практикум от команды Fevlake.

  • Стоимость: 30 000 рублей
  • Страница курса: https://rebrainme.com/golang-basic/
  • Автор: команда Fevlake (8 лет обслуживает IT-инфраструктуру)

Golang — это

  • 12 место по популярности в мире среди языков программирования (по данным рейтинга TIOBE)
  • 200 000 руб. — средняя зарплата Golang-разработчика
  • 1800 вакансий на территории РФ (данные взяты с сайта hh.ru)

Ваш путь в программе Golang by Rebrain

  1. Стажировка
    • Вы попадаете на виртуальную стажировку по направлению – разработка на Go.
  2. Практикуйтесь, когда удобно
    • Проходите практикум в удобное для вас время. Срок практикума неограничен.
  3. 35 заданий
    • Поэтапно проходите более 35 заданий. К каждому заданию прилагаются необходимые материалы для его выполнения.
  4. Мастер–классы
    • Закрытые мастер-классы наших экспертов.
  5. Проверка за 24 часа
    • SLA 24 часа на каждое сданное задание.
  6. Отвечаем быстро
    • Есть вопрос по заданию? Спрашиваете у авторов практикума и экспертов в закрытом чате Telegram.
  7. Выпускной проект
    • Полный кейс реального проекта.

Практикум Golang by REBRAIN

  • 90% практики, 35 рабочих задач
  • Все задания идут в ваше портфолио
  • Личная проверка заданий экспертами. Высылаем подробные объяснения к каждому заданию
  • Выполняете реальные кейсы разработчика на Go
  • Быстрая проверка заданий. Максимальное время проверки — 24 часа
  • Эффективность. Вы своими руками сделаете задания, актуальные для разработчика на Go
  • Чат с составителями практикума и действующими разработчиками
  • Смотрите видеоматериалы в удобное для вас время
  • Живые мастер-классы от действующих разработчиков

Кому подойдет практикум

  • Разработчики
  • Специалисты по тестированию
  • Системные архитекторы и аналитики
  • DevOps-инженеры

Программа практикума

Подготовка окружения. Основы языка

  • Переменные, типы данных
  • Указатели в Go
  • Слайсы
  • Map’ы в Go
  • Конструкции языка и функции
  • defer — обработка выхода из функции
  • Panic и их обработка
  • Обработка ошибок
  • Продвинутая работа с ошибками

Модули и пакеты

  • Области видимости, инициализация через init()
  • Работа с зависимостями, go mod
  • Создание модулей и их версионирование
  • layout проекта (структура проекта)

Структуры и интерфейсы

  • Структуры в Go
  • Методы структур
  • Интерфейсы и утиная типизация
  • Пустой интерфейс
  • Композитное наследование

Асинхронность

  • Goroutines
  • Go sheduler
  • Race condition
  • Пакеты sync и atomic
  • Пакет errgroup
  • sync.Pool
  • Каналы ч.1. Deadlocks
  • Каналы ч.2. Context

Тестирование, бенчмарки и профилирование

  • Unit-тестирование в Go
  • Моки, стабы и генерация через GoMock
  • Table driven test vs closure driven tests
  • Test coverage
  • Benchmarks
  • Профилирование с pprof

Кодогенерация

  • Рефлексия
  • AST
  • Templates
  • Решение проблем рефлексии
  • Враппинг

Примеры заданий

Описание:

Вначале мы расскажем вам о том, для чего был создан язык Go, каковы сферы его применения, а также научимся устанавливать Go, чтобы вы смогли создать свою первую программу на новом языке. Введение и подготовка окружения

В то время, когда ООП (объектно-ориентированное программирование) как способ организации кода прочно закрепилось в практике программирования еще с конца 70-х годов прошлого века, современное программирование от этого не стало проще. Огромная скорость развития автоматизации всевозможных отраслей экономики предъявляет серьезные требования всему ИТ-сообществу. Основные вызовы, которые брошены программированию как отрасли, это:

  • увеличение скорости процесса разработки прикладных решений;
  • уменьшение времени вывода готовых решений в боевую среду;
  • оптимизация быстродействия для работы под большими нагрузками и утилизации «железных» ресурсов.

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

Поиски решения для первых двух задач дали понять, что те огромные монолитные проекты, которые появились благодаря удобству и структуризации ООП, не могут соответствовать современным требованиям. Все потому, что каждая новая доработка или каждое исправление ошибки порождает новый каскад связанных задач. Это случается из-за того, что очень часто сроки, в которые надо было реализовать функционал, не позволяли как следует продумать решение и написать код, следуя хорошим практикам. Или перед крупным релизом пропустили на code-review задачу, где закрыли глаза на небольшое дублирование кода, а сами в своем релизном функционале не успели написать тесты. Согласитесь, что это не самые редкие случаи в жизни программиста. Таким образом, со временем может оказаться, что разросшаяся за годы функциональность превратила наш проект в огромного и неповоротливого монстра, который отнимает все больше ресурсов на поддержку.

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

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

Итогом работы над решением задач по созданию такого инструмента стал язык Go, который появился в компании Google в 2009 году.

Сферы применения языка Go обусловлены идеей его происхождения: быстрый, простой инструмент для параллельного программирования. Именно поэтому он наиболее применим при создании сетевых приложений, консольных утилит, систем мониторинга и, конечно, в web-программировании для разработки back-end. По причине того, что web-разработка находится на стыке системного, сетевого и прикладного программирования, Go здесь очень хорошо прижился.

На сегодняшний день есть примеры успешной реализации больших и сложных систем, написанных на Go:

  • Kubernetes — система для развертывания, масштабирования и управления контейнерами;
  • Prometheus — современная система мониторинга.

Кроме этого, являясь языком общего назначения, он становится популярной заменой языкам с динамической типизацией (например, PHP).

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

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

Установка

Рассмотрим способы установки Go на разных системах. Далее будут приведены команды, которые необходимо выполнить в терминале ОС.

Ubuntu

Для 18.04 LTS потребуется добавить PPA репозиторий, после чего мы сможем установить Go версии 1.14. Если устанавливать из стандартного репозитория, то максимальная доступная версия будет 1.10.

sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt update
sudo apt install golang-go

Для Ubuntu 20.04 LTS версия 1.14 доступна из стандартного репозитория, поэтому можно сразу выполнить установку.

sudo apt install golang-1.14-go

Mac OS X

Самым удобным способом установки будет менеджер пакетов brew.

$ brew update
$ brew install go

Windows

Необходимо перейти по ссылке golang.org и скачать MSI-дистрибутив для установки. После этого запустить и следовать инструкциям. По умолчанию Go будет установлен в C:\Go.

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

echo "export GOPATH=~/go" >> ~/.profile

Вместо файла .profile могут быть .bash_profile, .zshrc или любой другой файл настройки терминала.

Чтобы переменная GOPATH стала доступна, нужно перечитать файл настроек терминала. Например, так:

source ~/.zshrc

Далее рекомендуется создать директории рабочего пространства.

mkdir -p $GOPATH $GOPATH/src $GOPATH/pkg $GOPATH/bin
  • /src — в этой директории будет находиться исходный код проектов;
  • /pkg — здесь будут располагаться скомпилированные внешние зависимости;
  • /bin — в этой директории будут лежать скомпилированные бинарные файлы.

Также очень полезно будет добавить $GOPATH/bin в переменную PATH, так как в процессе работы может потребоваться воспользоваться какими-то go-программами. Поэтому лучше сразу настроить среду, чтобы в процессе работы нас ничего не отвлекало. Добавим в файл настройки терминала команду и перечитаем его.

echo "export PATH=$PATH:$GOPATH/bin" >> ~/.profile

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

До версии Go 1.10 эта переменная требовалась при сборке. В более новых версиях необходимость в настройке этой переменной отпала, так как это значение устанавливается при установке Go. Однако знание о назначении переменной GOROOT может понадобиться при настройке IDE на работу с Go.

Далее в практикуме будет описана работа с модулями и необходимость в строгом следовании правилам работы с GOPATH станет необязательна. Но эти знания необходимы, чтобы иметь базовое понимание о работе с Go.

Проверка установки и первая программа

Теперь проверим нашу установку. Выполним в терминале команду.

go version

В выводе команды мы должны увидеть версию Go.

go version go1.14.2 linux/amd64

Для компиляции и запуска программ есть две команды:

  • go run — скомпилирует программу во временном хранилище и запустит;
  • go build — скомплирует бинарный файл.

Создадим файл $GOPATH/src/hello.go со следующим содержимым:

package main

import "fmt"

func main() {
    fmt.Println("Hello from Barin!")
}

Откроем в терминале $GOPATH/src и выполним команду:

go run hello.go

После этого в консоли вы сможете увидеть результат работы вашей первой программы на Go.

IDE для разработки

Стоит упомянуть об инструментах для разработки на Go. На рынке программного обеспечения представлено много разных инструментов: удобных и не очень, платных и бесплатных. Но в процессе выбора инструмента следует уделить внимание тем удобствам и возможностям, которые предоставляет IDE. На сегодня большую популярность имеют два инструмента:

  • Visual Studio Code — бесплатный редактор от компании Microsoft, который очень удобно и быстро расширяет свои возможности с помощью большого числа плагинов, размещенных в стандартном маркетплейсе;
  • GoLand — коммерческая IDE от компании JetBrains, которая предназначена исключительно для разработки на Go и в стандартной поставке имеет все необходимые инструменты для работы.

Полезные ссылки:

Задание:

  1. Установите Go и настройте рабочее пространство.
  2. Ознакомьтесь со стилем написания кода на Go (code style) и утилитой для форматирования gofmt.
  3. Создайте файл main.go и напишите код, который выводит приветствие и текущие дату и время в виде строки ДД.ММ.ГГГГ ЧЧ:ММ.
    • Для вывода строки нужно воспользоваться стандартным пакетом fmt.
    • Для получения даты и форматирования потребуется функция из стандартного пакета time.
  4. Подробно концепция пакетов и работа с ними будут рассмотрены позже. На данном этапе следует ознакомиться с функциональностью указанных пакетов.
  5. Скомпилируйте ваш код и запустите полученный бинарный файл. В качестве ответа пришлите исходный код программы.

Технологический стек после практикума

  • Golang pprof
  • Go modules
  • Go benchmarks
  • Unit testing
  • Git
  • Concurrency and parallelism
  • Gomock

С какими задачами поступают к нам на практикум?

  • Освоить разработку на языке Golang
  • Понять концепцию микросервисного взаимодействия в контексте современных практик
  • Научиться настраивать взаимодействие сервиса с окружением
  • Научиться собирать метрики сервиса
  • Для DevOps-инженера — расширить кругозор в части современных подходов к разработке

Клуб выпускников

После прохождения практикума и защиты финального проекта вы попадаете в Клуб выпускников REBRAIN

Что включает в себя наш клуб?

  • Телеграм-чат для вопросов
  • Доступ к интересным вакансиям, которых часто нет на HH и в Телеграм-каналах
  • Приглашения на профессиональные мероприятия со скидками либо бесплатно
  • Сообщество ИТ-специалистов, в котором просто приятно пообщаться и поделиться новостями
  • Бесплатное участие в ежегодной конференции от REBRAIN

Авторы программы

Дмитрий Гордеев

TeamLead команды Go-разработки в МТС Банке

Опыт разработки – 4 года

Николай Наумченко

Старший Golang-разработчик в МТС Банке

Опыт разработки — 4 года

Евгений Коняхин

Golang-разработчик в МТС Банке

Опыт разработки — 3 года

Глеб Наземнов

Middle-разработчик в компании Andersen Lab

Опыт разработки — 3 года

Разработчик Golang как профессия

  • 1800 актуальных вакансий
  • Средняя зарплата — 200 000 рублей
  • 230 вакансий удаленной работы

Все задания, выполненные на практикуме, идут в ваше портфолио.

Постподдержка и трудоустройство

  • Предоставим карту компетенций
  • Поможем составить актуальное резюме
  • Поможем подобрать интересный проект

Часто задаваемые вопросы

Подойдет ли мне ваш формат практикума?

В 2018 году мы провели 3 потока по системе 2-3 лекции в неделю + домашка. Со всех 3-х потоков мы собирали обратную связь, чтобы сделать практикум более эффективным и удобным для пользователей. И в каждом потоке мы видели, что ребятам недостаточно практики. Как дело доходит до ДЗ, сразу же возникает куча вопросов и непонятно, как выполнить задание. Тогда мы и пришли к тому, что двигаемся от практики, но подкрепляем это лекционным форматом. Поэтому ответ — Да, мы считаем наш формат практикума самым эффективным и подходящим для всех. Если вдруг формат вам не подойдет, в первые две недели вы можете полностью вернуть средства без объяснения причин.

Сколько идет практикум?

При загрузке 4-6 часов в неделю вы пройдете все задания за 2-3 месяца. Вы занимаетесь онлайн в удобное для вас время, без привязки к конкретной дате и получаете обратную связь кураторов по вашим заданиям в течение 24 часов. Смотреть теоретические видеоматериалы можно по очереди или все сразу.

Вы предоставляете договор на прохождение практикума?

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

Как воспользоваться рассрочкой?

Мы предоставляем 2 рассрочки от банков-партнеров — Тинькофф и Альфа, у них идентичные условия: 0 рублей первоначальный взнос, ежемесячный платеж на 10 месяцев 3000 рублей (после окончания скидки – 3500 рублей), комиссий, штрафов и скрытых платежей нет. Все расходы на обслуживание мы берем на себя. Полностью внести остаток и закрыть рассрочку можно в любой момент, также без штрафов. Чтобы оформить рассрочку нажмите на кнопку «Рассрочка» в блоке «Стоимость».

Можно ли оформить практикум через работодателя?

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

А если формат мне не подойдет?

Мы понимаем, что мы все разные, и кому-то может не подойти наш формат, поэтому мы даем возможность в первые 14 дней практикума сделать возврат средств без объяснения причин. Причем вернуть можно и при единовременной оплате и при оформлении рассрочки от банка.

Вы предоставляете инфраструктуру для выполнения заданий?

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

Оцените автора
в IT иди!
Добавить комментарий