Что такое pet проекты

Pet-проект для джуна. Или зачем и как выбрать pet project. (+личный опыт)

Предисловие

Привет Хабр! Эта публикация написана джуном для джунов (но возможно и специалисты более высокого уровня что-то найдут для себя / своих падаванов).

Зачем нужны pet проекты?

Для саморазвития как разработчика и закрепления изученного материала.

Если Вы днями на пролёт «штурмуете» теорию: читаете посты, смотрите туториалы, но при этом не применяете изученное на практике, то времени на освоение выбранной Вами темы понадобится в разы больше.

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

Для джуна без постоянного места работы, pet проект заменяет тут самую работу (со стороны разработки). Вы ставите себе задачу/цель и делаете всё возможное что бы её выполнить. При разработке Вы ещё глубже погружаетесь в тему, а иногда находите новые объекты для изучения.

Суммируя pet проекты нам нужны для:

изучения / закрепления нового материала;

получения удовольствия от разработки чего-то интересного лично Вам;

пополнения своего портфолио;

(bonus) есть шанс что Ваш pet проект может кому-то приглянуться и тогда из этого можно получить финансовую выгоду.

Как выбрать и на что обратить внимание?

Я рассматривал этот вопрос со стороны фронтенд разработчика и возможно для других отраслей приведенные ниже тезисы будут не валидны.

Самое главное — разработка должна приносить удовольствие. Технологии, дизайн или что-то ещё не должны вызывать у Вас отвращение, иначе такой pet проект может остановиться на этапе первого коммита.

Технологии

Раз Вы выбрали определенные технологии для своего домашнего проекта, то скорее всего они Вас интересуют и проблема приведенная выше Вас не касается. (Или же Вас заставляют писать на том что Вам отвратно?)

Дизайн

Тут все зависит от человека и ситуации. Есть два варианта:

Запариться и сделать крутейший дизайн.

lvl up как дизайнера;

обычно свой дизайн очень приятен;

так как это собственный макет Вы в нём хорошо ориентируетесь и ещё на этапе дизайна продумываете некоторые фичи.

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

Найти готовый дизайн и работать с ним.

быстро (хотя поиск может затянуться, об этом ниже);

не нужно отвлекаться на дизайн.

не всегда можно найти дизайн для Вашей задумки, особенно если она не типичная;

готовые бесплатные макеты не всегда красивые.

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

Вот пару вечно актуальных примеров:

Личный опыт

В этом блоке я раcскажу как придумывались / создавались мои pet проекты.

Начало (AniList)

Шёл июль 2020 года. Спустя семестр изучения JavaScript’а в колледже я решил изучить какой-то фреймворк. Выбор пал на React. Через пару дней ознакомления с фреймворком я наткнулся на серию видеороликов по разработке веб-приложения пиццерии на ютуб канале Archakov Blog. И решил сразу же применять изученное в видео на реальном проекте, но просто переписывать код из видео в IDE было не интересно. По этому я решил делать аниме список.

Выше я писал про два варианта получения дизайна для проекта. Какой же из вариантов выбрал я при создании макета? Оба. Для начала я зашёл на уже существующие сайты с такой-же тематикой потом пролистал Behance и собрал своего «франкенштейна» из собственных идей и кусков уже готовых дизайнов.

Что такое pet проекты. Смотреть фото Что такое pet проекты. Смотреть картинку Что такое pet проекты. Картинка про Что такое pet проекты. Фото Что такое pet проектыСкриншот проекта из Figma

По готовому макету я понял что мне нужно будет где-то брать информацию об аниме (API, AJAX), где-то хранить её (Redux), а также как-то организовать авторизацию и хранение информации о пользователях (Firebase) + работа с версиями файлов(GIT, GitHub). В итоге мне предстояло ознакомиться как минимум с 5 новыми технологиями помимо React.

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

ToDo list

Следующим проектом должен был стать todo list. Мой одногруппник (тоже начинающий фронтендер) должен был делать frontend на Angular, а я (неожиданно) backend. Тут мне пристояло погрузиться в мир backend’а и может не изучить, но хорошо так ознакомиться с NodeJS, Express, MongoDB, mongoose, cors, dotenv, способами авторизации, деплоем на Heroku и ещё глубже понять работу API.

