Блог

Курс Go-разработки в GeekUniversity: как это будет

Интервью с автором курса.
5 минут2090

GeekUniversity запускает факультет Go, где один из курсов будет вести Сергей Шипков — руководитель разработки юнита Communication в Avito. Занятия помогут студентам вникнуть в реалии коммерческой разработки и сделать первые интересные проекты для портфолио.

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

Привет! Расскажите о себе, пожалуйста: где работаете, какой стек технологий используете, как давно в IT.

— Привет. Работаю в IT уже десять лет, шесть из них — пишу backend-системы. Разрабатывал микросервисы, мобильные приложения, игры, сайты.

C 15 декабря 2016 года работаю в Avito. Начинал backend-инженером, через год стал руководить разработкой юнита Communication. Наша команда занимается развитием единой платформы уведомлений и защищает телефоны пользователей от SMS-спама и звонков.

Через нашу платформу рассылаются миллиарды уведомлений — мы собираем и храним аналитику по каждому из них. Еще мы предоставляем внутренним командам инструменты для рассылки, управления, тестирования уведомлений. Обрабатываем больше 15 000 запросов в секунду.

Для защиты телефонных номеров пользователей интегрируемся с телеком-провайдерами.

На Go мы пишем сервисы, которые легко запускать в Kubernetes-кластере с помощью инструментов CI/CD.

Данные храним в MongoDB, Tarantool, аналитику и логи — в ClickHouse.

В качестве брокера сообщений используем RabbitMQ, для ошибок — Sentry, для мониторинга — Grafana, для алертинга — Moira.

Пишем юнит-тесты и тестируем производительность сервисов.

Какие именно сервисы вы пишете на Go и почему выбрали этот язык?

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

А еще в Go есть готовая среда, горутины и каналы. Это позволяет строить высоконагруженные системы, которые эффективно используют ресурсы машины.

Кстати, почему у других потоки, а у Go — горутины? Чем они отличаются?

Если коротко:

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

Когда в 2007 году Google начала разрабатывать Go, одним из основных требований к языку было создание встроенных средств распараллеливания вычислений, которые были бы простыми и эффективными.

Насколько разработчики Go сейчас востребованы на рынке? Есть ли дефицит таких специалистов? Кому вы советуете учить Go в первую очередь?

— Востребованность Go-разработчиков растет — бизнес модернизирует производственные процессы, чтобы:

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

Дефицит специалистов есть и остро ощущается. Например, за последние три дня на hh.ru появилось/обновилось больше 200 вакансий «Go-разработчик». Есть и смежные вакансии, где Go требуется как один из языков.

Как бы странно это ни звучало, я советую учить Go всем, кто связан с backend-разработкой. Также он хорош в качестве первого языка программирования.

— Если говорить о первом языке, чем Go дружелюбен к новичку?

В языке Go всего 25 ключевых слов, в отличие от С# (102), С++ (82), Java (50), PHP (49), Ruby (42), JavaScript (41), Python 3.x (33), C (32), Python 2.7 (31).

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

Статическая типизация в Go исключает множество ошибок на этапе компиляции. В системе типов легко разобраться и практически невозможно запутаться. А еще в Go, как и в Python, ясные и четкие конструкции: нельзя написать всю программу в одну строку.

— В Go нет классов, наследования, исключений. Это ломает шаблон людям, привыкшим к объектно-ориентированному программированию. Насколько сложен переход к Go после Python или Java?

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

Создатели Go вдохновлялись иными семействами языков, нежели разработчики Java и Python. Из-за этого при переходе разница заметна. Но сделать его просто: если вы владеете хотя бы одним языком программирования, влиться в Go-разработку сможете за одну-две недели.

Чему вы будете учить на курсе? Какие проекты студенты выполнят под вашим руководством?

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

В рамках курса поработаем с базами данных, разберем принципы и методы проектирования, структуры данных и алгоритмы.

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

Будут примеры из личного опыта?

— Да. Расскажу о разработке от идеи до реализации: какой жизненный путь проходят задачи, про работу в команде, а также про тестирование, мониторинг, аналитику, поиск ошибок, CI/CD, облака и многое другое.

Практическую часть будете писать на чистом Go или с использованием фреймворков?

— Сервис сделаем без фреймворка. По функциям это будет API для манипуляции объектами, плюс реализуем поиск.

Язык полностью зависим от благополучия Google или живет своей жизнью в сообществе Open Source?

— Инженеры Google и участники сообщества Open Source развивают Go вместе. Всего в работе над языком уже приняли участие более 1800 человек. В середине 2018 года вклад сообщества превысил объем доработок, внесенных основной командой Go.

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

Как вы оцениваете перспективы языка: не сместят ли его со сцены в обозримом будущем?

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

По результатам опроса Stack Overflow’s 2018 Developer Survey, Go сохранил заветное место в топ-5 самых любимых и пятерке наиболее популярных языков. Люди, которые используют Go, любят его. А те, кто еще не пробовал его на практике — хотят изучить.

Участники опроса ActiveState’s 2018 Developer Survey вывели Go на первое место в рейтинге: 61 % пользователей указали, что они «очень довольны» Go, из них 36 % — «чрезвычайно довольны».

Go стал «Самым многообещающим языком» по итогам опроса JetBrains’s 2018 Developer Survey. При этом 12 % респондентов работают с Go сегодня и 16 % намерены использовать его в будущем.

По результатам опроса HackerRank’s 2018 Developer Survey, 38 % разработчиков ответили, что намерены изучить Go.

Прежде чем записываться к вам на занятия, нужно что-то почитать, посмотреть?

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

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