Практикум для разработчиков на Golang

Go-разработчик с нуля

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

*8 лет обслуживаем IT-инфраструктуры

Начать путь разработчика на Go
90% практики

Онлайн-практикум для освоения Golang (Go)

35 заданий

Выполни все задания и стань разработчиком на Go в российских или международных проектах

Онлайн-практикум —
практикуйтесь, когда вам удобно
Golang
12 место
по популярности в мире среди
языков программирования
*по данным рейтинга TIOBE
200 000 р.
Средняя зарплата
Golang-разработчика
1800
вакансий на территории РФ
*данные взяты с сайта hh.ru
Ваш путь в программе Golang by Rebrain
Презентация практикума 10 минут
Записаться на практикум Получить консультацию
Стажировка
Вы попадаете на виртуальную стажировку по направлению – разработка на Go.
Практикуйтесь, когда удобно
Проходите практикум в удобное для вас время. Срок практикума неограничен.
35 заданий
Поэтапно проходите более 35 заданий. К каждому заданию прилагаются необходимые материалы для его выполнения.
Мастер–классы
Закрытые мастер-классы наших экспертов.
Проверка за 24 часа
SLA 24 часа на каждое сданное задание.
Отвечаем быстро
Есть вопрос по заданию? Спрашиваете у авторов практикума и экспертов в закрытом чате Telegram.
Выпускной проект
Полный кейс реального проекта.
Показать полностью
Практикум 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 и в стандартной поставке имеет все необходимые инструменты для работы.
Помимо озвученных инструментов есть немалое количество других редакторов, которые предлагают в той или иной степени сравнимые возможности, поэтому вы свободно можете выбирать любой.
Полезные ссылки
golang code style

Go in Visual Studio Code

GoLand documentation
Задание
1. Установите Go и настройте рабочее пространство.

2. Ознакомьтесь со стилем написания кода на Go (code style) и утилитой для форматирования gofmt.

3. Создайте файл main.go и напишите код, который выводит приветствие и текущие дату и время в виде строки ДД.ММ.ГГГГ ЧЧ:ММ.
  • Для вывода строки нужно воспользоваться стандартным пакетом fmt.
  • Для получения даты и форматирования потребуется функция из стандартного пакета time.

4. Подробно концепция пакетов и работа с ними будут рассмотрены позже. На данном этапе следует ознакомиться с функциональностью указанных пакетов.

5. Скомпилируйте ваш код и запустите полученный бинарный файл. В качестве ответа пришлите исходный код программы.
Описание
В предыдущем задании мы рассмотрели базовое понятие структур в Go. Теперь поговорим о методах: в отличие от обычных функций метод имеет в своей сигнатуре получателя:

func (имя_получателя тип_получателя) имя_метода (параметры)

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

Теперь мы можем вызывать от имени экземляра нашей структуры соотвествующий метод (ниже будет пример).

Давайте возьмем наш пример (структура Customer) и предпложим, что теперь нам нужно каким-то образом списывать сумму задолженности с баланса пользователя. Давайте сформируем требования:

  • необходимо обеспечить атомарность операции, то есть, если сумма списалась с поля Debt, должна списаться и с поля Balance;
  • необходимо проверить, присуствует ли на балансе сумма, необходимая для списания долга.

Оптимальным вариантом будет реализовать какую-то функцию с соответствующей логикой, но при этом эта функция - это чистой воды реализация внутренней логики структуры Customer. Добавим соответствующий метод.необходимо проверить, присутствует ли на балансе сумма, необходимая для списания долга.
internal/customer.go
package internal

import (
    "errors"
)

type Customer struct {
    Name         string
    Age          int
    balance      int
    debt         int
    Discount     bool
    CalcDiscount func() (int, error)
}

func (c Customer) WrOffDebt() (Customer, error) {
    if c.debt >= c.balance {
        return c, errors.New("Not possible write off")
    }

    c.balance -= c.debt
    c.debt = 0

    return c, nil
}

