В этой статье я делюсь, почему рассматриваю язык Go для возможного дополнения или замены текущего стека. Изучением языка занимаюсь в удовольствие и, в какой-то степени, для снятия тревожности. Пока это скорее эксперимент, чем попытка сменить или расширить стек.
Введение
На данный момент я уже более года занимаюсь фронтенд-разработкой. Сейчас прохожу стажировку в одной компании. По стечению обстоятельств, раскрывать которые я не считаю нужным, я задумалась о том, что, возможно, фронтенд все же не окончательный выбор даже на текущий момент. Всего два месяца назад я планировала пути укрепления текущего стека и закрепления в крупных компаниях в качестве фронтенд-разработчика. Но на данный момент я решила дать себе небольшую передышку от постоянного углубления в JS и месяц посвятить изучению нового языка. Свой коммерческий путь я начала с бэкенда и он всегда оставался в моем сердечке, хоть я и недолго работала как бэкенд-разработчик. Сравнив разные параметры языков, я остановилась на Go.
Как я выбрала Go
Перед тем, как выбрать язык для своего эксперимента, я выбирала направление. Мне также всегда была симпатична мобильная разработка, но в анамнезе всего несколько небольших (и весьма кривых, честно признаться) учебных проектов. Этим летом я немного познакомилась с Kotlin и решала на нем задачки на Leetcode.
Мне понравился язык, даже очень понравился, но углубляться в архитектуру Android у меня желания было мало. Оно не появилось и сейчас. Поэтому, хоть я с легкой завистью поглядывала на спрос разработчиков этого стека, все же решила, что не в этот раз. Разумеется, я рассматривала и разработку под iOS, но пробежавшись глазами по разным roadmap, почитав пути в том числе и сменивших стек, мое сердце так и не застучало быстрее.
Менять фронтенд на фронтенд в другой среде не захотелось, а языки хоть и любопытны, но вагон всего, что необходимо изучить для начала, меня оттолкнул. Подумала — значит, не мое. У меня также был опыт обучения нейросеток в учебных целях, но по итогу это был один из нелюбимых предметов в университете, несмотря на потрясающего преподавателя. Тоже не мое, ML-разработчиком пока не стать.
Посмотрела в сторону бэкенда. Немного по нему даже скучала последние месяцы, когда болтала с бэкендерами. Родной и милый сердцу C#, давно замененный на JS, казался таким знакомым и покрытым дымкой девячьей памяти, но душа требовала нового, поэтому оставила как запасной вариант. Честно признаться, меня на текущем стеке немного отталкивает небольшое количество вакансий в РФ в крупных компаниях (и уровень зарплат в средних, соответственно, так как спрос выходит небольшой). Поэтому мне в любом случае, чтобы чувствовать себя свободнее, пришлось бы расширять стек React (и, возможно, придется). Но за последнее время от JS я сильно устала, мысль об изучении очередного фреймворка отталкивала.
Мне было важно, чтобы в крупных компаниях в РФ были возможности с выбранным языком пройти стажировки/обучения/просто однажды к ним попасть. Подумала, что, наверное, на языки, на которые готовы обучать и нанимать даже студентов, скорее всего, есть большой спрос.
Затем я почитала статьи на Хабре вроде этой и посмотрела оплату по языкам. По моей логике, чем больше зп на языке, тем скорее всего сложнее найти специалиста на этот язык (по разным причинам).
Затем я просмотрела Hh.ru по разным языкам на джуна и мидла и смотрела следующие значения:
- как много вакансий для джунов
- какие примерно зп чаще всего указывается
- что требуется для джуна/мидла в большинстве вакансий
- есть ли вакансии, например, на Кипре или в другие страны (просто было любопытно)
Я вычеркнула из списка возможных языков Python и PHP и занесла их в слова-исключения. Оба языка пробовала в учебных целях и мы с ними абсолютно не подружились, возвращаться к ним не хотелось ни при каких условиях.
К этому моменту из рассматриваемых языков у меня остались: Java, C++, C#, Go, Scala.
Вспомнила, что Java тоже трогала, когда первый раз в университете писала мобильное приложение. Вычеркнула.
На C++ тоже писала лабы еще на первых курсах. Мысленно потерла многократно простреленное колено и с ностальгическим вздохом вычеркнула.
Scala - темная лошадка для меня. Что-то где-то слышала, никогда не видела и даже не встречала лично людей использующих этот язык. Решила пока взять в список запасных.
И того на скамейке запасных двое игроков: C# и Scala, а из оставшихся претендентов только Go.
Ассоциации с этим языком были приятные: многочисленные интервью людей, упоминающих Go как основной или промежуточный язык, Влад Тен (весьма мне симпатичный), по спросу и зарплатам все чудесно (есть вакансии для джунов даже на хабр.карьере), в крупных компаниях много где используется.
Решила попробовать.
На работе у меня есть возможность смотреть прекрасный внутренний курс лекций по этому языку и в целом бэку на нем, но он рассчитан на разработчиков с более серьезным опытом в бэке, чем у меня, поэтому я активно пользуюсь другими материалами. Для знакомства с синтаксисом параллельно я прохожу курс здесь: Основы Go.
Пользуюсь регулярно сайтом для запуска Go в браузере. И в скором времени думаю добавить задачи на leetcode.
План
В профессиональной деятельности у меня сейчас некоторое затишье перед большими событиями, поэтому около месяца я могу уделить на изучение чего-то нового и попутно на заглушение своей тревоги. Подобный срок у меня был, когда я решила познакомиться с Kotlin. Задача в принципе такая же: посмотреть нравиться ли мне язык и хочу ли я связывать с ним свою дальнейшую профессиональную деятельность.
В подзадачи входит:
- Закончить курс на хекслет до 09.04
- Пройти курс Go: Настройка окружения до 09.04
- Закончить внутренний курс с работы до 10.05
- Прорешать минимум 10 easy + 20 medium задач с leetcode на Go до 17.04
- Податься на стажировку в Тинькофф
- Податься на стажировку в Яндекс до конца апреля
- Написать проект, подходящим под примерное тестовое (точные требования сформулирую чуть позже) до конца апреля
- Использовать echo в проекте
- Развернуть проект на Docker
Изучите Go на Хекслете Пройдите наш трек «Веб-разработка на Go », чтобы узнать основы одного из развивающихся языков для бэкенд-разработки