Изучать как минимум один новый язык ежегодно – плохой совет

2
1730
views

Перевод статьи Блэйна Осепчука «“Learn at least one new language every year” is bad advice».

Стоит ли изучать новый язык программирования

Изучение нового языка требует много времени. За исключением случаев, когда это нужно для работы или личного проекта, это плохая инвестиция. В этой статье я покажу, почему “изучайте по крайней мере один новый язык ежегодно” это плохой совет, и что следует делать вместо этого.

Откуда пошло это «изучайте по крайней мере один новый язык ежегодно»?

Насколько я могу судить, эту идею популяризировали Эндрю Хант и Дэвид Томас в своей книге «The Pragmatic Programmer» (отличная книга, кстати сказать).

В разделе, посвященном инвестициям в знания, они пишут:

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

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

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

Именно об этой искаженной версии я и хочу поговорить.

Чем этот совет плох

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

Это порождает необоснованные ожидания

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

Начинающие разработчики практически всегда тонут в информации и нуждаются в помощи с основами.

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

Есть более легкие пути для расширения кругозора

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

  • изучать шаблоны проектирования
  • изучать архитектурные шаблоны
  • принимать участие в open source проектах
  • общаться с другими программистами
  • смотреть обучающие видео онлайн

Сколько на самом деле вы узнаете, поглощая языки программирования в больших количествах?

Я немного не уверен относительно механики. Как люди «изучают» эти языки? Читают книгу? Изучают синтаксис? Пишут программу «hello world»? Воспроизводят код, приведенный в руководстве? Пишут проект на тысячу строк?

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

Это куча работы. И люди действительно все это делают? Я подозреваю, большинство людей останавливаются где-то между «hello world» и повторением кода в руководстве. А если это так, то насколько полезно изучение нового языка?

Но даже если вы создаете маленький проект на новом для себя языке, я все еще сомневаюсь, можно ли считать это время проведенным с толком.

Знания, специфические для конкретного языка, быстро устаревают

Допустим, вы посвятили достаточное количество времени изучению нового языка и изучили его глубоко. Как долго эти знания будут вам полезны, если вы не пользуетесь этим языком постоянно?

Все это происходит одновременно:

  • Ваша память в отношении деталей языка стирается с каждым днем, когда вы им не пользуетесь.
  • Языки развиваются.
  • Инструменты, фреймворки, библиотеки развиваются.
  • Передовые методы компьютерных наук развиваются.

Я изучал Java 2 в университете, но за последние 15 лет много чего произошло, и я не уверен, имею ли я право в данный момент заявлять, что знаю Java.

Однажды этот язык может вам пригодиться для новой работы или проекта

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

Резюме переполнены языками и технологиями.

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

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

Совет «изучайте язык на случай, если однажды он вам понадобится для работы» кажется мне неэффективным. Как выбрать правильный язык для изучения? Как уберечь свои навыки, специфичные для этого языка, от угасания со временем?

Дальше я расскажу о лучшем подходе.

Фокус на высокоэффективные, долгоживущие навыки – лучшая стратегия

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

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

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

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

  • Совершенствование вашего текущего стека
  • Собственный бизнес – где можно наиболее эффективно приложить усилия? За решение каких проблем стоит взяться?
  • Как учиться эффективно.
  • Менеджмент проектов.
  • Лидерство.
  • Коммуникация.
  • Управление временем.
  • Командная работа.
  • Деловые навыки: стратегия, найм, обсуждение условий, маркетинг, финансы, продажи, статистика.
  • Разработка методологий/техник
  • Шаблоны проектирования/архитектурные шаблоны

Как решить, что учить дальше

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

Затем найдите новую вещь с наибольшей эффективностью и повторите процесс.

Люди, поступающие так, в конечном итоге имеют впечатляющее резюме, полное выдающихся результатов, а работодателям это и нужно.

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

Вывод

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

Если у вас такое хобби – изучать языки программирования, – ради бога (я сам так делаю). Но не ждите, что это окажет заметное влияние на вашу карьеру. Это утверждение легко проверить. Просто спросите своего работодателя, как улучшится ваше положение в компании, если вы изучите [вставьте сюда название какого-нибудь нового для себя языка]. Если ответ – «никак», то вы только что определили рыночную стоимость этого языка для вашего работодателя.

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



2 КОММЕНТАРИИ

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

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here