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

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

1. Определите MVP 

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

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

Запишите все возможности, которые хотите воплотить в первой версии проекта. Задайте себе следующие вопросы: 

  • Что должно делать приложение? 
  • Это необходимые требования для его работы? Или желательные? 

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

Применительно к своим проектам я осуществляю релиз версии v1.0.0 приложения, находящегося в разработке, и улучшаю ее в течение нескольких недель (v0.1.0, v0.2.0 и т. д.), пока не добиваюсь долгожданной версии v1.0.0, которая может называться MVP. 

2. Смиритесь с тем, что проект требует времени 

Независимо от того, создаете ли вы ПО или что-то другое  —  на всё требуется время. И Рим не сразу строился, не говоря уже о доме, в котором вы сейчас проживаете. Создание подобных объектов требует недельных усилий, а иногда и многих лет. Осознав это, вы получите контроль над своими ожиданиями. 

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

Для чего это нужно? Смирившись с мыслью, что работа над проектом займет какое-то время, вы сможете сдержать свое нетерпение получить быстрые результаты. Бывало я устанавливал для себя недельный срок выполнения проекта, начинал разработку и… не успевал к желаемому часу. В результате меня накрывало волной разочарования, что приводило к потере концентрации и контроля. 

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

3. Хватит быть перфекционистом 

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

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

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

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

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

4. Используйте канбан-доску 

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

Для чего это нужно? Причина, по которой каждый мой сторонний проект оснащен канбан-доской, состоит по большей части не в том, что она помогает отслеживать весь объем требуемой к выполнению работы, а в том, что показывает все завершенные задачи. Что может быть приятнее, чем наблюдать за растущим числом выполненных заданий! Это как игра  —  ты стремишься перенести все элементы с левой стороны доски на правую. С каждым выполненным заданием приходит понимание того, что вы приобрели новый опыт и посодействовали созданию чего-то удивительного. 

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

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

5. Используйте контроль версий 

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

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

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

Еще одна причина, по которой я использую контроль версий во всех моих проектах, заключается в возможности делать снимки состояний (snapshot)/релизы. 

6. Делитесь своими достижениями с друзьями и семьей

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

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

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

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

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

Заключение

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

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

До новых встреч! 

Читайте также:

Читайте нас в Telegram, VK и Яндекс.Дзен


Перевод статьи Eric Chi: 6 Tips to Stay Motivated on Your Side Projects

Предыдущая статьяСоздание REST-клиента с помощью Spring Cloud OpenFeign и Netflix Ribbon
Следующая статьяКак создать адаптивную галерею для интернет-магазина