func NewCustomer(name string, age int, balance int, debt int, discount bool) Customer {
    return Customer{
        Name:     name,
        Age:      age,
        balance:  balance,
        debt:     debt,
        Discount: discount,
    }
}

Давайте попробуем вызвать WrOffDebt:
cmd/myapp/main.go
package main

import (
    "fmt"
    "myapp/internal"
)

func main() {
    cust := internal.NewCustomer("Dmitry", 23, 10000, 1000, true)

    cust, _ = cust.WrOffDebt()

    fmt.Printf("%+v\n", cust)
}
go run main.go

Output:
{Name:Dmitry Age:23 balance:9000 debt:0 Discount:true CalcDiscount:<nil>}
Как мы видим, в результате выполнения метода мы получили новый объект Customer с измененным полем balance. Также вы можете заметить, что поля balance и debt у нас теперь видны только внутри пакета (напомним, что любые объекты, начинающиеся с маленькой буквы, видны только внутри пакета), тем самым мы запрещаем работать с ними напрямую извне, единственный способ повлиять на них - метод WrOffDebt.

В нашем примере мы выполняем метод, который возвращает копию нашей структуры, из-за чего нам необходимо переприсвоить возвращаемое значение. Но давайте посмотрим, как еще мы можем работать с методами, которые занимаются мутацией основного объекта. Объявим наш метод чуть-чуть по-другому: internal/customer.go
package internal

import (
    "errors"
)

Ваш путь в программе Golang by Rebrain
    Name         string
    Age          int
    balance      int
    debt         int
    Discount     bool
    CalcDiscount func() (int, error)
}

func (c *Customer) WrOffDebt() error {
    if c.debt >= c.balance {
        return errors.New("Not possible write off")
    }

    c.balance -= c.debt
    c.debt = 0

    return nil
}

func NewCustomer(name string, age int, balance int, debt int, discount bool) *Customer {
    return &Customer{
        Name:     name,
        Age:      age,
        balance:  balance,
        debt:     debt,
        Discount: discount,
        }
}

cmd/myapp/main.go
package main

import (
    "fmt"
    "myapp/internal"
)

func main() {
    cust := internal.NewCustomer("Dmitry", 23, 10000, 1000, true)

    cust.WrOffDebt()

    fmt.Printf("%+v\n", cust)
}
go run main.go

Output:
&{Name:Dmitry Age:23 balance:9000 debt:0 Discount:true CalcDiscount:<nil>}
Как мы видим, мы присвоили метод указателю на структуру, тем самым все действия внутри метода влияют на основную структуру, что избавляет нас от лишних присваиваний.

Обратите внимание:

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

package main

import (
    "fmt"
)

type A struct {}

func (a A) SeyHello() {
    fmt.Println("Hello, world")
}

func main() {
    instance1 := &A{}
    instance1.SeyHello()

    instance2 := A{}
    instance2.SeyHello()
}
go run main.go

Output:
Hello, world
Hello, world
Обратное утверждение не совсем верно и будет рассмотрено в задании GO-04 03: Структуры и интерфейсы. Интерфейсы и утиная типизация
Полезные ссылки
Method sets
Задание
1. Создайте в своем проекте module04 из ветки module04_01 - ветку module04_02.

2. Предположим, что теперь нам необходимо не позволить внешнему коду предоставлять нам реализацию свойства CalcDiscount, а жестко задать реализацию в привязке к структуре Customer, для этого сделайте CalcDiscount методом, а не свойством структуры Customer:

  • Логику оставить, как была в функции CalcDiscount.
  • Константу DEFAULT_DISCOUNT перенести в пакет internal.
  • Свойство Discount сделать нередактируемым вне пакета internal.

