27 января

«Go востребованный язык, поэтому после успешного прохождения курсов можно зарабатывать от 600$ и выше» - Дима Кологривов, Lead Backend разработчик и преподаватель в TeachMeSkills

Эффективный, простой, универсальный — язык программирования Go вошел в тройку самых востребованных языков в 2020 году согласно опросу Stack Overflow. Пообщались с истинным ценителем Golang и гуру Backend-разработки Димой Кологривовым и узнали, как все будет здорово и великолепно, если освоить Go.



Расскажи о себе, сколько лет ты в профессии и какой язык программирования у тебя был первым?

В продакшн программировании я около 10 лет. Мой «творческий» путь начинался с группы языков С – помню, как писал на С++ хардкорные штуки под какие-то железяки. Спустя несколько лет я осознал, что мне интересна веб-разработка, поэтому сменил вектор развития и переключился на PHP (хотя иногда для работы мог написать что-то на Java). К Go я пришел где-то в 2014-2015-ых годах, когда язык уже перестал быть очень молодым (язык Golang был разработан в Google в 2007 году). Первое знакомство с Go прошло успешно, так что я решил продолжить с ним отношения и выбрал его как основной язык для работы.
А что там по бэкграунду?

Закончил колледж связи по специализации программное обеспечение. После – магистратуру БГУИРа.

Вернемся назад в будущее: чем занимаешься ты, да и вообще, чем занимаются все Go-разработчики?

Go (Golang) – достаточно молодой язык программирования. Google разрабатывал его для решения конкретных проблем. Долгое время ситуацию спасали С и С++, но в какой-то момент код стал слишком неподъемным=неподдерживаемым и многие разработчики, приходящие на проекты, плохо в них ориентировались. Тогда Google решил упростить задачу и создал новый достаточно простой язык для разработки серверных решений. Помимо простого синтаксиса, Golang предлагает отличную конкурентную модель и экономит время разработчиков – время компиляции решает (улыбается).

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

После лирического отступления перейду к сути: Go позволяет разрабатывать любую серверную часть. Он идеально подходит в том случае, если нужно реализовывать большое количество распределенных сервисов и осуществлять коммуникацию между ними. Понятно, что на этом языке можно написать практически все, но вопрос в целесообразности – нет смысла пилить на Go простенький сайт. А вот если мы говорим о каком-то серьезном Cloud Solution, которая будет осуществляться с использованием параллелизма и асинхронной моделью, да еще и выдерживать большое количество нагрузки, то это к Go и к таким ребзям, как мы (смеется). Конечно, на каждой конференции есть попытки захватить область, где Go еще не использовался, например, для UI части в качестве замены JS на Golang (WebAssembly). Но это так, для души.


У каждого языка программирования есть свои минусы и плюсы. Расскажи о минусах и плюсах у Go.

Плюсы:

- удобная читаемость
- минимализм
- безопасность
- простота и статическая типизация
- скорость компиляции
- параллелизм за счет concurrency model
- garbage collection (сборка мусора)

Минусы:

- отсутствие дженериков (обобщенных функций).
Примечание от Димы: «этот недостаток решается за счет интерфейсов или генерируемого кода».

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

На самом деле Go достаточно прост в изучении, так что осилить его смогут и новички. Опытные же разработчики переходят на Go, когда заинтересованы в более мощном инструменте, который используется для высоконагруженных и распределенных систем. Да и вообще, коэффициент сопротивления у «новеньких» будет меньше, т.к. прошаренные ребятки частенько пытаются перенести свой стиль программирования на Go. А здесь все не так просто, точнее слишком просто – все-таки мы говорим о компилируем языке + в Go статистическая типизация и жесткие правила (неиспользуемые константы и Ко).

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

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

Если сравнивать с Java, то там больше аспектов, нужно больше внимания на различные синхронизации, взаимные блокировки и прочее – в Go этот момент реализован более просто и очевидно.


Английский нужен?

Английский нужен всегда. Хотя для Junior-разработчиков это не так критично. Во-первых, джуна без опыта никто не посадит общаться с заказчиком или партнером (основной удар в проекте на себя принимают проджект и тимлид). Во-вторых, можно инглиш прокачивать попутно. В-третьих, в Беларуси, да и в России очень много продуктовых компаний, где английский сильно не требуется.


Теперь хотелось бы поговорить о программе курса «Go разработчик» в TeachMeSkills. Что она из себя представляет, и хватит ли ребятам полученной информации для трудоустройства?

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

Понятно, что когда ты идешь трудоустраиваться, основными критериями отбора будут: знание языка, алгоритмов и баз данных. В курсе по Go мы затронем даже больше, чем нужно джуну – в том числе доставку продукта от начала разработки до продакшена. Да и рассмотрим все аспекты, необходимые для повседневной работы вообще любого разработчика.
В начале интервью ты сказал о «многих компаниях», которые работают с Go. Приведи примеры, чтобы ребята знали, куда им стучаться по окончании курса.

Если говорить про сервисные компании, то, я точно знаю, что Go используется (достаточно большие отделы под это заточены) в EPAM Systems, iTechArt, ScienceSoft. Причем iTechArt активно набирает стажеров и джуниор-специалистов. Что касается продуктовых, то я бы упомянул Affise, Gismart и SoftSwiss – это те, кто использует Go, как основной язык. На самом деле компаний гораздо больше, так что без работы никто не останется (смеется).


Лирическое отступление: «Сколько ты зарабатываешь?»

Разработчики, пишущие на Go зарабатывают +- столько же, сколько и разработчики, пишущие на других языках. Главное, уметь себя продать, это касается айтишника любого уровня (есть примеры того, как люди с примерно одинаковыми навыками работают совсем с разной ЗП).

Опять же, мой совет: Go сейчас достаточно востребованный язык, поэтому после успешного прохождения курсов можно запрашивать от 600$ и выше.
Напутственные слова от Димы будущим студентам TMS:

Всегда интересно обучать человека, если он сам заинтересован в этом обучении. Самое главное, не стоит бояться новой информации, стараться развиваться и отводить достаточное количество времени на самостоятельное изучение. Заинтересованность и пытливый ум – это ключевые факторы успеха, которые необходимы не только для успешного прохождения курса, но и для «подвигов» уже в рабочей среде. К слову, я тоже подмечаю, кто как двигается: усердных ребят всегда поддерживаю, даю рекомендации и оказываю помощь при поиске работы
Смотри интервью с Димой на нашем YouTube канале

Стань востребованным IT специалистом

Наша цель — дать тебе знания и опыт, достаточные для трудоустройства в крупнейшие IT компании.