По итогу вышло так что и я и мой товарищ каждый для себя писали back и front end.

Остальное

Потом было ещё пару проектов. Вкратце напишу что для себя я вынес из них.

Что такое pet проекты. Смотреть фото Что такое pet проекты. Смотреть картинку Что такое pet проекты. Картинка про Что такое pet проекты. Фото Что такое pet проекты

Приложение погоды:

рисование на canvas’е;

работа с геолокацией;

анимация React компонентов.

Что такое pet проекты. Смотреть фото Что такое pet проекты. Смотреть картинку Что такое pet проекты. Картинка про Что такое pet проекты. Фото Что такое pet проекты

парсинг информации из сайта;

работа с Excel таблицами в NodeJS.

Что такое pet проекты. Смотреть фото Что такое pet проекты. Смотреть картинку Что такое pet проекты. Картинка про Что такое pet проекты. Фото Что такое pet проекты

Что такое pet проекты. Смотреть фото Что такое pet проекты. Смотреть картинку Что такое pet проекты. Картинка про Что такое pet проекты. Фото Что такое pet проекты

Менеджер подписок:

Что такое pet проекты. Смотреть фото Что такое pet проекты. Смотреть картинку Что такое pet проекты. Картинка про Что такое pet проекты. Фото Что такое pet проекты

Магазин аксесcуаров (backend) (в разработке):

более глубоко познал MongoDB + mongoose;

Портфолио (на стадии дизайна):

создание кастомного курсора.

Заключение

Недавно меня постигла идея переписать свой первый pet project (Аниме список), но теперь с новыми навыками: backend на NodeJS, Express, GraphQl вместо Firebase, и frontend React + Apollo Client, ну и дизайн по красивше сделать. Эта мысль является результатом моего прогресcа который я постиг благодаря pet проектам.

«Всякое дело совершенствуется овладением техники. Всякий навык достигается упражнением.» Гиппократ

Источник

Pet-проекты: зачем они нужны, и стоит ли тратить на это время

Личные проекты для разработчиков и инженеров – важная и интересная тема. В интернете есть множество упоминаний того, как такие проекты приводят к масштабным достижениям – так было в случае нобелевских лауреатов по физике Андрея Гейма и Константина Новоселова, чей эксперимент первоначально состоялся вечером в пятницу, когда ученые по традиции тестировали различные безумные на первый взгляд идеи.

Многие компании также пытаются стимулировать такую активность работников – в Google было правило 20%, которое привело к рождению Gmail, AdSense и Google News, а в Twitter инженеры получали неделю свободную от обычных обязанностей для экспериментов. Да что далеко ходить – мы делали вебинар с Android-разработчиком Дмитрием Рязанцевым (вот его статья про работу на Toptal) – запущенную им игру Draw and Ride скачали 250,000 раз, а начиналась она именно как pet-проект.

Звучит вдохновляюще, но насколько подход pet-проектов актуален в 2021 году? Считают ли до сих пор инженеры наличие таких проектов важным для себя и профессионального развития? С какими проблемами сталкиваются те, кто ими занимается? В новой статьей мы решили найти ответы на эти вопросы.

Есть целый ряд аргументов, которые всегда приводят сторонники личных хобби-проектов. Вот главные и них.

Разработчик из Лондона Чанна Джайамуни (Channa Jayamuni) в своей статье на LinkedIn так описывает пользу pet-проектов:

Разработка софта – отнюдь не самая увлекательная профессия до тех пор, пока вам не дали поработать над любимыми задачами.
Если вы не работаете в Google или в похожей продвинутой компании с интересными проектами и низким уровнем стресса, то вряд ли ваша работа сплошь состоит из таких задач.
В большинстве случаев разработчик может ожидать получить смесь из унылой рутины и относительно неплохих задач. Далеко не всем везет работать с новейшими технологиями в профессиональных средах, чтобы оставаться на острие развития отрасли просто выполняя рабочие обязанности.

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

