Почему создание проектов — лучший способ обучения

Лучший способ учиться — это делать.

На протяжении всего моего пути в программировании я придерживался этого девиза.

Ничто не сравнится с реальным опытом.

Не читаю книги.

Не смотрю Ютуб.

Не думая о том, чтобы что-то сделать.

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

Итак, я отложил кодирование на потом и сосредоточился на выпуске письменного контента. Через некоторое время я переключил свое внимание на создание сайта блога с нуля. Посмотреть его можно на сайте www.kaungzinhein.me!

Благодаря этому личному проекту я научился (и продолжаю учиться):

1. CSS

2. Развертывание веб-сайта

3. Основы nextjs 13 (например, маршрутизация)

4. Реализация функции поиска в nextjs (и реакция)

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

И это просто потому, что за этими проектами не было личной цели.

Без личного контакта с источником мотивации любая деятельность может показаться непрактичной.

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

Я начал искать ресурсы — чтобы воспроизвести и применить их на своем собственном веб-сайте.

Затем я обнаружил, что даже такой, казалось бы, простой проект требует объединения многих частей. Части были следующими:

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

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

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

  1. Размещение моего приложения для блога
  2. Регистрация личного домена

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

Еще один важный вывод из этого опыта: «нужно чему-то научиться».

Честно говоря, я на какое-то время отложил «CSS» (честнее говоря, с тех пор, как начал изучать веб-разработку). Я всегда не хотел позволять этому занимать место в моей программе самостоятельного обучения, опасаясь, что это оставит меньше места для других, более важных навыков (например, управления состоянием, серверных API).

Но когда я взялся за этот проект, у меня возникла потребность в CSS. Поэтому я преследовал это.

Это самый важный урок, который можно извлечь из принципов PBL.

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

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

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

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

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

Зачем беспокоиться, если нет причины, по которой вы учитесь тому, что учитесь?

Проекты — отличный способ придать личный смысл.

Давайте не будем останавливаться на достигнутом. У подхода PBL есть еще больше преимуществ.

Многоразовость.

Например, алгоритм функции поиска в моем блоге реализован и в других проектах с некоторыми вариациями.

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

Это повторение.

Повторение с обратной связью с течением времени приводит к мастерству — принципу осознанной практики.

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

· Я решил запрограммировать веб-сайт блога для размещения моих статей.

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

· Проекты можно использовать повторно.

Удачных строительных проектов!