Тарас и его отважная пятерка

10 марта 2021
На 2021 у всего мира большие надежды, и NIX начинают новый год с рассказа сразу о шести гуру – команде, создавшей курс по Golang для онлайн-платформы обучения Почему стоит выбрать Golang для своего старта в IT, на каком языке написаны Uber и Twitch, какие возможности предлагает онлайн-курс NIX и кто же такие создатели курса – об это читайте сегодня.  А еще наконец-то пригодится школьное чтение по ролям :)
Познакомимся?
Тарас: Привет! Я — Group Lead PHP. Вместе с командой разработчиков: Денисом, Виталией, Сашей, Максимом и Ромой мы создали курс Golang на обучающей платформе NIX. Тарас и его отважная пятерка
Расскажите, когда и как попали в Никсы?
Тарас: В Харькове много IT-компаний, но большинство ребят из моего окружения советовало Никсы. Еще и товарищ со старшего курса постоянно с восторгом рассказывал, как же круто там работается. То, что в Никс была программа обучения PHP, меня окончательно покорило. После ее окончания в 2014, я попытал счастья стать частью NIX, и меня взяли.

Александр: Я оказался в Никсах чуть более 4 лет назад, тоже пройдя обучение по направлению PHP developer.

Денис: В Никсах уже 2 года, попал через практику во время учебы.

Виталия: О, я тоже с Никсами с конца февраля 2018 года. После успешного окончания PHP-обучения меня взяли в команду.

Рома: Я тогда самый зеленый, только полтора года тут. Попал в Никсы, как и все, через программу обучения. Не буду нарушать статистику :)
Тарас, расскажи о вашей команде Golang?

На самом деле необычно, что я груплид PHP, а мы сейчас говорим о команде Golang. Это интересная история. 

К изучению Golang мы пришли эволюционно, в начале 2019 года получили инсайт от PHP Team Lead Богдана Ореховского: «‎»‎Тема прикольная, инновационная, и было бы круто, если бы посмотрели в эту сторону и были в ней компетентны”.

Макс первым попробовал Go в коммерческом проекте. Проект был на PHP, но в части системы были проблемы с производительностью. Тогда Макс решил попробовать переписать его на Golang в свободное время.  В результате он пришел к заказчику с классными показателями: обработка 200 транзакций сократилась с 30 до 1 минуты!

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

Основная ценность в том, что ребята на личном энтузиазме, без навязывания, выучили Golang и по сей день изучают. Так в отделе зародилась Go Users’ Group: мы собираемся раз в неделю и обсуждаем новинки в мире Golang, занимаемся созданием различных наработок связанных с Go, которые помогают нам сэкономить время при старте проектов. К слову, присоединиться к этой тусовке может любой желающий никсоцвец, кому эта тема интересна.

Весной 2020 PHP-команда NIX зарелизила платформу дистанционного обучения с курсом по PHP,  тогда и зародилась идея сделать такой же курс по Go. Технология пусть и новая, только в 2009 году появилась, но в то же время уже зрелая и становится популярнее ежегодно.

Тарас и его отважная пятерка
Что крутого в языке с точки зрения разработчика?

Денис: Для меня это простота распределения процессов, так называемые горутины. А еще Golang, как по мне, довольно прост из-за того, что это относительно молодой язык, его еще не успели «усложнить».

Александр: Мне тоже кажется, что прежде всего он крутой благодаря своей простоте. Плюс классная производительность, читаемость и широкие возможности для параллельного программирования.

Рома: Для меня одна из главных «‎»‎изюминок» языка — это concurrency. Также язык имеет богатую стандартную библиотеку и набор готовых утилит, которые упрощают тестирование, профилирование и т.д. Язык собрал большое комьюнити, поэтому поиск необходимой библиотеки или модуля не составляет никакого труда.

Где Golang применяется сейчас и какие у него перспективы?

Денис: У языка довольно широкий спектр применения, и если рассматривать со стороны наших частых задач — он отлично подходит. Я говорю про написания АПИ и различных бэкенд-сервисов.

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