Многие руководители прямо заявляют о том, что наличие портфолио собственных проектов у инженера – один из ключевых пунктов при найме.

Так директор компании-разработчика открытой NoSQL базы данных ravendb Айенде Райен (Ayende Rahien) говорит о том, что при поисках разработчиков смотрит на наличе страсти к работе. По мнению топ-менеджера, у специалистов, которые не могут найти время на развитие собственных проектов, такой страсти нет, они не собираются выходить за рамки рабочих обязанностей. Нанимать таких разработчиков в небольшую команду может быть не лучшей идеей.

Майк Миллер (Michael Miller) работает на позиции Engineering Manager в Bloomberg LP и считает, что компании должны официально позволять ведущим специалистам развивать свои проекты в рабочее время, и что такой подход может быть отдельной HR-плюшкой для талантливых работников:

Ваша задача – делать таких ведущих работников максимально счастливыми. Никогда не знаешь, что произойдет, если позволить талантливому специалисту развивать свою страсть.
Вполне вероятно, это позволит открыть новую супер-звезду. Понятно, что возможность официально развивать свои проекты нужно заслужить.
Если ты едва справляешься с непосредственными обязанностями, то о каких pet-проектах может идти речь?

Несмотря на очевидные плюсы, существует и целый ряд трудностей при работе над дополнительными проектами вне работы. Кто-то называет эти трудности мифами, как инженер Twitter Аннель Де Джагер (Annelle De Jager). Тем не менее, вот как выглядит этот список:

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

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

Мы решили прояснить отношение разработчиков к ведению pet-проектов в текущих условиях удаленки и глобальной пандемии. Поэтому мы опросили знакомых инженеров из таких компаний как Gett, «Лаборатория Касперского», Uber, Smartcat и др. и задали им вопросы о том, развивают ли они pet-проекты и с какими трудностями сталкиваются при этом. Вот главные выводы по итогам опроса:

Если вы ведете свои pet-проекты, укажите в боте @g_jobbot информацию о своих проектах, чтобы получать вакансии с учетом использованных в них технологий. Новая работа – отличный способ «монетизации» хобби!

Ведете ли pet-проекты вы? Если да, то зачем?

Источник

Pet-проекты: зачем они нужны, и стоит ли тратить на это время в 2020 году + опрос

Что такое pet проекты. Смотреть фото Что такое pet проекты. Смотреть картинку Что такое pet проекты. Картинка про Что такое pet проекты. Фото Что такое pet проекты

Личные проекты для разработчиков и инженеров – важная и интересная тема. В интернете есть множество упоминаний того, как такие проекты приводят к масштабным достижениям – так было в случае нобелевских лауреатов по физике Андрея Гейма и Константина Новоселова, чей эксперимент первоначально состоялся вечером в пятницу, когда ученые по традиции тестировали различные безумные на первый взгляд идеи.

Многие компании также пытаются стимулировать такую активность работников – в Google было правило 20%, которое привело к рождению Gmail, AdSense и Google News, а в Twitter инженеры получали неделю свободную от обычных обязанностей для экспериментов – найти вакансии от столь же продвинутых компаний можно через бота @g_jobbot.

Да что далеко ходить – недавно мы делали вебинар с Android-разработчиком Дмитрием Рязанцевым (вот его статья про работу на Toptal) – запущенную им игру Draw and Ride скачали 250,000 раз, а начиналась она именно как pet-проект. Звучит вдохновляюще, но насколько подход pet-проектов актуален в конце 2020 года? Считают ли до сих пор инженеры наличие таких проектов важным для себя и профессионального развития? С какими проблемами сталкиваются те, кто ими занимается? В новой статьей мы решили найти ответы на эти вопросы.

Зачем нужны pet-проекты: аргументы «За»

Есть целый ряд аргументов, которые всегда приводят сторонники личных хобби-проектов. Вот главные и них.

Pet-проекты приносят удовольствие и позволяют развиваться

Разработчик из Лондона Чанна Джайамуни (Channa Jayamuni) в своей статье на LinkedIn так описывает пользу pet-проектов:

Разработка софта – отнюдь не самая увлекательная профессия до тех пор, пока вам не дали поработать над любимыми задачами. Если вы не работаете в Google или в похожей продвинутой компании с интересными проектами и низким уровнем стресса, то вряд ли ваша работа сплошь состоит из таких задач. В большинстве случаев разработчик может ожидать получить смесь из унылой рутины и относительно неплохих задач. Далеко не всем везет работать с новейшими технологиями в профессиональных средах, чтобы оставаться на острие развития отрасли просто выполняя рабочие обязанности.

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

Личные проекты помогают найти лучшую работу

Многие руководители прямо заявляют о том, что наличие портфолио собственных проектов у инженера – один из ключевых пунктов при найме.

Так директор компании-разработчика открытой NoSQL базы данных RAVENDB Айенде Райен (Ayende Rahien) говорит о том, что при поисках разработчиков смотрит на наличе страсти к работе. По мнению топ-менеджера, у специалистов, которые не могут найти время на развитие собственных проектов, такой страсти нет, они не собираются выходить за рамки рабочих обязанностей. Нанимать таких разработчиков в небольшую команду может быть не лучшей идеей.

Хотите найти работу, на которой пригодятся полученные в ходе запуска pet-проектов навыки? Используйте наш бот @g_jobbot. Его просто и быстро настроить: нужно указать свою сферу и стек технологий, желаемую зарплату, локацию или «релокейт». Подходящие вам варианты будут приходить в Телеграм.

Что такое pet проекты. Смотреть фото Что такое pet проекты. Смотреть картинку Что такое pet проекты. Картинка про Что такое pet проекты. Фото Что такое pet проекты

Компаниям выгодно стимулировать эксперименты сотрудников

Майк Миллер (Michael Miller) работает на позиции Engineering Manager в Bloomberg LP и считает, что компании должны официально позволять ведущим специалистам развивать свои проекты в рабочее время, и что такой подход может быть отдельной HR-плюшкой для талантливых работников:

Ваша задача – делать таких ведущих работников максимально счастливыми. Никогда не знаешь, что произойдет, если позволить талантливому специалисту развивать свою страсть. Вполне вероятно, это позволит открыть новую супер-звезду. Понятно, что возможность официально развивать свои проекты нужно заслужить. Если ты едва справляешься с непосредственными обязанностями, то о каких pet-проектах может идти речь?

Что может пойти не так

Несмотря на очевидные плюсы, существует и целый ряд трудностей при работе над дополнительными проектами вне работы. Кто-то называет эти трудности мифами, как инженер Twitter Аннель Де Джагер (Annelle De Jager). Тем не менее, вот как выглядит этот список:

Нехватка времени

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

Отношения с друзьями и семьей

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

Негативные эмоции в случае неудачи проекта

Что в итоге: немного статистики и опрос

Мы решили прояснить отношение разработчиков к ведению pet-проектов в текущих условиях удаленки и глобальной пандемии. Поэтому мы опросили знакомых инженеров из таких компаний как Gett, «Лаборатория Касперского», Uber, Smartcat и др. и задали им вопросы о том, развивают ли они pet-проекты и с какими трудностями сталкиваются при этом. Вот главные выводы по итогам опроса:

UPD: как к pet-проектам относятся читатели на Хабре

Первые данные нашего опроса позволили нам собрать вот такую интересную статистику. Итак, большинство читателей Хабра ведут pet-проекты:

Что такое pet проекты. Смотреть фото Что такое pet проекты. Смотреть картинку Что такое pet проекты. Картинка про Что такое pet проекты. Фото Что такое pet проекты

При этом только треть опрошенных думают заработать на своих хобби-проектах:

Что такое pet проекты. Смотреть фото Что такое pet проекты. Смотреть картинку Что такое pet проекты. Картинка про Что такое pet проекты. Фото Что такое pet проекты

Если вы ведете свои pet-проекты, укажите в боте @g_jobbot информацию о своих проектах, чтобы получать вакансии с учетом использованных в них технологий. Новая работа – отличный способ «монетизации» хобби!

