Мова високих зарплат. Що має знати Senior Golang Developer і кому варто задуматися про перехід на цей бік
Це
Тож я знайшов 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, проте очікують, що ви маєте
Освіта
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 хоча б знати та розуміти, коли варто використовувати".
23 коментарі
Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.