3. В ответе пришлите ссылку на МР ветки module04_02 с нужными правками в ветку master своего проекта.
Технологический стек после практикума
Golang pprof
Go modules
Go benchmarks
Unit testing
Git
Concurrency and parallelism
Gomock
С какими задачами поступают к нам на практикум?
Освоить разработку на языке Golang
Понять концепцию микросервисного взаимодействия в контексте современных практик
Научиться настраивать взаимодействие сервиса с окружением
Научиться собирать метрики сервиса
Для DevOps-инженера - расширить кругозор в части современных подходов к разработке
Отзывы
@youmedv
Юрий Медведев
28 лет

До практикума: Digital Marketing

После практикума: Junior DevOps

До практикума я работал в сфере Digital Marketing - удаленно занимался рекламой, маркетингом. Ранее работал инженером связи, от механика и до ведущего инженера, поэтому IT мне близко, и я всегда хотел развиваться в этом направлении и вернуться в профессию. Потому заинтересовался открытым практикумом по DevOps, который предложила мне таргетная реклама. После него желание изучать DevOps усилилось - привлекли перспективы и сложная, но интересная работа. Так я решил пойти дальше на практикум. И уже в середине него устроился в аутсорсинговую компанию по администрированию инфраструктуры и дорос до Junior DevOps.

Сам практикум - бомба! Намного круче классического формата с лекциями. Когда есть лекции, ты привязан к группе, ко времени. Здесь же отстать невозможно: включайся, когда удобно, и получай на любом этапе быструю обратную связь по всем заданиям. Выходит, как формат индивидуального обучения, но только еще и с возможностью постоянно находиться в сообществе - общаться, развивать кругозор.

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

Сам формат практикума с упором именно на выполнение заданий - именно то, что нужно, чтобы сформировать достаточный кругозор и базис для развития. Так что, если тема DevOps или развития Operations вам близка - практикум это именно то, что нужно!

Читать отзыв
@berem
Александр
33 года

Ведущий инженер-программист

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

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

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

Практикум очень сильно нравится. Меня очень сильно заинтересовал формат. До этого был на курсах, где только лекции. А здесь именно практические занятия. Теория без практики - это ничто.

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

Сейчас иногда удивляюсь людям, которые не нравится такой формат. Я наоборот рад, что нужно много копаться самому. Ищешь информацию и сам развиваешься в процессе поиска. Мне кажется, иначе ничего не запоминается и когда столкнешься с задачей в работе, начнешь все искать с “чистого листа”.

Замечательно, что в практикуме нет ограничения по времени и ограниченных сроков. Хотя кому-то это может быть сложно - ведь тут контролируешь себя сам.

Конечно, встречаются задачи, которые прямо не хочется делать. Ходишь вокруг нее день-два, а потом соберешься и делаешь за час. Если бывают какие-то недопонимания по заданиям, то кураторы всегда подскажут.

Из пожеланий - хотелось бы больше заданий по облакам, Google Cloud и Amazon Cloud.

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

Практикум подойдет админам и программистам, заинтересованным в автоматизации рутинных операций.

Читать отзыв
@AndreyOleynik
Андрей
30 лет

Системный администратор

Практикум DevOps by Rebrain выбрал по рекламе в Телеграме. Узнал про открытые практикумы, послушал, понравилась подача материала Василия. Кроме того, коллега проходил этот практикум, поспрашивал его, понравилось, что задачи идут последовательно.

Лучше практикумов я не видел. Доволен на 110%. За те деньги, что я заплатил, качество здоровское. Предоставляется намного больше, чем платишь. Чего стоит только доступ к облачным платформам (от знакомого слышал, что ему на одном из курсов сказали самому покупать доступ к облачной платформе).

Очень хорошо систематизирует знания то, что задачи идут последовательно, от простого к сложному. Кроме того, всегда можно написать вопрос куратору в Телеграм, он подскажет. SLA на проверку заданий полностью устраивает. На мой взгляд, аналогов практикума Rebrain на российском рынке нет.

Считаю, практикум будет полезен любому сисадмину, которому нравится разносторонняя работа.