Мы будем обновлять информацию по мере поступления новых голосов!

Источник

Pet проект: что это за «зверь» такой и чем он полезен программисту

Pet проект – это индивидуальный или групповой проект, которым программист занимается в свободное от основной работы время, так сказать, для души. С его помощью можно дополнительно прокачивать навыки, а результаты – фиксировать в портфолио. Для джуниоров это ещё и неплохая возможность компенсировать отсутствие коммерческого опыта в резюме.

Иногда pet проекты ещё называют side проектами. Но суть остается одна: такого рода проект требует усилий, желания и свободного времени. Поговорили с нашими разработчиками о том, как искать идеи для pet проектов и их роли в профессиональном развитии.

Дмитрий Егоров

Software Engineer iTechArt

Считает, что идеи side проектов находят авторов сами.

Антон Лазовский

Team Manager iTechArt

Придерживается мнения «Чем больше делаешь, тем больше успеваешь»

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

ДМИТРИЙ ЕГОРОВ: Сканворды: игра в слова – игра для ios, разработка заняла примерно 4 месяца. Идея возникла в поездке где-то между Ивано-Франковском и Львовом. Перед поездкой, ради шутки, купил журнал со сканвордами. Я тогда много занимался решением алгоритмических задач, стало интересно, как они составляются. Оказалось, составление сканворда – это NP-полная задача, которую я решал с помощью backtracking с оптимизациями. Уже в процессе написания алгоритма подумал, что неплохо бы было проверить на реальных данных, например, в приложении на телефон.

Вообще планов по этому проекту у меня много, например, хочу добавить статистику между пользователями, адаптировать под iPad, добавить темную тему… И Android версия в этом списке тоже есть, но пока все таки фокус на iOS.

АНТОН ЛАЗОВСКИЙ: На данный момент в iTechArt у меня два внутренних side проекта (да, звучит весело): Trophy и квесты. Trophy – проект с достижениями сотрудников, по факту – игрофикация большинства рабочих процессов. В нем выдаются ачивки за участия и победы сотрудников в различных внутренних развлекательных и внешних спортивных мероприятиях, в тренерской жизни компании (менторы, лекторы, спикеры). Это делает удобным сбор информации для ежегодных награждений наших «активистов», а также многим добавляет мотивации попробовать себя в новых активностях. Проект был создан пару месяцев назад, и сейчас перешел в активную фазу 🙂

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

Еще когда-то side проектом была внутренняя платформа Students Lab, которая пару лет назад была создана для тестирования и обучения кандидатов на внутренних курсах, но сейчас она сильно разрослась, стала официальным внутренним проектом и полноценно используется рядом департаментов.

Зачем разработчикам вообще нужны pet проекты? Чему можно научиться, выполняя side проект?

ДМИТРИЙ ЕГОРОВ: Меня такого рода проекты многому научили. Например, тайм-менеджменту, ведь когда рассчитываешь только на свои силы, начинаешь эффективнее использовать время, а также расставлять приоритеты.

АНТОН ЛАЗОВСКИЙ: Честно говоря, нельзя сказать, что side проект сильно отличается от коммерческого. На нем все еще есть ряд задач различной сложности, где надо использовать различные технологии. Так что тут, как и на любом коммерческом проекте – чем больше и чем сложнее задачи, тем быстрее на них развиваешься.

Как найти идею для side проекта?

ДМИТРИЙ ЕГОРОВ: Думаю, скорее идеи нас находят. Когда мы ложимся спать, гуляем или, как в моем случае, едем куда-то. Я, например, веду список, который периодически пересматриваю. Идеи из списка ценны тем, что проходят проверку временем.

АНТОН ЛАЗОВСКИЙ: На самом деле тут все довольно просто. Можно просто идти по улице и случайно подумать, что «было бы здорово, если бы у нас было такое в компании». А в случае со Students Lab платформой это было даже необходимостью, ибо тогда было около 150 желающих на 8 мест в группу на курсы по Python. Очень сложно было в сжатые сроки оценить наличие базовых знаний у ребят, поэтому пришлось автоматизировать процесс в виде онлайн-тестирования по языку и близлежащим технологиям. Благодаря этим результатам получилось провести всего 14 собеседований и набрать группу.

