Учимся учиться: рекомендации для начинающих разработчиков

0
2436
views

Перевод статьи «Learning to learn».

Photo by Kelly Sikkema on Unsplash

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

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

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

Начнем с общих правил для начинающих.

Большая тройка

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

Концентрируйтесь на основах

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

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

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

Знать все невозможно

Чтобы глубоко изучить что-либо, нужен практический опыт.

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

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

Ставьте перед собой цели и фокусируйтесь на них

Пожалуй, это самый важный совет.

Для новичка имеет смысл браться за простые full-stack проекты, чтобы увидеть, как соединяются кусочки головоломки. Но на каком-то этапе будет мудрым решением начать специализироваться.

Вы можете выбрать фронтенд или бэкенд, Python или Go — все равно, что именно. Но выбрав, постарайтесь придерживаться этого направления какое-то время.

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

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

Photo by Arnold Francisca on Unsplash

Найдите наиболее подходящий для вас способ учиться

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

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

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

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

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

Как я подхожу к изучению технического материала

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

  • Какова моя цель? Зачем я хочу изучить эту тему?
  • Что я уже знаю по этой теме или по связанным с ней темам?

Сочетание разных способов приобретения знаний помогает создавать разные связи с предметом изучения.

Обычно я подбираю типы учебных ресурсов, основываясь на ответах на указанные выше вопросы. Я отбираю ресурсы как минимум двух видов, плюс практическая часть. Почему не ограничиться чем-то одним? Потому что сочетание разных форм обучения способствует созданию различных связей с предметом. Кроме того, из разных источников можно узнать разные сведения. Что касается практической части — я ведь изучаю технические темы, чтобы использовать их на практике (думаю, что и вы тоже).

Photo by Fatos Bytyqi on Unsplash

Пример 1

Цель: изучить React, чтобы понять, как он работает, и суметь написать SSR React сайт с нуля.

Что я уже знаю? Я знаю JavaScript и VueJS, который, предположительно, имеет много общего с React.

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

Пример 2

Цель: изучить GoLang, чтобы суметь создать на Go простой REST API.

Что я уже знаю? Я знаком с коммуникацией между сервером и клиентом, а также знаю Node и PHP.

Как получить нужные знания? В этом случае моя цель — разобраться в синтаксисе и создать рабочий API. Для этого больше подойдет обучение на практике. Я найду какую-то хорошую (краткую и по теме) статью о создании REST APIs на GoLang. Прочитав руководство и разобравшись в основах, я посмотрю примеры кода на GitHub, а затем построю что-то свое на их базе.

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

Совет

Не пользуйтесь учебой для прокрастинации

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

Не забывайте смешивать разные формы обучения

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

Создавайте личные проекты для использования полученных знаний

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

Бонус: парное программирование

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

Photo by Jefferson Santos on Unsplash

Экономьте время, отбирая качественные ресурсы

Каждая минута, потраченная на учебу, должна тратиться максимально эффективно.

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

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

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

Вопросы для проверки учебных ресурсов

Есть ли в этом ресурсе ответы на ваши вопросы?

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

Что это за ресурс?

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

Кто автор и разбирается ли он в этой теме?

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

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

Хорошая ли репутация у этого ресурса?

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

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

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

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

Please enter your comment!
Please enter your name here