Виталия: А я думаю, что преимущественно Go применяется в качестве бэкенда для веб-приложений.

Рома: Golang имеет очень широкий круг применения: от CLI (Command Line Interface) утилит, до таких серьезных проектов, как Kubernetes. Он нашел широкое применение в backend-разработке и замечательно подходит для разработки высоконагруженных систем. Перспективы у языка просто замечательные: он активно развивается и становится все более широко используемым языком.

Тарас и его отважная пятерка
Почему новичкам стоит выбрать его для изучения?

Александр: Язык востребованный и популярность только растет. У него небольшой и хорошо читаемый синтаксис. И тот факт, что это один из пяти официальных языков Google, тоже немаловажен. У языка большое будущее и широкая ниша применения в IT-сфере. Golang разработчики всегда будут при работе.

Денис: Тут все очень лично. Каждый пишет на том, что ему близко. Но однозначно стоит попробовать GoLang — уникальный язык.

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

Рома: С помощью Golang можно решать большой спектр задач. Он имеет замечательную систему типов и автоматическое управление памятью, что позволяет быстро начать писать безопасные и эффективные приложения. А огромное комьюнити позволяет не только быстро находить готовые open source решения, но и обмениваться опытом. Это делает процесс изучения проще и интереснее.

Тарас и его отважная пятерка
Тарас, расскажи подробнее о курсе

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

На момент создания курса у нас уже был опыт обучения. В первую очередь, это наш опыт связанный с PHP, а также внутренний 3-недельный курс по Golang. Любой бэкенд-разработчик мог взять эту программу с теорией и практическими заданиями и изучить язык. Как раз на ее базе мы и создали курс Golang на платформе. Уровни Всего есть 3 уровня на курсе: Beginner, Trainee, Junior.
  1. Beginner — для новичков, у которых совсем нет знаний в программировании, но есть время и желание. После изучения материала проходит контрольные вопросы и тест, попадая на следующий уровень Trainee. 
  2. Уровень Trainee дает уже более углубленные знания языка, а также библиотек и инструментов, которые Go-разработчики используют в коммерции. Думаю, если отлично все изучить, то после второго курса уже можно пробовать свои силы на вакансию. 
  3. Есть еще и третий курс Junior, где копаем не только в сторону Golang, но и изучаем фронтенд составляющую. Стремимся, чтобы ребята были full-stack разработчиками. 
Помощь экспертов

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

Время

Если ты совсем «‎зеленый»‎ и вместе с языком Golang хочешь войти в IT, то за два месяца вполне реально освоить язык, усердно занимаясь. Все зависит от времени, которое ученик сможет  уделять курсу, ну и от аналитических способностей. Наш курс рассчитан: Beginner и Trainee по 30 дней, а на Junior выделяется два месяца. Общая длительность курса составляет 4 месяца. 

На моей практике ребята за 2-3 недели прокачивались в базовых знаниях по Go, достаточных для участия в проекте. Например, если ты годик-два уже работаешь на PHP, поработал в нескольких коммерческих проектах, то трех недель тебе хватит, чтобы погрузиться.

Тарас и его отважная пятерка
Какие таланты в себе раскрыли/улучшили навыки в ходе работы над курсом?

Денис: Когда формируешь вопросы/ответы то и сам учишься, так что подтянул знания по Golang в целом.

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

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

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

Что посоветуете ребятам, которые будут его проходить?

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

Александр: Будьте внимательны, не пропускайте никакие шаги, даже если вы уверены, что знаете тот или иной раздел более чем достаточно. И, конечно, будьте максимально заинтересованы, тогда обучение пролетит для вас незаметно и с максимальной пользой.

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

Рома: Писать код :). После изучения какой-либо концепции обязательно попробовать ее на практике. Во-первых, это очень интересно, ты видишь «‎вживую»‎, как это работает. Во-вторых, это поможет при прохождении тестов, так как там много вопросов, затрагивающих именно практическую реализацию тех или иных концепций.

Тарас и его отважная пятерка
А как вы совершенствуете свои скилы? Что делаете для того, чтобы расти как разработчик?

