Шаг 1: Изучите Голанг. Шаг 2: Подайте заявку на работу. Шаг 3: Получите согласие.

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

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

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

Это длинное руководство, поэтому не стесняйтесь выполнять его пошагово, добавляйте его в закладки и возвращайтесь, когда будете готовы к следующему разделу. Давайте углубимся.

То, что я предполагаю, у вас уже есть 🔗

Прежде чем мы пойдем дальше, давайте установим, что вы здесь по правильным причинам. Знание Golang полезно для вашей карьеры — зарплата Golang для разработчиков начального уровня составляет 117 тысяч долларов. Есть множество потрясающих удаленных вакансий на Голанге.

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

Если вы читаете эту статью, у вас должно быть:

  • Некоторое владение Go.
  • Интерес к кодированию.
  • Желание изучить свое ремесло всесторонне, не срезая углов.

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

Что вам не нужно 🔗

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

  • Степень в области компьютерных наук.
  • 100% владение го.
  • Глубокие знания фреймворков Go.

Желательно иметь степень в области компьютерных наук, но это дорого и требует много времени. Многие рабочие места сегодня не возражают, если вы самоучка, если у вас есть портфолио проектов, доказывающих, что у вас есть набор навыков, в котором они нуждаются. Нет степени, нет проблем.

Также не существует такого понятия, как 100-процентное знание ни одного языка программирования, не говоря уже о Голанге. Если вы подождете, пока не почувствуете себя полностью уверенным в своих навыках Go, чтобы подать заявку на работу, вы навсегда окажетесь в ловушке.

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

Наконец, вам не нужно знать фреймворки Go, по крайней мере, чтобы не начинать. Существует реальный соблазн использовать фреймворки в качестве ярлыка. Но если вы начнете с фреймворков, у вас останется:

«Целая кодовая база с горами зависимостей, и вы поймете, что почти ничего из этого не работает под капотом. Когда вы столкнетесь с проблемами (а вы столкнетесь), вы будете часами пытаться работать в обратном направлении».

- (Наш основатель Лейн, написавший несколько статей на эту тему.)

Шаг 1: Изучите основы информатики 🔗

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

Хотя на самом деле вы можете получить работу без степени в области компьютерных наук, вам все равно нужны знания, которые дает степень в области компьютерных наук. (Вы просто получите это за долю времени и стоимости.)

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

Архитектура 🔗

Возвращайтесь в колледж, вам нужна степень в области архитектуры, прежде чем вы сможете программировать на Golang!

Извините, неудачная шутка. Я не мог остановиться. При этом архитектура с точки зрения серверной разработки не так уж отличается от физической архитектуры, как вы могли бы предположить. Речь идет о том, как вы проектируете систему с различными компонентами, которые могут взаимодействовать друг с другом и хорошо работать.

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

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

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

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

Объектно-ориентированное программирование 🔗

Нет, не то самое ООП.

Объектно-ориентированное программирование (ООП) — это модель компьютерного программирования, используемая во многих языках, включая Python. Идея состоит в том, что «объекты» могут содержать данные и код.

Классы и объекты используются для моделирования концепций реального мира и организации кода. Когда вы используете ООП, у вас есть простые, многократно используемые фрагменты кода.

Как разработчик Golang, вы должны понимать четыре ключевые концепции ООП: абстракцию, инкапсуляцию, наследование и полиморфизм.

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

Go не является ООП как таковым, но бывают случаи, когда имеет смысл заставить Go вести себя как таковое. Но ради этого раздела я рекомендую изучать ООП с помощью родного для ООП языка, такого как Python. У нас есть трехминутный демо-учебник, который покажет вам, как использовать ООП и как это работает.

Алгоритмы и структуры данных 🔗

Структуры данных — это то, как вы организуете и храните данные в памяти. Алгоритм — это просто хороший набор инструкций для выполнения над этими данными. Они идут рука об руку, потому что вы почти всегда будете использовать их вместе. Например, алгоритму сортировки потребуется структура данных для хранения данных. Насколько хорошо работает алгоритм, зависит от того, какую структуру данных вы выберете.

Опять же, это основы, которые вы можете знать на любом языке, поэтому я рекомендую вам использовать учебник подобный этому, чтобы попрактиковаться в кодировании вашего алгоритма и выборе структур данных. У нас также есть всеобъемлющий курс по алгоритмам на Boot.dev, который проведет вас через алгоритмы путем фактического создания демонстрационного продукта и сопутствующего курса по структурам данных.

