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

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

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

Несколько дней назад я гуглил и обнаружил, что Whatsapp построен на Erlang, и это отличный продукт. Но я никогда не мог представить, что он не построен на одном из тех языков, о которых много говорят и участвуют в сообществе по всей сети, таких как JavaScript и Python. Теперь, если вы один из тех парней, которые «гоняются за языками» просто потому, что кто-то великий использует их, то, вероятно, вам следует гоняться за Erlang, но я бы не советовал вам это делать, если это единственная причина  — «Я имею в виду, вам действительно нужен Это?

Итак, что должно определять ваше решение изучать что-то новое?

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

Лично я, если бы мне пришлось решать, учить язык или нет, я бы задал себе следующие вопросы:

› Что я хочу создать?

› Могу ли я создать все, что захочу, используя один или несколько языков, которые я уже знаю?

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

Теперь, если вы были заинтересованы, вы видели, что я использовал фразу «прямо да и ничего больше». Что я имею в виду?

«Прямо да и ничего больше»

Все мы знаем вопросы, на которые нужно ответить да или нет:

Вы знаете Джаву? Вы любите программировать? Или еще более человечно (не то, чтобы предыдущие вопросы не для людей, вы понимаете, о чем я) — когда вы приглашаете девушку на свидание, а она спрашивает: «Ты не замужем?».

Всегда ли мы просто отвечаем «да» или «нет» на такого рода вопросы? Ответ - нет. Вещи проще, когда вы отвечаете да или нет, но сложности возникают, когда вы добавляете что-то еще в большинстве случаев. Как и в случае с вопросом «Разве ты не женат?», если вы скажете «нет», ваши шансы пригласить девушку на свидание повысятся, но что-то вроде «теоретически я согласен, потому что через 2 недели я разведусь с женой» сделает все наоборот. намного сложнее.

Поэтому, когда я задаю себе вопрос: могу ли я создать то, что хочу, используя один или несколько языков, которые я уже знаю?, прямое «да» будет означать, что мне не нужно изучать новый язык для этой задачи. Но что-то вроде «да, но язык, который я уже знаю, не лучше подходит для такой задачи — я имею в виду задачу, например, создать здесь простой веб-сайт, а единственный язык, который я знаю, — это C++», тогда я бы рассмотрел варианты получше, например Python, PHP или JavaScript.

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

Но бывают случаи, когда язык, который следует использовать, определяется некоторыми «вышеупомянутыми». Я разговариваю с боссами, жесткими клиентами, инвесторами и другими. Когда это произойдет; Я улыбаюсь, хватаю свой компьютер и изучаю новый язык, который мне нужно использовать — например, недавно я получил эту работу, и наш босс потребовал, чтобы мы использовали JavaScript для всего стека (по крайней мере, это единственный язык, который нам приходилось использовать). до сих пор — не уверен в будущем) и я должен сказать; это было потраченное время с пользой, мне нужно выучить много вещей в JavaScript, которых я бы не знал, если бы не эта работа.

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

Лично мне пришлось изучить ReactJs как основной фреймворк для работы, Jest и энзим для тестирования, momentjs для обработки времени, Redux для управления состоянием, мне пришлось использовать несколько инструментов, таких как npm и yarn для управления пакетами, сборник рассказов для разрабатывать компоненты React изолированно, инструменты разработки React для отладки, среди прочего. Хотел бы я сказать, что инструменты и библиотеки, которые я использовал до сих пор, — это просто верхушка айсберга, но на самом деле это было бы преувеличением.

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

Я помню, как потратил месяцы на изучение C++, когда впервые начал изучать программирование, а затем перешел на Python. Даже с Python я помню, как потратил дни, пытаясь изучить некоторые библиотеки, такие как графика Zelle — знания, которые я никогда не использовал, ну, по крайней мере, пока и, возможно, никогда. Процесс обучения был веселым, но я не мог использовать то, что узнал, во всяком случае напрямую.

А еще есть фреймворки

Фреймворки созданы, чтобы избавить разработчиков от необходимости беспокоиться о каждой мелочи приложения, например, в случае веб-приложения, отправке электронных писем пользователям, подключении и общении с базой данных, проектировании пользовательского интерфейса и опыта (пользовательский интерфейс и UX как несколько парней любят так называть) и т.д. Часто возникает несколько фреймворков для решения одних и тех же задач разными способами; возьмем, к примеру, React для JavaScript, Angular, Next и другие, которые удивительным образом помогают в разработке пользовательского интерфейса, Codeigniter, Laravel и другие для PHP и т. д.

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

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

Сосредоточьтесь на понимании языка, фреймворки появятся позже.