При написании проектов у каждого возникали мысли о том, как здорово было бы пользоваться ими на практике, желательно не одному и не бесплатно.
В этой статье я хочу обосновать свою точку зрения на эту тему, которая состоит в том, что учебные и рабочие проекты кардинально отличаются. Под рабочим проектом я подразумеваю законченный продукт, которым пользуются клиенты на коммерческой или бесплатной основе.
Корень этих отличий в первоочередной цели, побудившей вас разработать проект. Для учебного проекта это новые знания и навыки, для рабочего - пользователи.
В большинстве случаев два этих приоритета напрямую конфликтуют друг с другом:
Рабочие продукты рационально делать на тех технологиях, которые вы уже знаете, выбирая инструменты, позволяющие построить рабочий прототип за минимальное время.
Учебные pet-проекты обязательно должны содержать в себе одну или несколько новых для вас технологий.
Конфликт этих интересов на примере разработки интернет-магазина:
Практично - воспользоваться CRM для быстрой разработки магазинов.
Полезно - написать с нуля, пользуясь теми инструментами, практику с которыми вы хотите получить (фреймворки, базы данных).
Иногда получается совмещать приятное с полезным и строить что-то, применимое на практике, учась при этом новому. Однако в рабочий проект неизбежно придёт рутина, делая которую вы ничему не учитесь. А для самообразования рутина бесполезна - нужно идти дальше.
Практические советы
Задумывать pet-проект с потенциальной возможностью его реального применения - полезно. Это помогает формализовать функционал проекта и написать ТЗ.
Безжалостно отсекайте части pet-проекта, разработка которых не научит вас чему-то полезному.
Бросать недописанные pet-проекты - нормально, не нужно заниматься самобичеванием из-за этого.
Трудоустроившись, стремитесь совмещать приятное с полезным - учиться новому в рабочее время. Заинтересованный в расширении ваших обязанностей работодатель будет рад видеть рост ваших навыков, вы будете развиваться профессионально.
В проектах своего курса я старался соблюсти баланс - не такие большие проекты, чтобы работа над ними не скатывалась в рутину, но достаточно функциональные, чтобы они были понятны и наглядны.