Стадии изучения нового языка программирования

0
1493
views

Перевод статьи «6 Stages of Learning a New Programming Language».

Стадии изучения нового языка программирования

От программистов требуют изучения многих вещей. С приходом больших данных, машинного обучения и облачных вычислений разработчикам приходится сталкиваться со множеством проблем в разработке систем. Все мы теперь не просто программисты. Мы изучаем новые подходы к проектированию архитектуры наших систем. Работая с ИИ, мы приобретаем навыки в математике, статистике и функциональном программировании. При работе с большими данными мы изучаем всевозможные API для анализа этих данных.

Наша работа становится мультидисциплинарной. Самая большая сложность при этом и самая большая наша задача — учеба.

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

Когда вы все время учитесь, вы постоянно обогащаете свою жизнь:

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

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

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

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

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

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

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

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

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

Начинайте с ключевых элементов и концепций

При изучении нового языка программирования сначала следует сосредоточиться на его ключевых элементах и концепциях. Составьте список таких «ядерных» тем и изучайте их шаг за шагом.

Вы не знаете, чего вы не знаете

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

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

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

Таким образом, я начинаю с какой-то концепции Python, затем ищу в Google все, что касается объектно-ориентированного программирования на Python, что наталкивает меня на идею потенциального проекта на будущее. В ходе этих поисков я делаю себе закладки на соглашениях о синтаксисе, на концепциях ООП, на списке часто используемых структур данных. На каких-то из этих страниц, вероятно, содержатся ответы на вопросы, которые действительно стоит задать. Читая эти сайты, я смогу составить целый список важных вопросов.

Чтобы изучить самое важное, нужно научиться задавать правильные вопросы.

Привычка учиться ежедневно

Одна из лучших вещей, которые я для себя вынесла из изучения многих языков программирования, это привычки, способствующие продуктивности. Все свою карьеру я посвящаю учебе по крайней мере два часа ежедневно. Это много времени: 2*365*15=10950 часов. Я как бы занимаюсь фитнесом для мозга (помимо работы), и это позволяет мне постоянно изучать что-то новое. Чтобы обеспечить себе эти дополнительные два часа на учебу, я чаще всего просто встаю в 5 утра вместо 7 или иду спать в 11 вместо 9 часов вечера.

Постепенно вы понимаете, что учеба это интересно, а время, потраченное на нее, потрачено в итоге на себя. Учеба становится вашим увлечением.

Ежедневная учеба

Эффект снежной лавины

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

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

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

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

Привычка практиковаться, рисковать и креативно мыслить

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

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

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

Для продвижения вперед опирайтесь на то, что уже знаете

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

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

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

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

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

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

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

Чего же вы ждете?