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

  • Программирование — это весело
  • Изучение новых технологий
  • Сочетание двух

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

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

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

Поэтому в следующий раз, когда вы решите начать личный проект, я предлагаю начать со следующего мыслительного процесса:

Определите свои профессиональные и личные цели для проекта. Например:

  • Я хочу изучить Go и привыкнуть к нему.
  • Я хочу изучить популярный веб-фреймворк, такой как React или Vue.
  • Я хочу поиграть с базой данных NoSQL, такой как MongoDB.
  • Я хочу изучить основы машинного обучения.

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

Определите конечный результат как можно более четко, сохраняя при этом небольшой масштаб проекта. Например:

  • Я разработаю CLI-приложение с Go, которое легко генерирует сложные запросы для MongoDB.
  • Я разработаю веб-страницу с React, которая покажет интересные данные из Reddit API.

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

Возьмем второй пример с веб-страницей. В этой ситуации вы должны попробовать поиграть с API Reddit и посмотреть, какие интересные данные вы можете оттуда извлечь, и решить, что именно вы собираетесь показывать, прежде чем приступать к разработке веб-страницы.

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

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

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

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

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

Я хотел бы закончить несколькими советами:

  • После завершения проекта убедитесь, что он доступен для всего мира. Если это веб-сайт, попробуйте найти недорогой хостинг. Если это инструмент командной строки, убедитесь, что люди могут легко его установить. В любом случае — разместите свой проект на GitHub и убедитесь, что у вас есть хороший и понятный README.
  • Разместите свой проект в Интернете! Если вы не знаете, где разместить его, я настоятельно рекомендую Reddit. Найдите сабреддит, в котором обсуждается тема вашего проекта, а еще лучше — разместите его на сабреддите того языка программирования/технологии/фреймворка, на котором вы делали проект.
    Не бойтесь негативных отзывов. В конце концов, ваша цель состояла в том, чтобы разработать проект, которым вы сможете похвастаться, и даже если вы получите отрицательный отзыв, это баллы, которые вы можете взять с собой в следующий проект. По моему опыту, комментарии в этих сабреддитах очень уважительны и вежливы.
  • Несмотря на то, что сторонние проекты отлично подходят для обучения, вам не нужно их много, чтобы похвастаться. Иногда лучше просто поиграть с новой технологией и двигаться дальше, не выполняя никаких побочных проектов с другими. это и ничего не публиковать на GitHub.
    Лично я считаю, что сайд-проекты лучше всего подходят для изучения комбинации 2-3 технологий, принося при этом удовлетворение от завершения классного проекта.
  • Пусть ваши личные проекты затрагивают темы, которые вы любите. Это может быть что угодно: музыка, видеоигры, технологии, история или любое другое ваше хобби. Попробуйте подумать о том, как вы можете перенести программирование и разработку программного обеспечения в область, которая вам нравится, это сделает сторонний проект гораздо более полезным и приятным для работы.

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