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-разработку достаточно будет самого курса и любознательности.
Пройти обучение
Комментарии