image

В апреле на Хабре публиковалась статья «Зачем вам учить Go», в которой подробно освещались возможности языка и его преимущества.
 
Ну а сейчас — самое время поговорить о разработчиках Golang, пороге входа в эту отрасль и о том, чего может ожидать Go-разработчик от работодателей как в плане условий работы, так и размера заработной платы. Разобраться во всем этом «Моему кругу» поможет преподаватель курса Golang в GeekBrains Сергей Кручинин, за что ему огромное спасибо.



Насколько высокий порог входа в разработку на Golang?


В большинстве своем Go изучают профессиональные разработчики, которые программируют на других языках. Просматривая вакансии, часто можно видеть в требованиях комбинации php/golang, python/golang и другие.
 
Считается, что разработчик, который уже знает какой-то язык и владеет принципами построения архитектуры проекта, в состоянии быстро выучить новый для себя язык программирования. И это правильно, причем справедливо не только для программирования: если хорошо разбираешься в какой-то сфере, то освоить что-то смежное можно без проблем. Правда, у многих программистов, приходящих к Go, возникают сложности с пониманием горутин, каналов и некоторых других концепций. Но постепенно все приходит.
 
Не все со мной согласятся, но я считаю, что Go подходит и для освоения в качестве первого ЯП для новичка в программировании. Да, синтаксические конструкции здесь немного скудные, нет полноценной реализации ООП. Но это Тьюринг-полный язык, так что он ничем не хуже других языков, включая школьные типа Logo. Он простой, не дает делать ошибок, заставляет придерживаться лаконичности. Плюс ко всему, Go — функциональный язык, на котором можно решать задачи любого уровня сложности, включая те, что нужны бизнесу и промышленности. 

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



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


Да, причем причины перехода весьма банальны. В большинстве случаев это требование работодателя — нового, к которому устраивается программист, или старого, который для решения проблем узких мест или обеспечения лучшей масштабируемости/быстродействия решил использовать Golang.
 
Кроме того, в некоторых случаях сами программисты устают от монолита и бесконечных регрессий в коде, поэтому решают освоить Go, чтобы получить глоток свежего воздуха. Этот язык дает возможность реализовать проект быстро, просто и на микросервисах. Последнее — преимущество для компаний, которые разрабатывают специализированные продукты с очень узкой функциональностью. В этом случае просто нет смысла использовать фреймворки, которые используются в монолитах.
 
О проблемах монолитов рассказывала, в частности, компания Ozon. До недавнего времени это была полностью монолитная платформа. Изменить небольшую часть какой-то системы без влияния на другие компоненты просто невозможно. В Ozon это сравнивают с кубом — чтобы покрасить небольшую часть, приходится закрасить всю грань. Обновления платформы длились по неделе и больше, апдейты выполнялись раз в полгода.
 
Микросервисы же дают возможность опробовать сразу несколько вариантов нового сервиса, акции или иного элемента платформы. Go хорош для push notification, идеален для стриминга, он быстрый, поскольку компилируемый и относительно простой. В этом он похож на интерпретируемые пхп или питон.  В итоге большое количество компаний сейчас ищет разработчиков, которые хотя бы немного знакомы с Go или готовы перейти на него в процессе обучения.
 
В любом случае новичку нужно начинать с простых задач, постепенно выполняя все более сложные проекты, а затем пробовать написать  проект, который мог бы потребоваться какой-либо компании. Стоит также изучать открытые репозитории на гитхаб (их много), читать чужой код, предлагать исправления, делать форки. Можно даже попробовать сделать свой стартап, идея которого реализована на Go. Но нужно помнить, что продукт стартапа должен решать какую-то реальную проблему — обычных пользователей или бизнеса. Архитектура проекта должна определяться потребностями, не стоит создавать инструменты ради инструментов.



Востребованность Go-разработчиков — насколько она велика?


Чтобы дать ответ на этот вопрос, стоит взять статистику «Моего круга». Среди всех вакансий, на долю тех, в которых требуются Go разработчики, приходится прядка 4%. Для сравнения, на долю тех, в которых требуется Python — 11%, PHP — 17%, JavaScript — 26%, Java —36%.

