Мова високих зарплат. Що має знати Senior Golang Developer і кому варто задуматися про перехід на цей бік

Це 12-й випуск проєкту «Що має знати Senior», і сьогодні ми будемо розбирати вимоги до Senior Golang Developer. В Україні досвідчені розробники, які використовують мови Go та Scala, отримують найвищі медіанні зарплати. Якщо загалом українські Senior-розробники отримують біля $4700, то Go-сеньйори можуть розраховувати на медіану в $6000.

Тож я знайшов 25 вакансій для Senior Golang Developers на DOU, Djinni, LinkedIn, Indeed та Robota.ua і проаналізував їх усі. Як скоро ви станете сеньйором, якщо перейшли в Golang з інших напрямів бекенду? На які технології слід робити ставку? Чи потрібна Senior Golang Developer профільна освіта? Відповіді на ці запитання ви дізнаєтесь із цієї статті.

Вакансії, які потрапили в дослідження (настисніть, щоб розгорнути):

DOU — 4IRE, AUTODOC, Fintech Farm, Innovation Group, Ixilix, NCube, Newxel, OneDiscovery, SoftConstract Ukraine, Vodworks, [Coreteka]

Djinni — Adaptiq, A-LISTWARE, ApomSolutions, IQDispatch, GlobalLogic, Hellotickets, Hiveon, Transcenda, Veido

LinkedIn — EPAM Systems, Innovecs, SoftServe

Indeed — Ciklum

Robota.ua — Sigma Software

Досвід роботи

Досвід роботи бекенд-розробником

Досвід роботи з Golang

Особливістю Senior Golang Developer є те, що роботодавці часто не вимагають, щоб весь досвід був здобутий саме з Go. Вам може вистачити навіть року розробки на Go, проте очікують, що ви маєте 3-6 років досвіду в бекенд-розробці.

Освіта

32% вакансій вимагають профільний диплом бакалавра. Це досить високий показник для України. Від Senior DevOps Engineer профільну вищу освіту очікували в 24% вакансій, а в інших спеціалізаціях ще менше.

Комп’ютерні науки

Розуміння мікросервісної архітектури є однією з базових навичок, які потрібні Senior Golang Developer, хоча на Go пишуть і моноліти.

Мови програмування

Зазвичай я не додаю основну мову програмування в дослідження, тому що необхідність її знання є очевидною. Але цього разу хотів перевірити гіпотезу, що будь-який бекендник може прийти в Golang на сеньйорну позицію та перевчитися на роботі. Ця гіпотеза виявилась хибною. Практично всі вакансії Senior Golang Developer вимагають знання Go.

Технології персистентності

AUTODOC та Ixilix зазначили серед вимог ClickHouse. Ця DBMS народилася як експеримент російської компанії Yandex, а зараз є вільним програмним забезпеченням, доступним під Apache License 2.0.

Далі пропоную подивитись декілька графіків без моїх коментарів. Висновки ви можете зробити самостійно.

Message brokers

Мережеві технології

Фреймворки

Хмарні технології

Контейнеризація

CI/CD

Infrastructure as Code

Операційні системи та супутні технології

Контроль якості

Інші технології

Предметні галузі

Менеджмент

М’які навчки

Рівень англійської

У жодній вакансії немає вимоги знати англійську на рівні Advanced. Згідно із зарплатним віджетом DOU, зростання рівня англійської з Intermediate до Upper-Intermediate корелює зі збільшенням медіанної зарплати з $5350 до $6000 (для Senior Golang Developer). Але подальше вдосконалення до Advanced нічого не дає. Медіана таких спеціалістів навіть трохи менша, а саме $5950.