Криптография 🔗

Общепризнанная истина заключается в том, что компании, владеющей огромным количеством объявлений о вакансиях разработчиков на Голанге, должно быть не хватать десяти других вакансий, таких как DevOps, информационная безопасность и ИТ.

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

Совет для профессионалов: убедитесь, что вы полностью описали криптографию, когда исследуете ее, иначе вы просто получите кучу биткойнов.

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

Шаг 2. Освойте основы кодирования 🔗

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

Вот основные навыки кодирования, которые вы должны ожидать, чтобы получить работу в качестве разработчика Golang. Вы можете заметить, что все они не зависят от кода — они верны независимо от того, программируете ли вы на Python, Javascript или Go.

Пишите хороший, чистый код 🔗

Является ли ваш код эффективным и действенным? Имеет ли это смысл для других людей? Следуете ли вы лучшим практикам?

Лучший способ сделать это — запросить обратную связь и предложить обратную связь. Процесс редактирования и редактирования вашего кода — это самый быстрый способ улучшить его. Публикуйте вопросы на StackOverflow и ищите вопросы, на которые вы можете ответить. Объединитесь с другом, чтобы предложить взаимное коллегиальное редактирование.

Отладка 🔗

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

  1. Не взрывается. Ошибки и предупреждения могут очень быстро раздражать, особенно если у вас нехватка времени или стресс. Развивайте любопытство, чтобы узнать, что не так. Узнайте о самых распространенных ошибках и о том, как их избежать.
  2. Понимание обратной связи. Большинство разработчиков Go используют инструменты отладки, такие как Delve или GDB. Я также рекомендую научиться использовать оператор печати для отладки. Вы также можете научиться использовать пакет Log для создания пользовательских журналов для вашего кода.
  3. Ищу помощь. Привыкайте просматривать группы StackOverflow, Reddit и Discord, чтобы искать ошибки и способы их решения другими людьми.

Другой язык кодирования 🔗

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

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

Шаг 3. Изучите бэкэнд-технологии и ознакомьтесь с инструментами 🔗

До сих пор мы рассмотрели основы информатики и основы кодирования. Они полезны для любой должности в Golang, на которую вы можете претендовать. Теперь давайте посмотрим на особенности бэкенда, которые будут более ориентированы на то, чтобы стать разработчиком Golang.

API 🔗

Как разработчик Golang, вам необходимо знать принципы проектирования RESTFul, обработку запросов и ответов, механизмы аутентификации и авторизации, а также интеграцию сторонних API.

Продемонстрируйте свое мастерство в этом навыке, создав симпатичный финансовый API с помощью этого руководства. В конце вы коснетесь:

  • CRUD
  • Аутентификация
  • MongoDB (к которому мы вернемся через мгновение)
  • Asp.net

Базы данных SQL и NoSQL 🔗

Как разработчик Go, вы будете создавать вещи, которые затрагивают множество баз данных. Они могут быть дружественными к SQL, например, SQLite и MySQL. Они могут хранить данные в другом формате, таком как MongoDB, Redis или PostgreSQL.

Я рассказываю об обоих в своей статье о лучших бэкенд-технологиях. Чтобы доказать свое мастерство в этом, я рекомендую создать приложение, использующее базу данных NoSQL, и приложение, использующее базу данных SQL. Ознакомьтесь с вариантами и выберите базу данных с умом. Уметь объяснить, почему.

Кубернетес 🔗

Иногда пишется «k8s». К сожалению, не произносится «Кейтс». K8s — это популярная платформа оркестрации, которую разработчики используют для развертывания и управления контейнерными приложениями в масштабе.

Я ненавижу жаргон, так что это означает, что люди используют Kubernetes для одновременного управления множеством контейнеров. Здесь «контейнер» означает просто облегченную версию компьютерной программы, которая может работать на разных компьютерах.

Мне нравится это руководство, в котором рассказывается, как настроить среду разработки для Kubernetes и внести изменения в микросервис Golang.

Облачная среда 🔗

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

Сейчас во многих вакансиях упоминается, что вы должны быть знакомы с AWS, GCP и/или Azure. На сегодняшний день есть только облака, принадлежащие таким компаниям, как Google, Amazon и Microsoft. Это хорошо, потому что это означает, что эти компании инвестируют в то, чтобы помочь вам научиться использовать их инструменты. Так что вы часто найдете отличные учебные пособия на веб-сайтах компаний, например, этот от Oracle.

