Бесит, что err != nil: главные инсайты из опроса Go-разработчиков

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Месяц назад мы вместе с Хабром спросили у Go‑разработчиков, чем они живут, над какими задачами работают и где черпают полезную информацию о Go. В этом посте расскажем об основных инсайтах, а также узнаем, почему многие Go‑разработчики знают Python и мечтают выучить Rust.


Сферический Go-разработчик: микрокоманда, пара лет опыта и карьерный пивот

Всего опросник заполнили 1,5 тысячи практикующих Golang‑разработчиков. В основном это молодые программисты, работающие в небольших командах, для которых Go — единственный или основной язык программирования. Больше всего специалистов с опытом 1–3 года или 10 лет в коммерческой разработке, — эти когорты набрали более 20%. После них с 18% идёт группа тех, у кого пока совсем нет опыта коммерческой разработки. Но в целом разброс значений между всеми шестью группами небольшой. Это показывает, что Golang востребован у широкого круга разработчиков, от начинающих до опытных.

При этом опыт коммерческой разработки именно на Go в среднем гораздо меньше опыта в разработке в целом: явно лидируют группы 1–3 года (33%), меньше года (26%) и нет опыта (23%). Интересно, что 2% программистов вкатились в Go практически сразу после его релиза в 2009 году, и сейчас у них накопилось уже больше 10 лет опыта. 

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

Это неудивительно, ведь Golang появился лишь 10 лет назад, а популярность обрёл совсем недавно. Сейчас на Go переписывают как старые проекты, так и новые, поэтому спрос на Go‑разработчиков превышает предложение и в коммерческую разработку можно попасть с небольшим опытом. Например, мы в СберМаркет Tech в 2020 и 2021 году переучивали на Go Ruby‑разработчиков.

Софья Михайлова

Golang-разработчик в СберМаркет Tech

Количество Go‑разработчиков в компаниях, судя по опросу, чаще всего небольшое: 29,9% отметили, что у них до 10 человек, а 28% — что они у себя одни пишут на Go. Правда, 15% выбрали вариант «А гофер его знает!» — но тут уже неудобные размышления подкидывает логика: ведь они же и сами гоферы, следовательно, должны это знать. В общем, что‑то не сходится.

Как компания, находящаяся в самом пекле микросервисной трансформации и имеющая в штате 100+ Go‑разработчиков и полноценную PaaS‑команду, рискнём предположить, почему так происходит. Стратегическое решение по распилу монолита требует много трудозатрат и ещё больше экспертизы, и когда оно принято, количество Go‑разработчиков стремительно растёт от 50 до 100, а затем и до бесконечности.

Максим Исаченко

Golang-разработчик в СберМаркет Tech

Землю — крестьянам, фабрики — рабочим, Golang — микросервисам и веб-приложениям

Два главных направления, в которых используется Go, — создание веб‑приложений и микросервисов. Они набрали 29% и 46% соответственно. Обработка данных, создание консольных утилит и управление IT‑инфраструктурой — не такие популярные сферы применения Golang, они набрали по 5–7% голосов.

Go слегка отстаёт от С++ по производительности, зато позволяет разрабатывать продукт гораздо быстрее, благодаря чему и стал популярен в высоконагруженных сервисах. А если не надо поддерживать большие нагрузки, то быстрее написать код на Python.

Софья Михайлова

Golang-разработчик в СберМаркет Tech

Для 53% участников опроса Go — основной язык разработки, причём 40% респондентов из этой группы используют в работе только его.

При этом 61% разработчиков, для которых Go — основной язык, хотят расширить свой стек, а 36% полностью устраивает уже изученный набор технологий.

Тут нам стало интересно: то ли эти 36% уже постигли всё, что нужно, и даже больше, то ли им просто хорошо живётся в своём аскетичном Golang‑мирке. Мы закопались в ответы и выяснили, что всего у 5% респондентов Go — единственный рабочий инструмент и они не хотят освоить ещё какие‑то технологии. И все они работают с ним не более трёх лет. Бинго!

Самые популярные языки в связке с Go — это Python и JavaScript. Немного отстаёт от них PHP (но с ним всё понятно — на многих проектах Go как раз его и заменяет, так что PHP необходим для поддержки легаси‑кода). Ещё участники отметили C++, Java, C# и Rust — но использует их совсем немного гошников. Есть и совсем экзотика — кто‑то умудряется «поженить» Go с Clojure, Lua, Elixir и даже Pascal!

Здесь у нас появилось две гипотезы, почему первые места за Python и JS:

Именно они (плюс идущий третьим PHP) чаще всего используются в проектах, которые решают разделять на микросервисы. Значит именно на этих языках раньше писали ребята. А первая любовь не забывается никогда.

