Как стать автором
Обновить
65.07
Рейтинг
Нетология
Образовательная платформа

Если выучил один язык программирования, то выучишь и другие. Но не всегда легко

Блог компании Нетология Учебный процесс в IT IT-эмиграция Карьера в IT-индустрии Изучение языков

Привет, Хабр. Сегодня своим опытом решил поделиться Андрей Борю, разработчик и преподаватель курса DevOps Engineer в Нетологии. Андрей рассказал о том, как изменить направление карьеры и освоить новые языки программирования прямо в процессе работы. В чём главная мотивация разработчика — под катом.

Как складывалась моя карьера разработчика

С программированием я познакомился ещё в школе: освоил основы Visual Basic и Pascal, участвовал в тематических олимпиадах. После окончания школы в 2002 году я поступил в Московский институт стали и сплавов, где был председателем турклуба и сделал для него сайт. На старших курсах нашёл первую работу в веб-студии: занимался разработкой несложных сайтов, программировал на PHP и JavaScript.

Потом у меня был опыт работы в крупных IT-компаниях. По приглашениям работодателей из-за границы я много переезжал. Последние два года я нахожусь в Индонезии, до этого жил в Таиланде, Филиппинах, во Вьетнаме, Мексике, Литве. Хочу посмотреть мир и дальше, но сейчас я рассматриваю Индонезию как основную локацию и отправную точку: с жизнью здесь связаны мои хобби и интересы.

Сейчас я работаю в азиатской компании Snapcart. У меня два основных рабочих проекта. Один из них связан с машинным обучением и BigData: мы анализируем различные покупки на разных островах в Индонезии, составляем профиль покупателя, собираем статистику потребления и некоторые другие вещи, которые полезны производителям и продавцам для оптимизации поставок. Второй проект — приложение, позволяющее людям ставить цели в плане похудения, набора веса и мышечной массы, планировать рацион и упражнения.

Последние два года я нахожусь в Индонезии
Последние два года я нахожусь в Индонезии

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

Как я изучаю IT: истинная мотивация и источники знаний

На моей первой работе, чтобы войти в процесс, мне понадобилась буквально пара недель изучения документации для PHP и JavaScript, тем более, я уже представлял себе, как работает программный код. Когда ещё в школе я учил Basic и Pascal, то невзлюбил толстые многостраничные учебники и предпочитал небольшие пособия. В процессе работы мне тоже проще было работать с документацией, чем с книгами. 

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

Работая в международных компаниях, я стал заниматься DevOps, а потом в определённый момент перестал быть просто программистом и стал больше заниматься архитектурой приложений в целом. Так я выучил Java и Python, тем самым сменив специализацию. А на текущем месте работы пишу в основном на Golang.

Для меня первичен поиск конкретных проектов и вакансий, а знания и навыки уже можно выучить и наверстать под то, чем ты занимаешься. Для решения задач по машинному обучению лучше всего подходит Python, для разработки не очень сложных веб-приложений можно использовать php, для создания  большого количества микросервисов  – Golang и для решения специфических задач  — Java.  

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

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

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

Что делать, если вы хотите сменить язык программирования

В принципе, если человек выучил один язык программирования, то выучит и другие, если захочет. Но не факт, что легко. Например, перейти с PHP на Java или C++ сложно: совершенно разные языки и задачи, решаемые с их помощью. Поэтому при переходе на новый язык приходится первые месяц-два много времени посвящать обучению, но это неизбежно. Изучение программирования — непрерывный процесс. 

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

Естественно, что опытный программист уже не будет начинать работать с новым языком с уровня junior. В целом, понятия junior, middle и senior говорят не о знании конкретных языков и технологий, а об опыте программирования и построения IT-систем в целом. Сейчас я уже несколько лет работаю на позициях senior, principal.

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

Когда программисту не скучно, он работает гораздо эффективнее
Когда программисту не скучно, он работает гораздо эффективнее

Что касается Golang, то он вообще не является объектно-ориентированным языком программирования в привычном понимании, в нём используются другие подходы к структурированию кода и данных. Но алгоритмы и структура языков везде похожи и потому понятны: запоминаешь отличия синтаксиса, начинаешь использовать, в процессе вникаешь в особенности. Но мозг каждый раз приходится перестраивать.

У меня нет универсальных рекомендаций для тех, кто работает в IT и хочет перейти на другой язык программирования: все мы разные. Я работаю на зарубежные корпорации, где взгляд может несколько отличаться от того, что принято в России. 

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

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

Теги:
Хабы:
Всего голосов 32: ↑2 и ↓30 -28
Просмотры 10K
Комментарии Комментарии 11

Информация

Дата основания
2011
Местоположение
Россия
Сайт
netology.ru
Численность
201–500 человек
Дата регистрации