Перевод статьи «5 Typical reasons why developers fail to complete side projects».
Помимо своей работы, разработчики часто занимаются еще и сторонними проектами. Эта практика довольно распространена, потому что работа над сторонним (личным) проектом — это хороший способ отточить имеющиеся навыки или приобрести новые.
Но разработчики также «славятся» тем, что часто забрасывают свои проекты и не доводят их до конца. Так происходит по нескольким причинам, которые мы разберем ниже.
Поскольку сторонние проекты — дело добровольное, разработчики не относятся к ним так же серьезно, как к своей основной работе. Кроме того, из-за необязательного характера этих задач разработчики также редко определяют для себя некие показатели успешности проекта.
Но весьма вероятно, что на собеседованиях при приеме на работу вас спросят, есть ли у вас законченные личные проекты. Многие работодатели также ожидают увидеть ваш профиль на GitHub (причем не пустой).
Я не считаю, что работа над сторонними проектами является обязательной для каждого разработчика. Но эти проекты помогают улучшить профессиональные навыки. К тому же, работа над ними — отличная возможность исследовать те области программирования, которые интересны лично вам. Ну и конечно, создавать с нуля проект, воплощающий вашу собственную идею, — просто увлекательно и захватывающе!
Давайте рассмотрим несколько типичных причин, по которым разработчики так и не доводят до конца свои проекты. Имейте их в виду и старайтесь не запнуться об них, когда возьметесь за следующий проект.
1. Отсутствие достаточной мотивации
Если кто-то решает в свободное время заняться каким-нибудь проектом, этот проект, скорее всего, человеку чем-то интересен. Что касается программистов, идея поработать над чем-то личным может возникнуть по нескольким причинам.
Возможно, вы хотите создать портфолио с проектами, которые можно будет показывать потенциальным работодателям. Или хотите создать приложение, которое, как вам кажется, будет полезно другим людям.
Здесь важно то, что ваша мотивация идет изнутри, что вы занимаетесь своим проектом без внешнего принуждения.
Но если за вашей работой не стоит какая-то достаточно хорошая побудительная причина, ваша мотивация скорее всего быстро иссякнет. Чтобы определить, есть ли у вас весомые доводы в пользу работы над личным проектом, задайте себе несколько вопросов:
- Вы хотите заняться этим проектом, потому что он вам очень интересен сам по себе?
- Будете ли вы работать с технологиями, которые вам интересны?
- Стремитесь ли вы увидеть результат своей работы?
- Приобретете ли вы новые навыки, которые пригодятся вам в будущем?
Если у вас есть весомые доводы в пользу работы над новым проектом, вы с большей вероятностью не сдадитесь слишком быстро и доведете его до конца.
2. Отсутствие планирования
Итак, с мотивацией у вас все в порядке. Вы полны энтузиазма и хотите как можно быстрее приступить к написанию кода. Но притормозите немного…
Для начала, есть ли у вас план вашего проекта?
Планирование имеет огромное значение, если вы, конечно, хотите успешно завершить проект и создать нечто полезное для себя и окружающих.
Ваш план не должен быть суперсложным. Набросайте что-то простое: подробности о цели проекта, этапы работ с датами завершения каждого. Имея хотя бы базовы план, можно будет приступить к работе.
Также желательно, чтобы в вашем плане указывались и подробности выполнения задач. Например, исследования, которые нужно провести, списки инструментов и ресурсов, которые вам понадобятся, планы тестирования и т. д.
Поскольку это ваш личный проект, его план может быть настолько подробным, насколько вы захотите.
Лично я для организации своих проектов использую Trello. Это онлайн-инструмент для планирования и организации работ, использующий концепцию стикеров на белой доске.
Вы можете использовать его для детализации этапов проекта, планирования задач и удобного хранения информации, относящейся к проекту.
Но в общем не важно, какой именно метод вы используете для планирования. Главное, чтобы до начала работ над проектом вы составили хоть какой-то план.
3. Over-Engineering
Over-engineering — масштабирование идеи до точки, когда она становится слишком сложной и труднореализуемой. Многим разработчикам бывает сложно не попасть в эту ловушку.
Ваш личный проект может начинаться с простой концепции и простого же дизайна — ничего сверхсложного. Но со временем вы включаете в план все больше вещей, и проект усложняется.
Вы просто не можете остановиться и бесконечно придумываете все новые функции, способные украсить ваш проект и сделать его куда круче, чем изначально планировалось.
Подобное происходит повсеместно, поэтому важно держать свой проект под контролем. В противном случае вы его так и не закончите.
Как уже говорилось в предыдущем пункте, нужно обязательно иметь план, где будет написано, что вы, собственно, хотите создать, какими будут этапы работ и когда вы должны их завершить. Естественно, со временем вам захочется что-то изменить. Но вместо того чтобы постоянно менять исходный план, лучше создайте дополнительный список для будущего функционала и вещей из разряда «хорошо бы сделать».
Идея в том, чтобы ваш план работ оставался как можно более простым, а вы не отвлекались от основной цели проекта. Если вспомнить теорию менеджмента проектов, это эквивалент минимально жизнеспособного продукта (Minimum Viable Product, MVP). MVP — это продукт, имеющий самый минимум функций, без которых он просто не сможет служить по своему назначению.
Когда дело касается личного проекта, определить MVP сложнее. В конечном итоге, это ваш собственный проект, и никто не будет гнать вас в спину, чтобы вы побыстрее его закончили. Но если у вас будет список абсолютно необходимых требований к продукту, а все новые идеи будут считаться дополнительными и входить в другой список, это поможет вам предотвратить over-engineering.
Следование этому совету не позволит вашим плодящимся идеям повлиять на итог работы над проектом. Если функционал будет разрастаться бесконтрольно, вы никогда не закончите свой проект. Но завершив базовый функционал, вы всегда сможете вернуться и улучшить все, что захотите.
Over-engineering представляет куда большую опасность для вашего проекта, чем вы думаете. Это очень распространенная причина появления незавершенных проектов. К тому же очень обидная: вы вкладываете много труда в проект, а в результате показать нечего.
4. Остановка из-за препятствий
Чтобы создать проект с нуля и довести его до конца, нужно время и сознательное приложение усилий. И на этом пути вы скорее всего столкнетесь с препятствиями, способными замедлить или вообще остановить ваш прогресс.
И вот когда подобное случится, главное — не сдаться.
Конечно, можно легко найти себе оправдание, когда станет трудно. Как говорится, это ж мой проект: хочу занимаюсь им, хочу — забрасываю. Но как насчет вашей мотивации и причин, по которым вы занялись этим проектом? Вот здесь становится ясно, почему так важны весомые мотивы. Они сыграют большую роль, когда вы столкнетесь с трудностями. Без них вы запросто сдадитесь.
А сдаваться, столкнувшись с трудностями, не хорошо для разработчика. (Собственно, вообще для кого угодно). Работая над сложными задачами, разработчик должен сохранять терпение и решать возникающие проблемы.
Не оправдывайтесь тем, что это всего лишь ваш личный проект. Даже если сбросить со счетов все остальное, преодоление трудностей поможет вам развить ваши навыки решения проблем.
5. Забрасывание проекта ради другого
Нас запросто может увлечь новый блестящий проект, в результате чего мы забрасываем то, над чем работали. Некоторые из нас чистосердечно намереваются вернуться к старому проекту позже, но скорее всего он так и останется заброшенным.
Я считаю, что лучший способ борьбы с искушением бросить один проект ради другого — осознать, что в результате все ваши проекты, и настоящие, и будущие, будут провальными. А дальше все зависит от вашей силы воли, конечно.
Другой способ — завести специальный список будущих проектов и вносить туда идеи по мере их возникновения. Таким образом вы сможете начать планировать будущие проекты, не принимаясь за их непосредственное осуществление.
Когда вы записываете идеи и даже начинаете планировать работу, это своеобразное умственное упражнение. Вам может хотеться заняться новым проектом сразу, но вместо этого вы вполне можете просто задокументировать все, что пришло в голову, и использовать свои заметки позже, когда до этого проекта дойдет очередь.
Итого: не начинайте работать над новым проектом, пока не завершите текущий. В противном случае у вас будет целая куча незаконченных и провальных проектов.
Заключение
Разработчики, которым нравится писать код даже в свободное время, часто занимаются личными проектами. Но зачастую в конечном итоге оказывается, что им нечего показать людям, ведь законченных проектов нет.
Поэтому когда вы в следующий раз надумаете взяться за новый проект, вспомните о причинах, по которым появляются заброшенные проекты.
Вместе с тем не чувствуйте себя обязанным завершать проект, если стало ясно, что он просто не заработает. Порой бывает попросту бессмысленно продолжать.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]