В pet проекте ты «сам себе босс». Как в таком случае объективно оценить результат проделанной работы и готовить изменения?

ДМИТРИЙ ЕГОРОВ: Оценить результат можно по отзывам пользователей или по их retention. Я собираю аналитику через Firebase и AppsFlyer и слежу за ключевыми ивентами. С изменениями главное не впадать в перфекционизм и делать их небольшими итерациями.

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

АНТОН ЛАЗОВСКИЙ: Тут тоже все просто – надо постоянно держать контакт с теми, кто просит какие-то обновления, и с пользователями. На основе фидбека приоритизировать задачи и побыстрее выполнять 🙂

Баланс между работой, side проектом и личной жизнью. Как ты его находишь?

ДМИТРИЙ ЕГОРОВ: Мне помогает планирование/тайм-менеджмент – обычно в воскресенье я расписываю что и в какой день надо сделать.

На твой взгляд, pet проекты добавляют веса в резюме?

ДМИТРИЙ ЕГОРОВ: Думаю, интересно обсуждать их на собеседованиях, но мне пока не приходилось свой проект обсуждать на интервью.

АНТОН ЛАЗОВСКИЙ: Однозначно да, так как уже говорил, что они мало чем отличаются от коммерческих в плане задач и развития. Единственное, что для заказчика явно будет важным увидеть в резюме и коммерческие проекты, чтобы быть уверенным, что человек сможет занять не управляющую роль в команде, получать задачи, где разработчик далеко не всегда может повлиять на ее суть, и надо будет просто взять и сделать, что сказали.

Источник

Pet-проекты: прихоть, инструмент самосовершенствования или попытка отвлечься?

Привет, Хабр! Меня зовут Кирилл Кошаев, я Java-разработчик в «Газпром информ» и преподаватель профессии Java-разработчик PRO на образовательной платформе Skillbox. Сегодня хотел бы поговорить о такой интересной теме, как pet-проекты. Здесь, на Хабре, они есть у многих, у меня, кстати, тоже. И я хотел бы обсудить важность pet-проектов для представителей IT-отрасли.

Личный кейс

Сперва расскажу о собственном опыте ведения pet-проектов. Как и говорилось выше, у меня их много. Но я не веду все их одновременно: большинство идет в «долгий ящик», какие-то забрасываются и забываются, а некоторые становятся серьезными проектами, которые не стыдно и в портфолио показать.

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

Размышления на эту тему привели меня к следующему решению: необходимо собрать все, что я изучил в одну большую кучу и запилить уже что-то более серьезное, что-то, что будет не просто очередным tutorial example, а самодостаточным приложением, которое воплотит в себе конкретный функционал и будет решать определенные задачи. Появилась амбиция разработать что-то полезное, что можно было бы скачать/загрузить/установить и использовать на своем устройстве всем, кто того пожелает. Осталась сущая малость — придумать идею.

Генерация идеи — камень, на который находит коса всякого начинающего программиста, приступающего к своему первому pet-проекту. В первую очередь, я столкнулся с тем, что куда бы я ни посмотрел и что бы ни придумал, в 90% случаев аналогичное приложение уже существовало на рынке и даже не в единственном воплощении, а оставшиеся 10% занимали идеи, на реализацию которых уже требовалась команда и, соответственно, все необходимые для командной разработки инструменты и технологии, а ведь я только-только разделался с ядром выбранного мной языка программирования.

Как раз здесь обычно и наступает переломный момент, поскольку нечто вроде «Hello, World» и простых задачек писать уже не хочется, а для хорошего pet-проекта нет достойной идеи. У новичков здесь обычно звучит фраза в стиле: “Ну… я не знаю, что делать дальше, все дико сложно и я не очень понимаю, что еще можно написать на этом языке X, кроме всех тех helloworld-ов, которые я уже написал”. Далее программирование либо оказывается заброшенным вообще, либо проходит смену изучаемого языка/технологии/библиотеки/фреймворка (нужное подчеркнуть), и все начинается с самого начала, пока человек снова не придет к этой переломной точке.

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