Денис: Практика, практика, практика.

Ну и порой участвую в новых для себя активностях — не только hard-скилы важны, soft-скилы никто не отменял.

Александр: Стараюсь читать различные дайджесты, статьи и смотреть соответствующий контент. Пробовать что-то новое на практике и углубляться во все аспекты. Мне повезло, что мой текущий проект позволяет мне развиваться и как Golang, и как PHP-разработчику.

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

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

Что считаете самым сложным в работе девелопера?

Денис: Решать задачи с неточными требованиями, где надо включать в себе по чуть-чуть от каждого BA/PM/QA.

Александр: Найти идеальный баланс в рабочих процессах.

Виталия: Когда попадаются рутинные и неинтересные таски.

Рома: Самое сложное в работе, как ни странно, относится не к написанию кода. Самое сложное — это правильно обозначить, какую именно проблему и каким образом должно решать то или иное приложение/фича/модуль. Тут к нам на помощь приходят бизнес-аналитики.

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

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

А что самым приятным?

Денис: Зеленый пайплайн :)

Александр: Когда твое детище выходит в мир и им пользуется большое количество людей. Осознание того, что сделал/делаешь что-то нужное и полезное.

Тарас: На разных этапах это были разные вещи. Когда я только пришел в Никсы, мотивировало и кайфовал от того, что «‎Класс! Получилось! Работает!»‎, потом «‎Класс! Я успешно работаю в проекте»‎, потом радость осваиваемых фреймворков. Сейчас мне классно, когда вся команда развивается, у них все получается, и ты чувствуешь гордость за всех. Уже другой уровень, не радость от выученной библиотеки, а более высокие вещи. 

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

Рома: Самое приятное для меня — это, собственно, написание кода и работа с абстракциями в коде/системе. Тут можно в полной мере реализовать свой исследовательский и творческий потенциал.

Посоветуйте книгу/статью/евангелиста Golang, которую должен прочитать/на которого должен подписаться каждый Golang разработчик

Денис: StackOverflow :)

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

Александр: Golang-book – это то, с чем однозначно нужно ознакомится при первом знакомстве. Все кратко, лаконично, понятно и полезно. А в дальнейшем я бы не советовал привязываться к какой-то одной книге или евангелисту. Нужно просто следить за миром Golang, новинками и естественно писать на Go. Есть куча различных дайджестов, телеграмм каналов и статьей, связанных с этим языком. И отовсюду можно почерпнуть что-то интересное и полезное.

Виталия: Да, мне тоже книга Калеб Докси «‎Введение в программирование на Go‎» помогла погрузиться в мир Golang. Однозначно рекомендую.

Тарас: Фишка Golang в том, что хоть он и сочетает в себе достаточно сложные задачи, но его разрабатывали так, чтобы порог входа был низким. Go Tour и Go Book, разработанные создателями языка, — именно с них я бы советовал начинать, а потом уже двигаться куда-то дальше. 

У нас все через эти два ресурса проходили, и это реально работает.

Рома: А я бы хотел тогда посоветовать замечательный репозиторий. 

Что можете посоветовать новичкам в IT? 

Денис: Главное — мотивация. Если тебе действительно интересно что-то, то ты обязательно найдешь, как это сделать. Так что самое важно — определить, что тебе действительно интересно. IT очень обширный, это не просто «‎писать код‎» :)

Если идти в IT с корыстными целями, то можно легко увязнуть на старте. Тут нужно проявить усердие и усидчивость.

Александр: Внимательно читать материалы, которые есть в нашем курсе, и с ответственностью подходить к заданию. Мы постарались вместить всё необходимое в наш курс, и, как мне кажется, у нас это получилось.

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

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

Рома:  Хотел бы посоветовать быть «‎жадными»‎ к знаниям. Больше читать, смотреть, слушать, и главное — пробовать. Лучший способ изучения чего-либо — пробовать это на практике. Ну и конечно же, быть уверенными в себе. Не стесняться спрашивать более опытных ребят, будь-то офис, чат, Github и т.д. Тебе обязательно помогут.