Цікавинки, знайдені у вакансіях

  • ApomSolutions шукала фахівця для стартапу на ранній стадії та пропонувала винагороду до $8000.
  • Компанії Adaptiq та A-LISTWARE пропонували зарплати до $7000 для фахівців у цій галузі.
  • У стартапі IQDispatch овертайми оплачуються за ставкою 1,5x. Потрібен досвід з такими технологіями, як NATS. Досвід з Vue 3 буде плюсом.
  • Для отримання роботи в EPAM Systems, Innovecs та OneDiscovery буде плюсом участь у проєктах із відкритим вихідних кодом.
  • GlobalLogic шукає розробника для одного з найбільших провайдерів швидкісного інтернету в США.
  • Fintech Farm оцінить, якщо ви вмієте користуватись інструментами ШІ для розробки.
  • Vodworks працює над рекламною платформою, яка має 6 мільярдів показів на день. Для отримання цієї роботи буде достатньо року досвіду з Golang, якщо ви маєте п’ять років загального стажу роботи програмістом.

Думки технічних експертів

«Мені дивно, що люди неохоче переходять на Go». Ігор Лопушко, Software Architect

«Golang — досить молода мова, тому дуже рідко трапляється, що це єдина мова програмування, з якою працював Senior Developer. Крім того, Go є досить складною як для першої мови програмування. Наприклад, в ній немає типового успадкування, як у таких класичних мовах, як-от C#, Java тощо.

В мене понад 15 років досвіду в програмуванні. Я перейшов у Go з .NET — зацікавило те, що Go використовують компанії на кшталт Uber. Тим, хто хоче перейти в Golang, можу порадити починати з синтаксису, навчальних матеріалів з мови, але потім дивитись вакансії та намагатись підлаштуватись під вимоги у них.

Go — це більше мова бекенду, на відміну від .NET та Java, де спектр проєктів може бути ширшим. Тож важливо опанувати все, що стосується бекенду, починаючи з того, як правильно будувати архітектуру бекенд-застосунку. Наприклад, Clean Architecture.

Далі бази даних. Дуже поширеними серед Go-розробників є нереляційні бази даних, зокрема MongoDB, але реляційні все ще залишаються базою і важливо їх знати. Треба розуміти, як працює Kubernetes і Docker, адже зараз Go активно використовують у високонавантажених проєктах.

Кілер-фіча Go — це багатопотоковість, горутини та все, що з ними пов’язане. Для Senior важливо знати різні патерни роботи з ними, вміти їх синхронізувати. Є загальні академічні знання та патерни з багатопотоковості, але коли ви починаєте робити це на Go, все може виглядати по-іншому. Треба розуміти специфіку цієї мови програмування. Не всі примітиви тут доступні. Наприклад, семафорів з коробки в Go немає, утім є способи розв’язувати відповідні задачі. Все можна зробити, але потрібно думати та шукати. І тут знадобиться досвід, який відрізняє спеціаліста рівня Senior.

Мені дивно, що люди неохоче переходять на Go. У компанії, в якій я зараз працюю, понад 30 відкритих вакансій на Go. Дуже складно знайти Go-розробників, їх вкрай не вистачає».

«Переходити на Go варто з PHP, Python, Node.js та Ruby». Ярослав Характерник, Senior Golang Developer

"Коли у вас вже є досвід серверної розробки, то перейти на Go доволі просто. Треба прочитати статтю на DOU, прочитати одну-дві книжки з Go, пройти один-два безкоштовні курси з Go і зробити простий пет-проєкт (звертайтесь за ідеями, якщо треба). У досвідчених розробників зазвичай є пет-проєкт, який можна довести до ладу, замовити дизайн, верстку, переписати на Go, налаштувати CI/CD, опублікувати у відкритий доступ, дати покритикувати спільноті (наприклад, тут: GolangUA) і додати в своє резюме Middle Golang Developer.

Для розвитку до рівня Senior Golang Developer, звісно, потрібно цілеспрямовано докладати зусилля. Розвивати власний пет-проєкт далі, а в процесі досліджувати готові рішення та вибирати найоптимальніше. За можливості оформлювати результати досліджень у статті, щоб отримати додаткову критику від спільноти.

