Согласно опросу StackOverflow в начале 2020 года, разработчики Go занимают третье место среди самых высокооплачиваемых кодеров. Серьёзный повод обратить на него внимание. Если этого недостаточно, прибавьте сюда сильное международное сообщество и поддержку Google — разработчика языка.
Для ответов на глупые и не очень вопросы о языке Go и карьере Go-разработчика в 15-й выпуск подкаста «Выхожу с понедельника» мы пригласили Елену Граховац — создателя программы по Go-разработке в GeekBrains, engineering manager компании GetYourGuide.
Послушать 15-й выпуск подкаста можно на разных платформах:
В этом посте мы собрали интересные цитаты из выпуска.
Про язык программирования Go
— Я не согласна, что Go проще Python. Если судить по ключевым словам и по самому языку без учёта того, как на нём писать, то можно сказать, что Go проще. Там немного ключевых слов, нужно запоминать меньше разных вещей, проще синтаксис, меньше конструкций. Но если говорить в целом про то, как писать на этом языке, я считаю, что Go сложнее Python. Потому что Python, во-первых, не компилируемый язык, а интерпретируемый, а во-вторых, там нет такой строгой типизации данных, как в Go.
— Есть очень много нюансов в том, как настроены всякие чекеры, но, грубо говоря, у тебя меньше шансов ошибиться именно с компилируемым языком, потому что хотя бы часть ошибок ты найдёшь уже на этапе компиляции.
— Мы долго думали, как познакомить новичков с Go. Не тех, кто уже умеет писать на каком-либо языке программирования, а тех, кто первый раз в жизни учится кодить. Сразу давать им Go с компиляцией и дополнительными моментами, в которых придётся разбираться, было бы довольно тяжело. Это как учить человека плавать, просто бросив его на середину реки. Да, кто-то действительно так и учился, в окружении братьев и сестёр, готовых поддержать утопающего. Но мне кажется, что это негуманный способ обучения. Поэтому мы сначала даём JavaScript, который проще и ближе, ведь с ним все сталкиваются, когда пользуются сайтом.
— Часто у PHP-разработчиков, которые много лет писали только на PHP и переучиваются на Go, возникают проблемы: они не понимают, как должен работать веб-сервер. Потому что раньше роль веб-сервера выполнял Nginx, который часто конфигурировался инженерами инфраструктуры, и им не нужны были глубокие знания в этом. В случае с Go придётся разбираться, что это такое, как оно должно работать, как правильно стартовать этот сервер и останавливать его, как он должен обрабатывать запросы, что делать, если произошла ошибка. Очень много вопросов, на которые надо ответить. И, в частности, на нескольких наших курсах мы учим это делать.
— Мне сначала стал интересен язык в части его использования для микросервисов, но просто так его учить неинтересно. В какой-то момент я влилась сначала в русскоязычное, а потом в международное Go-сообщество — и это лучшее, что было в моей профессиональной жизни. Сообщество очень классное — все друг друга поддерживают, — лояльно к новичкам.
— Go — это язык, который пришёл из Google, и компания поддерживает сообщество, пытается его координировать. Есть реестр: wiki-страничка, где перечислены все сообщества. Но это работа энтузиастов, которая не оплачивается. Просто люди, которым ценно не просто писать на языке, а ещё и встречать единомышленников, организуются в разных городах, устраивают митапы.
Про DevOps
— DevOps — это культура, куда входят как минимум две профессии: Dev — разработка — и Ops — operations, то есть наши любимые админы или инженеры инфраструктуры. И DevOps — это культура взаимодействия между разработчиками и инженерами инфраструктуры. Это когда, например, разработчик приходит к инженеру инфраструктуры, а тот готов ему максимально помочь в том, чтобы его код, его продукт задеплоился в продакшен и был предоставлен пользователю.
— Я помню времена, когда ты как разработчик что-то делаешь, у тебя всё локально работает, ты собираешь код, приносишь его админу, админ пытается его запустить и говорит, что он на продакшен не работает. Ты говоришь, что у тебя всё запускается. Админ настаивает, что продакшен — это не твой локальный компьютер, нужно разбираться, почему не работает. И вот такие вот споры часто приводили к конфликтам и непониманию. В результате, конечно, страдал бизнес, потому что продукт не выпущен, и клиент — ему фича не задеплоена. DevOps — культура, которая ломает этот стереотип, стену непонимания между разработкой и operations, инфраструктурой.
— Мы в рамках Go-профессии не учим инфраструктуре настолько, насколько инженер инфраструктуры должен её знать. То есть мы не разбираем в деталях, как поднимать кластер, поддерживать его или настраивать в нём сети. Это не наша цель. Но если кто-то уже работает инженером инфраструктуры и хочет стать более site reliability, более вовлечённым в то, что называется reliability, надёжность, тогда Go-профессия отлично подойдёт, потому что часто site reliability инженерам нужно знать Go, чтобы где-то что-то автоматизировать, дописать, протюнить, подправить. Например, связанное с Kubernetes — написать kubernetes-оператор, который будет решать задачу конкретно нашей компании.
Про инженеров и разработчиков
— Вообще слова «инженер» и «разработчик» мне кажутся взаимозаменяемыми. Если взять мою трудовую книжку в России, то первая запись в ней про то, что я была инженером, а не разработчиком. Потом у меня где-то есть запись, что я была разработчиком. В этом смысле мне кажется, что это взаимозаменяемые слова. Почему используется «инженер», а не «разработчик»? Мне кажется, что «инженер» — более генерализованное слово и если мы говорим про компании заграничные, европейские, американские, то часто оно используется как генерализатор. Нет привязки к языку программирования.
— Если мы говорим про специалиста, не привязанного к конкретному языку, мы можем встретить вакансию software engineer, где подразумевается человек, который занимается разработкой ПО, при этом не важно на каком языке: сегодня я пишу на Go, а завтра мне нужно выучить другой. В России тоже есть подобные вакансии, но за границей чаще такая генерализация предполагается, без привязки к конкретному языку.
Интересно? По ссылкам в начале статьи вы сможете послушать полную версию и подписаться на обновления подкаста ;) Оставайтесь с нами, впереди много классных выпусков!