Очереди сообщений 🔗

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

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

Шаг 4. Докажите, что вы умеете делать 🔗

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

Чтобы получить работу разработчика Golang, вам необходимо продемонстрировать следующие «мягкие» навыки:

  • Общение. Вы можете общаться с людьми? Можете ли вы объяснить сложные темы простым людям? Потому что вы будете делать много этого в своей работе. Лучший способ доказать это — четко и подробно объяснить свои мысли, когда вы проводите интервью на доске.
  • Решение проблем. Это почти каждое объявление о вакансии по той простой причине, что как разработчику Golang люди будут обращаться к вам за решением многих проблем, а не только тех, которые относятся к вашей сфере деятельности. .
  • Нестандартное мышление. Труднее доказать наличие «нестандартного мышления». Я рекомендую вам практиковать логические головоломки и загадки. Это может быть очень весело!
  • Проверки кода. Многие компании просят вас принять в них участие. Присоединяйтесь к сообществам программистов и предложите людям объединиться для этого.
  • Обсуждение общей картины. Вернитесь к этим основам. Можете ли вы внести свой вклад в общую стратегию компании? Можете ли вы разумно порекомендовать различные архитектурные сооружения? У вас есть мысли о криптографии? Большинство компаний не хотят, чтобы вы были винтиком в машине * они хотят, чтобы люди, обладающие достаточными общими знаниями в этой области, выявляли более серьезные проблемы и знали, как их исправить, а не просто следовали инструкциям все время.
  • Умение хорошо брать интервью: Быть ​​скромным и уверенным. Вот к чему это сводится. Это легче сделать, если вы знаете, о чем говорите, поэтому я рекомендую как можно больше готовить вопросы для интервью на таких сайтах, как StrataScratch. Это поможет вам быть более уверенным в своих знаниях.

Шаг 5. Портфолио и вакансии 🔗

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

Последний шаг — создать портфолио и разумно подать заявку на работу.

Соберите свое резюме и портфолио 🔗

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

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

  • Иметь хорошо написанные тесты
  • Иметь чистые и хорошо организованные кодовые базы
  • Подробные README.md файлы с описанием того, что они делают и как их использовать.
  • Займись чем-нибудь интересным. Чем интереснее ваш проект, тем больше вероятность, что вы привлечете внимание менеджера по найму.

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

Применяйте с умом 🔗

Одна из основных причин, по которой вы не можете устроиться на работу разработчиком Golang? Вы используете технику распыления и молитвы.

Гораздо лучше подавать заявку на одну вакансию каждую неделю и делать ее идеально, чем подавать заявку на десять вакансий каждую неделю, но наполовину.

Чтобы подать заявку с умом, вы должны быть:

  • Проведение исследования компании. Будьте в курсе объявлений компании, разработок, новых продуктов и пресс-релизов. Это особенно важно для компаний, использующих Golang.
  • Будьте в курсе новых технологий. Программирование — быстро развивающаяся область; Go — это новый язык, который быстро развивается. Вы можете произвести впечатление на менеджеров по найму, просто зная о последних модных словечках больше, чем ваши коллеги.
  • Соблюдайте гигиену сети. Это позор, но большая часть успеха в работе зависит от того, кого вы знаете, а не от того, что вы знаете. Присоединяйтесь к сообществам и научитесь заводить друзей. Посмотрите, как вы можете помочь с проверками кода, отзывами, представлениями или помощью по отладке. Тогда посмотрите, может ли кто-нибудь помочь вам.

Как устроиться на работу разработчиком Golang: попрактикуйтесь, подайте заявку и получите признание. 🔗

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

Однако изучение Golang выходит далеко за рамки запоминания фреймворков и копирования кода. И это больше, чем запоминание четырех классов ООП и различных типов алгоритмов. Вам необходимо иметь реальное понимание этих концепций и применять их в реальных проектах с реальным кодом.

И подача заявки выходит за рамки нажатия кнопки «Легко подать заявку» в каждом посте LinkedIn, с которым вы сталкиваетесь. Чем больше времени вы потратите на исследования, практику и подтверждение навыков межличностного общения, а также на создание портфолио, которое докажет, что вы можете делать то, о чем говорите, тем выше будут ваши шансы.

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

Нашли проблему в этой статье?

Сообщить о проблеме на GitHub

Первоначально опубликовано на https://blog.boot.dev 20 марта 2023 г.