Python изучают для тестирования, разработки утилит и прототипов, чтобы быстро писать код без оглядки на производительность. А JavaScript выглядит логичным продолжением для фулстек‑разработки.

Максим Исаченко

Golang-разработчик в СберМаркет Tech

Те же 42% респондентов, которые отметили, что Go для них дополнительный инструмент, чаще всего используют уже знакомые нам Python, PHP и JavaScript. Правда, к этим лидерам добавился Java (неужели и сюда забрёл кто‑то, кто путает Java и JS?!). Близки к группе лидеров и два «си» — C++ и C#.

Но и здесь попадается экзотика — например, Go иногда используют в дополнение к Swift, Perl, Dart, Haskell. Причём Swift и Dart как бы намекают, что кто‑то одной рукой пилит бэк на Go для мобильных приложений, а второй рукой — сами эти мобильные приложения.

Интересно, что в целом Go нравится разработчикам: лишь 5% участников опроса спят и видят, как бы перейти на другие технологии. Основная же часть гошников хочет всего лишь обогатить текущий стек.

А вот конкретные интересы в расширении стека расходятся с реальными рабочими задачами — тут с большим отрывом лидирует любимчик и фаворит опросов Stack Overflow последних лет Rust (который, как и Go, должен был стать «убийцей C++», но тоже нашёл свою собственную нишу). За ним в топе идут уже логично вытекающие из популярных рабочих задач Python, JavaScript и его менее злой брат‑близнец от «Майкрософта» TypeScript.

Можно было бы сказать, что чистого Go разработчикам не хватает и его хотят дополнить другими полезными инструментами вроде Rust, Python и JS, но есть нюанс. Нередко разработчики абстрактно хотят поизучать разные языки. Поэтому надёжнее было бы ориентироваться на те языки, которые на практике используются вместе с Go.

Тот же Python, например в вебе, микросервисах и контейнерах, используется повсеместно, причём не только с Go, но и с другими бэкенд‑языками. JS же, кроме того, что практически безраздельно правит во фронтенде, который бэкендерам так или иначе иногда приходится трогать, так же распространён и на бэке — благодаря node.js. А значит, писать новые микросервисы на Go и параллельно поддерживать легаси‑код на JS и PHP вполне реально.

Либо ошибки, либо ничего: что бесит в Go

Есть в Go и раздражающие моменты. В топе — обработка ошибок, а скорее, необходимость делать это явно и всегда.

Ещё часть разработчиков бесит синтаксис, отсутствие конкретного функционала (пожалуй, стандартная претензия практически любому универсальному языку — тому же Kotlin за это достается регулярно), многословность и маленькая стандартная библиотека. Но, кажется, это те самые принципы, на которых Go основан, и он не был бы собой, будь эти моменты устроены по‑другому. Некоторым даже не нравятся дженерики — только непонятно, что имеется в виду: что их долго не было или что они как‑то криво реализованы.

Хотя Go — это С‑подобный язык, некоторые особенности его синтаксиса непривычны разработчикам, которые только-только вкатываются в Go или используют его в связке с другими языками. Например, тип данных объявляется после названия переменной, а обработка ошибок требует чуть больше кода. Из‑за таких мелочей некоторые программисты и плюются.

Софья Михайлова

Golang-разработчик в СберМаркет Tech

RTFM, тележечка и Хабр: как разработчики прокачиваются в Go

Основная часть респондентов ищет новую информацию о Go на Хабре — весьма неожиданно для опроса, который проходил на Хабре. На втором месте — телеграм‑каналы, а вслед за ними — официальный сайт и документация языка (которую многие гошники чуть ли не боготворят, настолько классно она спроектирована). Чуть меньше пользуются спросом книги.

Другие источники информации не особо популярны — тот же популярный в англоязычной среде medium оказался где‑то в хвосте (видимо, читать на русском языке отечественным разработчикам пока что привычнее и проще).

Поисковики тоже не в топе — но тут, скорее всего, дело в формулировке вопроса: где ищешь интересную информацию о Go. Как правило, именно интересную и новую информацию загуглить невозможно. Всё‑таки поисковики больше подходят для решения конкретных задач и поиска ответов на том же Stack Overflow.

А вот рекомендации от участников опроса — блоги, телеграм-каналы и подкасты, из которых они черпают информацию.

Блоги и сайты

Хабр

Dave Cheney

dev.to

Golangweekly.com

Hackernews

metanit

Stack Overflow

GeeksforGeeks

Go Golang Дайджест

Сайт lobste.rs

Курсы

Курс по Go от МФТИ на Coursera (сейчас недоступен)

Курсы от Rebrain

Курсы на Stepik

Уроки по Golang

Курсы go101

YouTube

Канал Gopher Conf UK