Так робив я. На початку 2018 року я переходив з PHP на Go з трьох причин: цікавіші проєкти, підвищення кваліфікації та фінансова мотивація. На Go тоді починали розробляли переважно високонавантажені системи, я хотів у цьому краще розібратися. Медіана для Senior PHP Developer в грудні 2017 року була $3000, а для Senior Golang Developer — $4500.

Переходити на Go варто з PHP, Python, Node.js та Ruby. На Go вищі винагороди, що буде вас мотивувати зростати далі, а також справді потужний стандартний інструментарій: тести, бенчмарки, форматування коду, швидка компіляція. Програма компілюється в маленький бінарник, без потреби тягнути всі залежності в docker-image.

Працюючи з Go, ви можете помітити жахливий код. Або проєкт починав самоучка, який перейшов зі скриптової мови програмування та полінувався дослідити, як робити правильно. Або ж це другорядна мова на проєкті й відповідне ставлення.

Про багато корисних інструментів мені розповіли колеги, які встигли попрацювати з Go в різних компаніях. Тому коли ви тільки переходите на Go й маєте вибір з оферів, переглядайте LinkedIn-профілі потенційних колег на досвід з Go у попередній компанії. Ще багато корисних інструментів для розвитку ви знайдете в популярних Go-проєктах з відкритим кодом та регулярно переглядаючи тренди з Go на GitHub.

Ось ще список інструментів, які використовую в повсякденній роботі:

  • Тестконтейнери, один раз налаштував й забув, дуже корисні, коли локально потрібно протестувати одразу кілька мікросервісів, які працюють з БД.
  • GoMock. Рекомендую дослідити та почати використовувати.
  • З gRPC та Swagger маєте добре розбиратись та вміти налаштовувати, це стандартні інструменти для роботи з мікросервісами.
  • З gRPC-Gateway бажано розбиратись, а про наявність gRPC-web хоча б знати та розуміти, коли варто використовувати".

👍ПодобаєтьсяСподобалось11
До обраногоВ обраному12
LinkedIn



23 коментарі

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

Go прекрасний, але швидкий перехід (щось складніше ніж gin handler з sql вседерині) з PHP на Go це міф.

на PHP можна зробити щось складніше за сімофні чи ларавел контролери?
нафіг вам той gin, навіщо ви його всюди тягаєте, що він дає такого чого немає в стандартній бібліотеці?

Ключове питання а нащо переходити з .NET на Go якщо зарплати ті самі? — овичнка вЫделки не варта.. Всі розмови про те що десь щось швидше чи краще працює ніж на .NET — це пустопорожня балаканина, бо performance у 99% кейсів впирається не стільки в мову програмування, скільки в гавнокод чи гавнодизайн

А розкажіть що ви вважаєте кіллер фічами Golang ? Бо зараз «легку багатопотоковість через внутрішній менеджер» завозять в основні відомі сталі мови програмування. Якщо вийде реалізувати це не гірше по перфомансу ніж у Go, що у нього залишиться для конкуренції з іншими мовами ?

Непогано, але (як на мене) не є чимось унікальним. І не є gamechanger’ом загалом.

Простота і швидкість в опануванні. Швидкодія самої мови. Колись для мене це були визначаючі чинники і через це я на го перевів свою команду з пхп.

Виходячи з цього можем мати і дві проблеми — швидке збільшення кількості розробників і просідання зарплат (наразі такого немає, бо мабуть крім самої мови є ще ряд додаткових скілів, які треба мати для роботи в цій парадигмі), проблема з реалізацією складних архітектур.

Друге. Дійсно треба мати великий багаж додаткових скілів. Якщо по ПХП співбесіда могла бути пів години саме про мову, то тут 10 хв і по мові пройшлийсь.

ну чесно я не знаю жодного прикладу де завозять настільки простий спосіб роботи з багатопотоковими програмами. Зазвичай це окремі бібліотеки з складнішою реалізацією та витрачають більше ресурсів

