Я хочу поделиться уроками, которые преподал мне этот опыт.

Большую часть своей карьеры я был клиентским, серверным программистом, специализирующимся на .NET Framework и всем, что связано с экосистемой Microsoft. Пару лет назад я решил выйти из зоны профессионального комфорта, оглядеться и посмотреть, насколько глубока кроличья нора.

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

Сначала настала очередь JavaScript, затем Python, Django, Ruby и, наконец, Node и MongoDB. Так что теперь я считаю себя программистом-полиглотом, способным писать код на множестве языков.

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

Изучение нового языка — это больше, чем просто изучение его синтаксиса.

Открываются новые методы, новые библиотеки и новые способы решения проблем. Кроме того, мы впитываем уже широко распространенные в сообществе знания, собранные вокруг языка, но уникальные для нас.

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

Постоянное посвящение себя обучению облегчает сам процесс обучения.

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

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

Постоянное изучение новых вещей делает все более интересным, веселым и, конечно же, сложным.

Когда я был программистом на C#/VB.NET, иногда случалось, что я больше не получал удовольствия. В те моменты программирование было просто работой, никакой радости и тем более страсти. Эти периоды могут длиться пару недель, иногда месяц или два. Однако с тех пор, как я посвятил себя новым языкам, мне больше никогда не было скучно.

Снизить зависимость от повседневных инструментов и внедрить новые

Еще два года назад я даже не рассматривал возможность написания кода без какой-либо IDE. Я пристрастился к Visual Studio: IntelliSense, автозаполнение, навигация, встроенный отладчик — все функции, от которых я не мог отказаться.

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

Мы продвигаемся небольшими шагами, часто проводя целенаправленные тесты, чтобы быстро изолировать и исправить ошибки. Я по-прежнему использую и ценю Visual Studio каждый день по рабочим причинам, но я, конечно, предпочитаю только работать: текстовый редактор и терминал — это все, что мне нужно.

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

Чтобы изучить Ruby или Node, часто лучше установить дистрибутив Linux, а не запускать его под Windows. Знание оболочки и инструментов NIX, особенно в наши дни, добавит в наш лук мощную стрелу.

Уменьшить ссылку на любимый язык

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

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

Улучшить и расширить профессиональную сеть

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

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

Дополнительные материалы на plainenglish.io