Долгое время я откладывал запуск своих собственных проектов просто потому, что не знал, что делать.
У каждого проекта, который я мог придумать, было несколько функций, которые я просто не знал, как реализовать. Я всегда спрашивал себя – как я могу приступить к работе над каким-либо проектом, если я даже не знаю половины того, что нужно для его завершения. Я всегда думал, что мне надо научиться большему, прежде чем я смогу сделать что-то сам.
Добро пожаловать в учебное чистилище
Итак, вместо того, чтобы создавать собственные проекты, я застрял в том, что я называю «учебным чистилищем». Поскольку я понимал, что учиться — это хорошо, я читал и смотрел каждый туториал, который мог найти, который казался интересным, который, как я думал, я смогу в один день применить в собственном проекте. Я проводил так месяц за месяцем, заполняя ночи бесконечными видео на YouTube, Udemy и на всех других сайтах, которые я только мог найти. Я многому научился, но забыл чуть ли не больше в процессе.
Не поймите меня неправильно. Мне нравятся туториалы, и я думаю, что изучение основ по таким руководствам — отличный способ начать работу. Но если вы не будете осторожны, то потратите больше времени на чтение или просмотр обучающих материалов, чем вам действительно нужно.
Например, когда я только начинал, я купил и посмотрел курс The Web Developer Bootcamp на Udemy — 43 часа видео по таким темам, как HTML, CSS, Bootstrap, JavaScript и jQuery. Я думал, что курс вышел отличный, но когда я закончил, я все еще не был готов делать собственные проекты.
Вместо этого я вернулся на сайт и купил еще The Complete Web Developer Course 2.0. И посмотрел еще 30 часов видео, охватывающих большинство тех же тем, что и первый курс!
Почему так получилось? Честно говоря, я думаю, это из-за того, что с учебниками вы чувствуете себя в безопасности. В туториалах у вас есть кто-то, говорящий, что точно делать. И вы чувствуете, что многому научились и стали невероятно продуктивны.
Но на самом деле, если вы изучаете одно учебное пособие за другим, и все только ради обучения, а не в рамках более крупного проекта, над которым вы работаете, то вы, вероятно, учитесь намного меньше, чем думаете.
Нет инструкций — нет проблем
Постепенно я понял, что мне нужно прекратить смотреть учебные курсы, покинуть зону комфорта и сделать самостоятельный проект, без всяких инструкций, аккуратно излагающих, что мне делать.
Я решил сделать сайт вроде Stack Overflow, где пользователи могли бы регистрироваться, публиковать вопросы, отвечать, добавлять комментарии и даже вставлять видео непосредственно в свои сообщения.
Это казалось амбициозным проектом, но мне было все равно. Я хотел сделать что-то, что было вызовом для меня. И так как я недавно начал изучать Ruby on Rails и действительно наслаждался этим, я решил использовать Rails в качестве фреймворка для моего побочного проекта.
Было много всего, что я не знал, когда начал делать этот первый проект (так же, как и сейчас с каждым новым проектом, который я начинаю). Я не знал, как создать систему авторизации, реализовать разбиение на страницы или использовать AJAX в приложении Rails. Я не знал, как использовать рекурсию для реализации системы комментариев. На самом деле, я даже не знал, что такое рекурсия!
Начните с того, что вы знаете
Но это не имело никакого значения. Я не думал обо всех вещах, которые я не знал. Я начал с того, что умел, и понял, что выясню все остальное по пути.
Google стал моим лучшим другом. Это привело меня к Devise и oAuth Rails, которые я бы мог объединить для создания системы авторизации. Devise позволил бы моим пользователям создавать новые учетные записи и входить с ними в систему, а oAuth предоставил бы им возможность входить с использованием существующих учетных записей Google или Facebook.
В первую очередь я узнал побольше о каждом пакете, прочитав документацию, а затем погуглил то, как я могу использовать их вместе. Мой поиск привел меня к этой замечательной статье, которая шаг за шагом провела меня через процесс создания системы авторизации и через несколько часов моя проблема была решена.
Когда я застревал на чем-то, я перешагивал через вопросы и ответы на Stack Overflow и искал статьи и туториалы, которые бы помогли мне решить проблему. Я постоянно использовал обучающие материалы, но теперь я использовал их только для изучения того, что я немедленно мог применить к проекту.
Нормально просить о помощи
В редком случае, когда таким образом я не мог найти ответы, которые мне были нужны, я попросил о помощи на Stack Overflow. На некоторые из моих вопросов даже ответили (например, на этот, где я попросил о помощи с вложенными комментариями).
Хотя ни один из ответов не решил мою проблему сам по себе, они подсказали мне, где искать, и помогли продолжить работу и найти решение. Я понял, что Stack Overflow не так страшен, как его малюют, и каждый нуждается в помощи время от времени.
Код этого моего первого проекта не слишком хорош. Ему нужен некоторый рефакторинг, и, вероятно, есть намного более эффективные решения для некоторых вещей. В проекте даже есть некоторые вещи, которые я не понимаю. Но это не имеет значения. Я построил что-то нетривиальное, что действительно работает, и я сделал это не просто следуя набору инструкций.
Из своего первого проекта узнал больше, чем из всего предыдущего года, потраченного на обучение. Самое главное — я получил навыки, которые действительно нужны успешному разработчику. Я научился решать проблемы и влезать в код, я впервые получил восхитительное удовольствие от создания чего-то, что действительно работает. Не имеет никакого значения, что у проекта сейчас нет ни одного пользователя, или что дизайн не так уж прекрасен. Сам акт создания чего-то собственного преобразил меня.
Вы никогда не узнаете, как делать всё (никто не знает), и вам всегда нужно будет искать что-то в Интернете (все ищут). Просто не позволяйте этому мешать вам делать вещи.