Что касается зарплат, то разработчики Golang последние три года уверенно входили в тройку самых высокооплачиваемых специалистов. Медиана зарплат уверенно растёт каждые полгода и сейчас находится на уровне 160 000 рублей.


По данным калькулятора зарплат «Моего круга» средняя зарплата разработчиков на Go во втором полугодии 2019 года составляет около 145 000 рублей.

Если посмотреть, сколько предлагают Golang-разработчикам отечественные и зарубежные компании, то верхняя планка — $15,000.



 Но это Япония. По России ситуация немного иная, но в целом, тоже все хорошо.
 

На «Моём круге» вы можете посмотреть свежие вакансии для Golang-разработчиков и подписаться на рассылку новых.

Требования к кандидатам? Ну вот, например, требования из вакансии на должность миддла по Golang с зарплатой от 110 тыс. до 180 тыс. в зависимости от уровня знаний. Вакансия открыта в Москве.
 
image

Здесь небольшой совет — опыт разработки Golang лучше нарабатывать до трудоустройства. Не обязательно быть суперпрофи, но базовые умения очень нужны. Для получения опыта — необходимы эксперименты, практика, работа над проектами, хотя бы и небольшими. Помочь в этом может Github — здесь достаточно много кода, который можно изучать.



В каких отраслях и компаниях востребован Go?


Практически во всех. Это и видео-конвертеры, и стриминг-сервисы, агрегаторы, интернет-магазины, мессенджеры. На Go написаны Kubernetes. Еще один пример — Mattermost, аналог Slack, которым, к слову, пользуется команда Хабра.
 
Оценить уровень востребованности Golang-разработчиков в различных компаниях можно, оценив список организаций, проекты которых работают на Go.
 
Зарубежные компании:

  • SAP;
  • IBM;
  • Google;
  • Walmart;
  • Dell;
  • Intel;
  • HP;
  • RedHat;
  • Microsoft;
  • Facebook.

Отечественные:

  • Mail.ru Group;
  • Avito;
  • Ozon;
  • Lamoda;
  • Ростелеком;
  • Ситимобил;
  • Delivery Club.

Собственно, проще назвать крупные компании, которые не работают с Golang, чем перечислять те, кто с этим языком тесно связан.





В качестве вывода можно сказать, что если вас привлекает Golang, то стоит попробовать с ним поработать. В ближайшие годы потребность в специалистах из этой отрасли будет только расти. Go — точно не хайп и не «пузырь», язык будет развиваться многие годы. В создании языка участвовали  например, Роб Пайк, Кен Томпсон, они поддерживали и поддерживают, Go. И это если не вспоминать о корпорации Google, которая также стоит «за спиной» Golang. Выучить же его может практически любой достаточно сильно мотивированный новичок, затратив на обучение известное количество времени и усилий. При этом разработчиков Go сейчас ещё не так и много, поэтому есть возможность войти на рынок труда именно сейчас.