Плейлист Go Conferences | Golang | Gophercon

Канал defer panic

Максим Жашкевич

Конференции

goConf

Gophercon

Go SPB

Телеграм-каналы

https://t.me/goGolang

https://t.me/Golang_google

https://t.me/Golang

https://t.me/GolangStack

https://t.me/goproglib 

https://t.me/Golang_for_two 

https://t.me/Golangl 

https://t.me/gophernews

https://t.me/Golang_jobsgo

https://t.me/addmeto

https://t.me/Golanglibrary 

Подкасты

Мы обречены

Podlodka Podcast

GolangShow

Радио-T

Эффект наблюдателя

Go Get Podcast

Generic Talks

Среди тем, которые вызывают наибольшие сложности или интерес, участники опросы особенно выделили best practices и кейсы, материалы по архитектуре приложений и разработке систем, сервисов и приложений. При этом довольно большая часть респондентов считает, что уже доступных материалов и так хватает.

В Go не так уж много подводных камней. На собеседованиях специфичные вопросы по Go вызывают меньше трудностей, чем общие вопросы по Computer Science, в особенности по структурам данных. Вот вопросы по Go, о которые частенько спотыкаются кандидаты:
Использование конкатенации строк вместо strings.builder (может превратить алгоритм создания строки из линейного в экспоненциальный).
Ошибки синхронизации горутин: дедлоки, неиспользование WaitGroup и Mutex.
Ошибки при работе со срезами: неправильная передача среза в функцию по указателю или не использование опционального параметра capacity при использовании slice expression (arr[2:4:4]).

Эмиль Шарифуллин

Старший Golang-разработчик в СберМаркет Tech

Выводы

Go-комьюнити достаточно молодое — основная часть разработчиков используют язык не больше трёх лет. При этом самая большая группа гоферов — это опытные программисты с более чем 10-летним стажем.

Чтобы прокачать карьеру, рекомендуем дополнительно к Go посмотреть Python, JavaScript и Java — они часто идут в дополнение к Go или, наоборот, тянут его за собой.

Сам язык большинству участников опроса нравится, что бьётся и исследованием Stack Overflow, где у Go очень неплохие показатели: 65% loved против 34% dreaded. При этом некоторые фишки, лежащие в основе языка, разработчиков раздражают — к ним относится обработка ошибок и скудость стандартной библиотеки, которая приводит к необходимости самостоятельно писать то, что в других языках уже реализовано «из коробки».

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

В Go-скиллах при найме в большие и маленькие компании нет кардинальных различий: в любом случае нужно глубоко изучить инструмент, с которым работаешь. Отличие же в том, что в крупных компаниях есть устоявшийся процесс разработки и набор инструментов и практик, которые упрощают жизнь разработчикам. Например, у нас есть PaaS: благодаря ей код выкладывается в прод за 20 минут. 

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

Что касается будущего Go, ежедневно в языке появляются новые библиотеки и фреймворки, которые, например, позволяют добавлять GUI, писать игры и даже мобильные приложения. Однако вряд ли Go внезапно превратится в лучший язык для настольных приложений или пошатнет C++ в сфере разработки игр. У Go есть своя ниша, поэтому его популярность только продолжит расти. Вангуем, что в 2023 количество проектов и вакансий на Go будет планомерно увеличиваться (в том числе и у нас в СберМаркет Tech). 

Эмиль Шарифуллин

Старший Golang-разработчик в СберМаркет Tech

Маленький незаметный раздел для тех, кто дочитал до конца

Псс, прямо сейчас в telegram-канале SberMarket Tech мы разыгрываем билет на одну небезызвестную онлайн-конференцию по Go. Если ты ещё здесь, значит Go — определённо в топе твоих интересов. Приглашаем поучаствовать.

Источник: https://habr.com/ru/article/713190/


Интересные статьи

Интересные статьи

В этой статье речь пойдёт о некотором моём предложении для сообщества. Это вдвойне сомнительное предложение из-за того, что мой личный трип на битриксе уже закончился. Две недели безвылазно на учёбе п...
Несколько дней назад я опубликовал пост, в котором попросил читателей Хабра принять участие в опросе про отношение к собеседованиям и тестовым заданиям. В этой статье я публикую резул...
Те, кто собираются открывать интернет-магазин, предварительно начитавшись в интернете о важности уникального контента, о фильтрах, накладываемых поисковиками за копирование материалов с других ресурсо...
Возможность интеграции с «1С» — это ключевое преимущество «1С-Битрикс» для всех, кто профессионально занимается продажами в интернете, особенно для масштабных интернет-магазинов.
Согласно многочисленным исследованиям поведения пользователей на сайте, порядка 25% посетителей покидают ресурс, если страница грузится более 4 секунд.