Простота це дійсно серьйозна перевага. Свого часу Basic, Python, PHP, JavaScript саме так завоювали свій шмат ринку.

я думаю, що немає впринципі кілєр фіч серед мов. скоріш є фічі мови, за допомогою яких краще обрати в конкретній ситуації одну мову перед іншою.

go фічі — простота. більш простого синтаксису я не знаю. дуже багато чого є в самій мові без окремих бібліотек, що дає можливість написати мікросервіс без залучення «жирних» бібліотек. ну і звичайно багатопотоковість

в інших мовах є свої переваги. комусь подобається коли багато цукру в мові (що точно не про go) або коли є один фреймворк на всі випадки життя (теж не про go). І відповідно кожен обирає свою мову під конкретну ситуацію.

Екосистему типу фреймворків чи підходів (наприклад для функціональних мов) загалом теж можем рахувати. Бо вона невідривна від мови.

Низький поріг входження, легко вивчити синтаксис.
Повна специфікація мови лише 50 сторінок.
Тестування, бенчмаркінг, форматування коду, базовий лінтінг вбудовано у мову.
Релізи Go чітко двічі на рік.
Backward-compatibility: програма, яка компілюється на Go 1.1 буде компілюватись з Go 1.22.
Можна збирати програму на будь-якій архітектурі під будь-яку архітектуру та ОС.
Програма — це просто єдиний бінарник, тому її легко поширювати.

Робота з к8с/хелм

останнім часом чув таке що вакансій дуже мало та у більшості це блокчейн та крипта

Щодо крипти то це конкретний факт, а не чутки якщо подивитись на вакансії jobs.dou.ua/...​acancies/?category=Golang А так вакансій відносно вже не так вже і мало, половина від конкуруючих бекенд стеків. Тобто крипта крокує ринком, усе ще.
Сам сенс не в мові, мова така собі — якщо обирати проміж С++ 23 чи Rust то я би не обирав, бо нема потоків є збірка сміття, книги та документація дуже далека від конкуруючих стеків тощо. Головна перевага мови в тому, що вона зроблена та підтримується корпорацією Google, тобто : маркетинг, маркетинг та ще раз маркетинг.

Когда уже уйдет в небытие эта привязка к языкам?
Важно то какие задачи ты умеешь решать, понятно что под конкретные задачи необходимо знать конкретные языки программирование, но первичны все же задачи.
Я могу выучить новый язык программирования за неделю, но это не значит что я смогу выполнять серьезные проекты на нем.

как говорят, дьявол кроется в деталях.

Когда уже уйдет в небытие эта привязка к языкам?

Никогда — это метод технологической конкуренции на рынке. Технологии разработки — это бизнес, сам по себе. Иначе никто бы не менял скажем : COBOL, Algol и PL/1, концептуально программирование на них в общем тоже самое что и современное, только сделаны масса улучшений и упрощений для решения распространенных простых ошибок программирования и типичных рутинных задач. В целом же технология разработки ПО CLDC, по сути своей остается прежней.

Я могу выучить новый язык программирования за неделю, но это не значит что я смогу выполнять серьезные проекты на нем.

Ну обычно совсем наоборот, но в целом чтобы изучить любую технологию или что более важно доменную область, обычно нужно около года.
Эта статья тоже имеет коммерческий смысл, ребята предлагают платные консультации. Еще бы книги написали вроде: Кена Томпсона, а еще луше в стиле Тома Кайта.

Перейшов на Go з С++. Вже пройшло 5 років, а назад не тягне.

Якщо комусь треба консультація щодо відкритих проектів, в які контриб’ютити для набуття досвіду, пишіть.

Дякую за дослідження, корисно

В кого є бажання перекваліфікуватись на Go то проводжу консультації за донат в 1024 гривні ($25)
Фахівців Front-end також розглядаю

Підписатись на коментарі