Читать отзыв
@ES111M
Евгений
30 лет | Новосибирск

DevOps-инженер в банке

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

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

Случайно набрал в интернете - курсы DevOps и увидел вас, не был ни на одном открытом практикуме, просто пошел на удачу, потому что понравился формат именно практики и были интересующие меня блоки - Dev и QA , достаточно полная и широкая программа. Причем если модуль разработки мне был знаком, то QA хотелось, но вообще не был знаком с автоматическим тестированием, а как оказалось все достаточно просто.

Так что да - для меня важна практика, в теории все хорошо, начинаешь сам делать и появляется много вопросов.

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

Хотелось бы уточнить формулировку некоторых заданий (таких было 5-6), хотя если хорошо общаться с саппортом, то все окей. И еще хотелось бы сделать SLA меньше 24 часов.

Что было нового в практикуме? Да все оказалось новым, все очень ценное, все очень нужное и что самое главное применимо к работе. Я шел конкретно за знаниями и я их получил.

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

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

Читать отзыв
Получите консультацию по практикуму
или пройдите вступительный тест
Пройти тестПолучить консультацию
У нас учатся сотрудники из
В конце вы получаете:
Сертификат
По окончании практикума вам выдается электронный именной сертификат, подтверждающий, что вы успешно прошли все задания
Авторы программы
Дмитрий Гордеев
TeamLead команды Go-разработки в МТС Банке

Опыт разработки – 4 года
Николай Наумченко
Старший Golang-разработчик
в МТС Банке

Опыт разработки - 4 года
Евгений Коняхин
Golang-разработчик
в МТС Банке

Опыт разработки - 3 года
Глеб Наземнов
Middle-разработчик
в компании Andersen Lab

Опыт разработки - 3 года
Разработчик Golang как профессия
1800 актуальных вакансий
Средняя зарплата - 200 000 рублей
230 вакансий удаленной работы

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

Ваше резюме после прохождения практикума
Технологический стек
Golang
Git
Навыки
• Работа с Git
• Написание приложений на Golang
• Профилирование приложения на GO
• Unit-тестирование и моки
• Написание бенчмарков и оптимизация
• Кодогенерация
• Навык работы с многопоточностью в Go
Постподдержка и трудоустройство
Предоставим карту компетенций
Поможем составить актуальное резюме
Поможем подобрать интересный проект
Стоимость
Плачу сам
Платит компания
Стоимость со скидкой

45 000 руб.

50 000 руб.

Рассрочка 10 месяцев

4 500 руб/мес

5 000 руб.

Money Back
14 дней
Вернем средства,
без объяснения причин
LifeTime лицензия
Доступ к практикуму
останется с вами навсегда
При одновременной покупке практикумов Golang.Basic + Golang.Advanced общая стоимость – 75 000 руб. Цена действует только для физ.лиц
Если вы хотите оплатить от юридического лица,
мы составим договор и отправим вам на согласование.

Общая стоимость

50 000 руб.

Money Back
14 дней
Вернем средства,
без объяснения причин
LifeTime лицензия
Доступ к практикуму
останется с вами навсегда
При одновременной покупке практикумов Golang.Basic + Golang.Advanced общая стоимость – 75 000 руб. Цена действует только для физ.лиц

-40% При приобретении нескольких программ,
получите скидку до 40% в личном кабинете


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

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

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

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

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

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

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

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

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

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

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

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

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

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

Личный кабинет Golang by REBRAIN
Войти
Связаться с нами

Мы разработали инновационную модель онлайн-практикумов для IT-специалистов. Через полное погружение в практику и решение реальных кейсов мы помогаем ребятам из любой точки мира получить востребованную профессию.

Международное агентство Devops-практик.
Занимаемся проектированием и обслуживанием
IT-инфраструктур с 2012 года. Наши клиенты: IMPROVE MEDIA, КупиКупон, CRYPTO EXCHANGE, NEWS360 и др.

Получить персональную скидку 5 000 руб.