golang

Лёгкости перехода: четыре разработчика о том, почему они перешли на Go

  • суббота, 2 ноября 2024 г. в 00:00:10
https://habr.com/ru/companies/kuper/articles/854586/

Микросервисная архитектура — это новый черный: кажется, уже все бигтехи пилят монолиты на сервисы и и ищут гошников в штат. Спрос рождает предложение — всё больше ребят переходят с других бэкенд-языков на Golang. 

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

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

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

У меня был опыт работы на С++ и на Ruby. В C++ мне не хватало гибкости, свободы и легкости написания кода, из-за статической типизации и постоянного контроля выделенной памяти. В Ruby эти плюсы присутствуют, но приносят дополнительные проблемы по мере роста приложения. 

Хотелось попробовать что-то модное и молодёжное, но при этом не терять в гибкости. Go подошёл под мой запрос идеально. Бонусом он еще и компилируемый — по этому я уже успел соскучиться. 

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

Антон Шилин

Go-разработчик в Купер.тех

У меня было 7 лет опыта работы джавистом, и я просто устал от гиперинжиниринга в Java — не нравилась сама инженерная философия этого языка. Понял, что нужно куда-то двигаться. Мне попался Go, и два раза очень меня удивил.

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

Во второй раз — когда я увидел, что в Go используется метод для перевода символов в int atoi(). И я прям вспомнил, как я был молодым щеглом, писал на C, и там тоже используется этот метод. И я подумал — как же хорошо, и понял, что мне уже абсолютно неинтересно возвращаться обратно в Java-мир.

А дальше был глас судьбы — меня позвали на собес по Go (я сказал, что не гoшник, а меня всё равно позвали), а я его ещё и прошёл. Так всё и случилось.

Александр Карпов

Go Team Lead в Купер.тех

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

Когда началась популяризация Go в русскоязычном сегменте, решил попробовать. Понял, что там много непривычных для меня подходов, и мне это нравится. Я продолжал работать на проектах с Java и Ruby, но всё чаще ловил себя на том, что на Go это было бы удобнее. Потом Купер сделал мне оффер, и я уже окончательно перешёл на Go.

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

Senior Go-разработчик в Купер.тех

Если сравнивать с языком, на котором до этого писал, какие плюсы/минусы видишь в Go?

У меня был почти весь фарш: и С, и Ruby и JavaScript и Java, и Scala, и Kotlin. 

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

Думаю, что для джунов Go — лучший выбор, потому что он простой, относительно Java, С++ и других. В нём легче писать многопоточные программы, потому что там есть мощные примитивы и модель памяти, которая гораздо проще, чем в той же Java. 

Один из минусов Go по сравнению с Java и Kotlin — чуть больше придётся писать руками, но, к счастью, у нас есть кодогенерация и много хороших библиотек, которые помогут с этим справиться.

Максим Завырылин

Senior Go-разработчик в Купер.тех

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

Но вот тесты на Go писать не очень удобно, в отличие от Ruby: много заморочек, слишком сложные и длинные. В Ruby ты в одну строку можешь сделать очень много действий, и если что-то пойдёт не так — задолбаешься разматывать клубок в поисках ошибки. И вот если ты Ruby разработчик, который устал разматывать вот эти клубки непонятных однострочников, которые, размазаны по слоям всяких паттернов, то в Go сюрпризов таких никогда не будет, ты всегда будешь знать, если где-то что-то отвалилось, точное место, где это отвалилось и почему оно отвалилось. 

И в этом плане Go понятнее, спокойнее и легче. Мне очень нравится, что код на Go можно читать и писать без подсветки синтаксиса.

Антон Шилин

Go-разработчик в Купер.тех

Открывает ли Go новые карьерные возможности?

Go сейчас практически везде, где пишут какой-то бэкенд: что-то, да будет на нём написано. Поэтому, думаю, что опыт работы на Go — классный пункт резюме.

Максим Завырылин

Senior Go-разработчик в Купер.тех

Думаю, все, когда выбирают язык программирования, оперируют двумя основными параметрами: востребованность и зарплата. И вот, мне кажется, Go сейчас прямо идеально подходит по этим двум параметрам. 

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

Антон Шилин

Go-разработчик в Купер.тех

Сказать, «работаешь на Go, значит гребёшь деньги лопатой» — соврать. Зарплата зависит от твоих скиллов — как менеджерских, так и инженерных. Но если смотреть по российскому рынку — у гошников всё хорошо.

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

Senior Go-разработчик в Купер.тех

Кому ты бы рекомендовал перейти на Go?

Любому, кто пишет на PHP, Ruby и Python, я бы советовал изучить Go, чтобы расширить кругозор и «отвести душу»: написать что-то в удовольствие, не громоздкое, со всеми нужными инструментами. Всё для эффективности разработчика сделано уже прям вот создателями языка.

Максим Завырылин

Senior Go-разработчик в Купер.тех

Я бы советовал перейти на Go таким, как я — кто пишет на Ruby и скучает по строго типизированному и компилируемому языку. 

И если у кого-то был в прошлом любой С-подобный язык, и они по нему скучают, думаю, что Go тоже зайдёт. 

А вот Ruby-разработчикам «по любви» я бы Go не советовал: в Ruby можно написать две команды через точку и случится магия, а вот в Go магии нет, но есть максимум понятного кода.

Антон Шилин

Go-разработчик в Купер.тех

Когда к нам в команду потребовались go-разработчики, я стал активно рекомендовать своим знакомым пересесть на Go.

Я работал с переходниками с PHP и Java внутри команды, за первую неделю они писали маленький пэт-проект. За вторую — докидывали к проекту логи и метрики. И, начиная с третьей недели, они уже писали рабочие микросервисы, делали фичи. 

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

Александр Карпов

Go Team Lead в Купер.тех

Переходить или не переходить на Go — решать вам, а мы будем рады, если вы поделитесь в комментариях своим мнением, опытом, или, может быть, советами :)

Tech-команда Купера (ex СберМаркет) ведет соцсети с новостями и анонсами. Если хочешь узнать, что под капотом высоконагруженного e-commerce, следи за нами в Telegram и на YouTube. А также слушай подкаст «Для tech и этих» от наших it-менеджеров.