Почему именно игра:

Сколько их будет, pet-проектов?

Я уверен, что pet-проекты были, есть и будут время от времени возникать в практике практически любого программиста. Почему? Я считаю, что, когда заканчивается эра Hello World программ, начинается эра pet-проектов. Иными словами, когда вы, как начинающий программист, упираетесь в потолок практической ценности от написания простейших программ типа “вывод в консоль звездочками елочек”, “greetings app”, и тому подобных, для дальнейшего роста вам придется переходить к написанию более сложных программ, то есть pet-проектов.

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

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

А времени сколько на это уходит?

Моя личная практика, показывает, что время, уделяемое pet-проекту, не является константой. Я не подчиняю работу над pet-проектом фиксированному графику, а работаю в свое удовольствие и в меру возможностей.

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

Еще один важный нюанс — судьба таких проектов. На мой взгляд, предопределить ее нельзя. Внезапно вас может озарить, кажущаяся на первый взгляд совершенно гениальной идея. Вы на голом энтузиазме напишете пару тысяч строк кода, а потом внезапно поймете, что запал прошел и изначальная идея уже не кажется такой гениальной, как раньше. В другой раз вы проведете за развитием очередного pet-проекта пару месяцев, доведете дело до версии 1.0, выполните релиз, но дальше версии 1.0 уже не пойдете, предпочитая переключиться на что-то другое. И конечно, есть все шансы, что вы попадете в яблочко, и ваш pet-проект начнет стремительный взлет к высотам production-grade проектов.

Польза pet-проекта для начинающего программиста

Новичку работа над pet-проектами позволяет перейти от экспериментов с возможностями изучаемого языка к реальными командным проектам, за работу над которыми платят деньги. Для продвинутых программистов работа над pet-проектами — возможность исследовать и пробовать в деле различные технологии, например с помощью pet-проекта подробно изучить процесс создания REST-сервисов. Наконец, pet-проекты можно создавать и ради фана. Например, я иногда люблю воспроизводить в различных вариациях game of life, чтобы в качестве разрядки отвлечься от работы и предотвратить выгорание.

Начинать свой первый pet-проект следует в интересной для себя области. Моим первым языком программирования был VisualBasic, но хоть сколько-нибудь значимые программы я начал писать только после 1.5 лет программирования на Java. В этом языке, на мой взгляд, есть в целом два больших направления: enterprise и мобильная разработка. И поскольку к enterprise-разработке я впервые подошел только спустя еще год, на момент создания первого pet-проекта мой выбор был очевиден. Именно поэтому первый мой проект — небольшая 2D игра для смартфона. C тем же успехом это могло бы быть все, что угодно, например, какие-нибудь Arduino/RaspberryPI проекты в том случае, если бы я увлекался электротехникой. Или, скажем, какая-нибудь новая js-библиотека, если бы моим основным языком был JavaScript, а не Java.

В качестве вывода

Pet-проект — нечто среднее между простейшими программами, на которых вы учитесь работать с выбранным языком, и production-grade проектами, на которых вы зарабатываете деньги. Зачем они нужны? Pet-проекты, в первую очередь, учат разработке. Не простейших программ, а именно проектов, из которых позднее и при благоприятном стечении обстоятельств могут вырасти production-grade проекты.

Pet-проекты — это личный гараж-мастерская, где программист или даже небольшая команда разработчиков, комбинируя различные технологии, идеи и подходы к их реализации, может в итоге получить то, что называется MVP — минимально жизнеспособный продукт. Вместе с тем, pet-проекты позволяют вам не только экспериментировать и весело проводить время. Как было сказано выше, они учат создавать целостные проекты, ориентироваться в огромном мире библиотек, фреймворков и прочих инструментов. Pet-проекты заставляют нас двигаться дальше, осваивать новые технологии, расширять свой инструментарий, работать в команде, выйти за пределы HelloWorld и MyFirstGreetingsApp программ.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *