Перевод статьи «Learn to Code By Building Messy Little Things».

Я помню, как в детстве играла с кубиками Lego. Я просто что-то строила из них. Что именно? Кто знает. Даже я порой не знала, что это такое. Я просто соединяла кусочки, пока не решала, что это будет, например, дом. Наверное, я начинала с маленьких кирпичиков, но чтобы построить большие комнаты, мне требовались блоки побольше. В результате все было очень неровным, и мне приходилось повозиться, чтобы подогнать друг к другу и соединить разные стороны. В итоге у меня получался «дом». Наверное (даже скорее всего), он был далек от совершенства. Я могла использовать слишком много маленьких кирпичиков или перепутать разные куски. В какой-то комнате могло не быть окон, вход мог быть перекошен. Но несмотря на все эти мелочи и общую неряшливость, это был дом, где мог счастливо жить маленький Lego-человечек.
Беритесь за дело, даже если не знаете, как
Я думаю о той маленькой девочке, которая бралась за дело, даже не представляя, что она собирается создать. Это был шанс для творчества: воображение ничем не ограничивалось, а мозг был занят решением мелких проблем (например, как построить бассейн, если у вас мало голубых блоков).
А сегодня я боюсь начинать практически любой проект. Что, если моих знаний окажется недостаточно? Что, если дело окажется слишком уж сложным? Что, если станет скучно? Что, если я не доведу его до конца? Что, если я не справлюсь? Я уверена, что такие мысли когда-то появлялись у всех во времена учебы (или даже до сих пор посещают). Мы слишком много продумываем, слишком много планируем и в конечном итоге нас разбивает аналитический паралич: все это подавляет нас настолько, что мы даже не начинаем работу.
Но что, если мы попробуем выпустить своего внутреннего ребенка и просто браться за дело, даже если не знаем, как с ним быть? Сможем ли мы в таком случае чему-то научиться? Не стоит забывать, что лучший способ научиться писать код это начать писать код. Мы можем чувствовать себя недостаточно подготовленными, чтобы взяться за проект, даже самый маленький. Но какая разница? Просто начинайте, даже если не знаете, как.

Не дайте величине проекта ввести вас в заблуждение. Даже на маленьком проекте можно многому научиться
Начинайте с чего-нибудь маленького, выстраивайте свои кирпичики по одному, пока что-то не щелкнет. Мы часто представляем себе проекты как большие приложения и пользовательские интерфейсы, но даже эти большие проекты состоят из множества маленьких. Создайте меню, профайл пользователя, сетку портфолио. Внутри большого проекта, который кажется настолько огромным и сложным, что к нему страшно даже подступиться, есть маленький проект, за который мы вполне можем взяться.
Однажды я хотела научиться создавать сайт с возможностью переключения на темный режим. Я продумывала, какие цвета использовать, какой функционал изменить и как реализовать все эти изменения. Но для всего этого мне нужно было научиться делать кнопку перехода на темный режим, которая переключала бы цвета. Сначала проект казался выполнимым, но в то время (да и сейчас тоже) JavaScript был для меня чем-то пугающим.
Это была простая и маленькая вещь, но над этим мини-проектом я корпела значительно дольше, чем ожидала. Маленькая фича потребовала большого количества работы, но при этом она была прекрасной возможностью для учебы. Так что не дайте величине проекта обмануть вас: в нем всегда найдется достаточно вещей для изучения!

Ваши проекты будут неаккуратными. Просто смиритесь с этим (пока что)
Я уверена, что мои Lego-домики были не слишком красивыми. И я также уверена, что то же самое можно сказать о моем коде в ранних проектах. Код может быстро стать беспорядочным и неряшливым, особенно, если вы приступаете к делу, не имея четкого плана. (Примечание: меня, как человека, который обожает все организовывать, беспорядочный код очень раздражает). Но это нормально.
Смысл в том, что мы хотим написать свой код и надеемся, что в конечном итоге он будет рабочим (хотя код, который не работает, предоставляет множество возможностей для учебы!).
Это будет не лучший ваш код. Порой у вас будет слишком много конфликтующих CSS-правил, порой вы будете использовать jQuery и vanilla JS в одном документе, порой вы будете использовать вовсе ненужный фреймворк или препроцессор. Беспорядок точно будет, и с этим стоит смириться, по крайней мере, на время. Позже можно будет вернуться к этому коду и улучшить все, что захотите.
Заканчивайте свои маленькие проекты… в конечном итоге. Наверное.
Что хорошо в маленьких неаккуратных проектах, так это то, что когда они становятся слишком уж беспорядочными, мы не только можем оставить все, как есть. При желании мы можем также в любой момент вернуться к ним, не робея перед их объемом.
Некоторое время я носилась с идеей создания проекта с темой «Сэйлор Мун». Я начала создавать мини-проект. Что я пыталась сделать? Я даже сама до конца не уверена. Если вы посмотрите мой профайл в CodePen, вы увидите целые три версии этого мини-проекта, которые я создала за последние несколько месяцев. Первые две ужасно неряшливые – они не принесли никаких результатов. А вот последняя, хотя и не слишком хороша, но уже лучше первых двух. Я не чувствую себя виноватой за то, что первые две я просто забросила, а последней я вообще горжусь. В этой последней версии проекта я использовала код из первых двух, но добавила функционал, о котором прежде даже не думала.
Если вы не доводите до конца свои маленькие проекты, в этом нет ничего плохого. И если вам удается их завершить, это тоже нормально. А еще они могут в процессе работы превратиться в нечто совершенно другое, и это тоже приемлемо. В программировании каждая возможность это возможность учиться. Так что завершайте свои проекты. В конечном итоге. Наверное.
Усовершенствуйте свой проект, извлеките уроки, повторите процесс

Возвращайтесь к своим старым проектам, улучшайте их (при этом, конечно, учитесь), но не забывайте повторять! Это очень важно! Изучение программирование это невероятно сложное дело, особенно когда вам нужно сразу усвоить много новой информации. Так что даже если вы ухватили суть концепции и сумели написать код решения за рекордно короткое время, сделайте это еще раз.
Мой проект по созданию темы «Сэйлор Мун» требовал создания кнопок, которые я создавала раньше, но не в последние несколько месяцев. И я была одновременно удивлена и не удивлена тем, что мне потребовалась целая вечность для чего-то столь простого, как добавление прослушивателя событий. Теперь я знаю, что лучше продолжать практиковаться в создании кнопок.
Повторение поможет вам удержать в памяти ваши новые знания и навыки, благодаря ему они вскоре перейдут в мышечную память. Повторяя свои проекты, вы не только будете быстрее запоминать какие-то вещи: уделяя время улучшению своего кода, вы будете оттачивать свои навыки программирования.
Домики из блоков Lego после некоторой практики и с течением времени становятся лучше. Они делаются более симметричными, в них используются более подходящие блоки, в них появляется достаточно места для кухни, гаража и бассейна. То же самое касается и программирования. Вы обнаружите, что чем больше вы работаете над однотипными или похожими проектами, тем лучше они получаются! И – нет, за одну ночь ваш код лучше не станет: нельзя сразу перейти от строительства маленьких домиков к созданию дворцовых комплексов!
Несмотря на скромный размер ваших проектов, маленькие победы это все равно победы, а маленькие кусочки знаний все равно знания. Продолжайте в том же духе, учитесь и совершенствуйтесь. Улучшайте, учитесь, повторяйте.
Наслаждайтесь процессом!
Само собой разумеется, что создание проектов должно приносить вам удовольствие! Для меня маленькие проекты стали способом отойти от больших и отдохнуть от них, но при этом все равно учиться и практиковаться, и, конечно, получать удовольствие.
Но на самом деле эти проекты дают мне намного больше. Они помогают мне бороться с перфекционизмом, они напоминают, что мне еще многому нужно учиться и что учеба может быть беспорядочной.
Мини-проекты напоминают мне, что не обязательно сразу добиваться совершенства или даже правильности. Благодаря этому мне удается получать удовольствие от самого процесса работы над такими проектами. А об удовольствии забывать не стоит: без него работа над маленькими неаккуратными проектами может показаться работой.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]