Комментарии (13)


  1. undersunich
    11.12.2019 13:17

    Интересно мнение разработчиков которые до перехода на golang работали с другими языками, какие личные ощущения.Ведь golang по сути язык процессов и процедурного подхода.На мир и разработку теперь надо смотреть по другому.Кто что скажет?


    1. tendium
      11.12.2019 13:45

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


      1. dzsysop
        11.12.2019 18:42

        пхп был страшным оверхедом.

        что может быть проще строки на РНР?
        Можете дать пару примеров?
        По мне PHP может быть слишком простым и недостаточным для многих задач, но оверхедом — это навряд ли и уж тем более страшным


        1. tendium
          11.12.2019 23:19
          +1

          Вы видели размер докер-образа с go приложением на базе scratch образа? Когда у меня стоит задача сделать пару запросов к некоему апи (еще и конкурентно), переформатировать ответ для пользователя и вернуть в json, то утилитка на go будет действительно копеечной (да еще и без внешних зависимостей). Тогда как для адекватного решения на php без внешних зависимостей или же без велосипедостроительства обойтись сложно, а если посмотреть на размер образа, куда всё это собрано, то и вообще печально становится. Это я еще на счет производительности и потребляемой памяти умолчу.


          1. dzsysop
            12.12.2019 00:19

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

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


            1. tendium
              12.12.2019 11:29

              О PHP идёт упоминание просто потому, что это один из языков используемого стека. И речь идет прежде всего о микросервисной архитектуре (куда go, кстати, отлично вписывается). Там в отношении PHP в принципе не применимо выражение «установлен и крутится».


        1. passionkillah
          12.12.2019 11:31

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


    1. ReDev1L
      11.12.2019 22:00

      Если смотреть с колокольни PHP, я рад что появились Golang и Ballerina. Чтобы круто писать на PHP — надо забить голову тучей библиотек, знать про расширения, эти 50-500мб докер образы из-за композера, надо тюнить композер, надо тюнить PHP, надо тюнить fpm, PSR, туча ненужных фреймворков (viable по факту только Symfony и Laravel), внутрянка PHP — адский ад, там надо делать параллельный бранч, и рубить топором всё легаси.

      И тут расцвет Go: стандартизировано всё из коробки, заточен на concurrency, строгая типизация, весь тулсет в комплекте, grpc из коробки, любой транспорт легко интегрировать, консольные приложения писать в кайф, мультиОС без танцев с бубном, докер образы 50мб в среднем, в общем для веба — я не вижу лучших альтернатив.
      Из минусов — тяжко мозги перестроить вначале, но как процесс прошёл — добро пожаловать в новый лучший мир.
      Есть ещё Ballerina — топовый язык для интеграций веб софта (для прослоек, gateways и т.д.).
      NodeJS не рассматриваю, для меня это PHP с Swoole/ReactPHP.


    1. Stas911
      12.12.2019 05:43

      Писал на Java раньше, потом на Python, теперь поровну Go и Python. По сравнению с Питоном удивляет, что скомпилированная прога работает почти всегда, с первого раза и не валится в рандомных местах — такие давно забытые ощущения. Кросс-компиляция нравится. Язык простой, немного странное ООП, но терпимо, когда руку набьешь. Каналы и горутины — это просто праздник какой-то.


  1. abalduy
    11.12.2019 14:34
    +1

    Как тут было сказано, глоток чистого воздуха. Часто приходиться смотреть и вникать код на php,python,js — пока соберешься с мыслями, пока вспомнишь, что куда. На go проще — ну это с моей колокольни.


  1. Hippolot
    12.12.2019 06:36

    Да, синтаксические конструкции здесь немного скудные, нет полноценной реализации ООП. Но это Тьюринг-полный язык, так что он ничем не хуже других языков, включая школьные типа Logo.

    По такой логике Brainfuck — тоже ничем не хуже Java/C++/C#/etc, он же Тьюринг-полный.


    Он простой, не дает делать ошибок, заставляет придерживаться лаконичности.

    Он позволяет делать намного больше ошибок, чем некоторые другие языки. Я бы тут добавил уточнение каких именно ошибок он не позволяет делать (наверное Вы имели ввиду UB).


  1. cosmostarK
    12.12.2019 11:31

    Проблема в том, что для джунов почти нету вакансий и тратить большое количество времени нету смысла. Все было бы хорошо, если бы не было так плохо…


    1. mekegi
      14.12.2019 10:30

      Прямо сейчас гоферы нужны в Авито, ВК Пей, Яндекс, Озон и ещё в кучу контор поменьше. А свободных гоферов на рынке нет. Поэтому единственная стратегия сейчас это "нанимать специалистов уровня миддл и выше с других языков и на месте обучать их го".
      В 2015 году мы так в лазаде наняли порядка сотни бекендеров с опытом в пхп/питон/джве/перл и на месте уже переобучали на го. Единственное условие было "желание изучать и писать на го".
      Сейчас основной костяк опытных гоферов Рунета это экс-лазадовцы.
      Про остальные конторы не скажу но в Авито прямо сейчас тоже экспериментируют с наймом сильных специалистов бекендеров кто не имеет опыта на го ( либо имеет но мало). И уже на месте они будут изучать го.
      П.С. естественно платить при этом специалистам надо не как "джунам" а как нормальным миддл/сеньорам (не меньше чем они получали работая на текущем языке которым они владеют в совершенстве). Иначе какой смысл сеньору с 5+ опыта на пхп переходить на го падая при этом по зарплате