Веб-индустрия переполнена историями о пет-проектах, которые переросли в успешный бизнес. Вот и я нередко увлекаюсь какими-нибудь идеями после основной работы. И хотя это определённо заманчивая перспектива, работа над личным проектом не всегда столь лучезарна – порой они просто не выгорают. Если вы читаете эту статью, то есть вероятность, что вы недавно отказались (или подумываете отказаться) от своего пет-проекта. В таком положении находились многие из нас. Да что тут говорить, заброшенные личные проекты даже стали своего рода мемом в среде разработчиков.
Тем не менее ко мне часто обращаются начинающие программисты за советом, и в последнее время их всё чаще беспокоит то, что у них не получается реализовывать пет-проекты так быстро или так часто, как хотелось бы. И такая тревожность абсолютно понятна. Когда в среде разработки господствует культура сверхактивности и концепция «непрерывной поставки», а на технических собеседованиях кандидатов зачастую оценивают на основе результатов их «внештатного программирования» (имеются в виду хакатоны, клубы программистов и прочее, — прим. пер.), заброшенные пет-проекты перестают казаться чем-то забавным. И мне это не нравится.
Мы слышим столько историй об успешных личных проектах, но что, если более открыто говорить о тех, которые провалились? Многие из нас проводят ретроспективный анализ на работе, но не в отношении пет-проектов. А почему бы нам не пролить свет на всё то время, которое было вложено в начинания, которые так и не ожили? На заброшенное ПО, которое в своё время казалось хорошей идеей. По нашим средам разработки до сих пор скитаются духи захороненных каталогов
node_modules
.И здесь я хочу рассказать о своём недавнем пет-проекте, который забросил в тот же день, в который запустил.
▍ Предыстория
Моя партнёрша – латышка, и несколько лет назад я занялся изучением их языка. Поскольку Латвия страна не столь значительная, хорошие обучающие курсы по этой теме найти сложно, но я всё равно делал приличные успехи. Так было, пока я не узнал, что в латвийском языке есть падежи. Если вы ранее не сталкивались с понятием «падеж», то немного поясню.
В таких языках, как английский, нужное грамматическое значение словам в предложении придаётся с помощью их правильной расстановки и предлогов типа «для», «к» или «в». Если порядок расстановки нарушить или упустить предлог, то смысл предложения может исказиться. Например, «Tom gives the book to Anna» (Том даёт книгу Анне) звучит естественно, а вот «Tom the book to Anna gives» уже нет. И падежи эту ситуацию несколько меняют. При их использовании мы уже не опираемся на порядок слов и предлоги, а раскрываем смысл предложения, изменяя окончания существительных. Возьмём то же предложение на латвийском: «Toms dod grāmatu Annai» (для большей наглядности окончания выделены жирным). Если перевести это предложение на английский буквально, то получится «Tom-субъект gives book-объект Anna-кому».
В лингвистическом смысле падежи – это очень крутая система, которая избавляет от необходимости следить за порядком слов. Но вот для учащегося это создаёт проблему, поскольку тебе приходится следить за всеми окончаниями изучаемых слов. Всего в латышском семь падежей, два грамматических рода (каждый с тремя отдельными склонениями), и существительные могут быть единственными либо множественными. Короче, всего нужно запомнить 84 окончания.
Так что падежи для человека, чьим родным языком является английский, это непросто. Но, к счастью, я также ещё и разработчик, поэтому во мне прошита твёрдая уверенность, что я могу решить всё с помощью кода. Что, если я создам приложение-тест, которое поможет мне изучить окончания существительных? Попахивало началом пет-проекта. ?
▍ Подход
Я хотел сделать приложение простым. Несмотря на то, что мне предстояло освоить много другой грамматики, я сосредоточился только на склонениях существительных, и это должно было упростить доведение изначальной идеи до минимального жизнеспособного продукта (minimum viable product, MVP). Механизм теста будет последовательно выдавать латвийские существительные, а пользователю нужно будет склонять эти существительные, используя подходящие окончания. Чтобы получилось более интересно, пользователю будет позволено совершить три ошибки, и я реализую простую систему рекордов, чтобы отслеживать результаты своих тестов.
Технологии я тоже использую простые. Когда я всё это планировал, только вышла версия Svetle 3.0, поэтому для UI я решил задействовать именно этот фреймворк. Я планировал разместить всё на Netlify, так что в качестве бэкенда решил написать пару бессерверных функций для вывода вопросов и проверки ответов. Основной список существительных будет подаваться из статического файла JSON, а поскольку я буду единственным пользователем, можно спокойно сохранять предыдущие результаты и таблицу рекордов в локальном хранилище. База данных не потребуется.
А вот для создания механизма проверки ответов нужно было погрузиться в тему. После подробного прочтения материалов по склонению существительных и классификации их различных типов я решил, что проще всего будет создать систему, которая на основе регулярных выражений будет вычленять корни существительных и добавлять нужные суффиксы.
Продумав сей прекрасный план, я приступил к коду.
▍ Реализация
Спустя неделю вечерних трудов над своим проектом, я уже вносил финишные штрихи в его MVP-версию. Готовое приложение я развернул на Netlify и начал своё первое тестирование.
Интерфейс был очень прост, но вполне сносен и работал на мобильных устройствах. Как я и планировал, приложение поочерёдно выдавало вопросы, и сеанс завершался после трёх ошибочных ответов. Между тестами корректно отображалась статистика правильных/неправильных ответов для каждого слова и сохранялся общий результат. Радуясь, что всё исправно работает, я открыл банку пива и начал обучаться.
Но довольно быстро стало ясно, что в приложении есть проблема, которую я не предвидел. Тест был слишком простым. Хуже того, если я не допускал трёх ошибок, то он продолжался бесконечно. Работать с ним было не интересно.
Я задумался, как можно сделать его более увлекательным и, в конечном итоге, меня осенило: эту проблему не получится решить с помощью кода. Как оказалось, продумывая и программируя всю логику, необходимую для тестирования окончаний, я пассивно изучил все сопутствующие правила.
В течение недели я долгими вечерами трудился над изучением темы и созданием приложения, чьей целевой аудиторией должен был стать единственный человек, и в результате оно оказалось мне не нужно. М-да…
▍ Возможно, реальная польза в написанном коде
Из всех моих заброшенных пет-проектов именно этот заставил меня взглянуть на всё иначе. Даже если бы я никогда не использовал конечный продукт, сама работа над проектом всё равно косвенно вела к достижению поставленной цели. И тут я понял одну важную вещь: мы часто описываем заброшенные проекты как «провалы», но по факту всё зависит от того, как на это посмотреть.
Несмотря на те убеждения, которые могут навязывать вам работодатели, успех пет-проекта не обязательно должен определяться красивым выведенным в продакшен продуктом. Мы работаем в практической среде, и любой опыт разработки – будь то успешной, неудачной или заброшенной – всё равно опыт. Если вы сможете избавиться от гнетущего стремления поскорее поставить готовое решение, подойдя к задаче как к созданию одноразового прототипа, то пет-проекты станут отличным плацдармом для экспериментов. В результате создания своего обучающего приложения я понял, что даже сам процесс написания кода может стать полезным инструментом для решения задачи.
И я не хочу сказать, что следует игнорировать причины, по которым подобные проекты забрасываются – интроспекция по-прежнему важна – но считаю, что акцент на достигнутом прогрессе в долгосрочной перспективе будет восприниматься более конструктивно. Забросив своё приложение, я вернулся к другим полузабытым пет-проектам, томящимся у меня на ноутбуке. Там, где до этого я жаловался на череду неудач и потраченное время, теперь мне удалось переключить внимание на то, что действительно удалось. В одном из таких проектов я увидел, что именно в нём впервые научился создавать API на Go. В другом меня впечатлило то, как я освоил работу с данными карт ГИС (географическая информационная система) в Postgres. Ещё в одном заброшенном каталоге я не нашёл ничего, кроме нерабочей анимации – к которой позже вернулся и развил в этот сайт (имеется в виду сайт оригинала статьи, – прим. пер.).
▍ Выводы
Я до сих пор регулярно работаю над пет-проектами, но теперь уже с другим отношением и мотивацией. И разработчикам, которые сильно переживают за свои личные проекты, советую всегда убеждаться, что вы делаете их именно для себя и по веским причинам. Вместо того, чтобы подходить к своему первому проекту чисто из амбициозных соображений или чтобы впечатлить работодателя, взгляните на него в первую очередь как на способ изучить новые возможности. Как только вы наберётесь достаточно опыта (то есть заброшенных пет-проектов), остальное придёт само. Личные проекты должны быть креативными и интересными. Если вы заметите, что вас начинает беспокоить срок готовности вашего начинания или, хуже того, если вы из-за него начнёте выгорать, то не мешкая бросайте. Велика вероятность, что при внимательном рассмотрении вы заметите немало ценности, которую он вам уже принёс.
Telegram-канал со скидками, розыгрышами призов и новостями IT ?
Комментарии (23)
Fedorkov
13.04.2024 10:52+1А где это такая подсветка синтаксиса с эффектами?
GospodinKolhoznik
13.04.2024 10:52+35Также готовятся к выводу следующие статьи этого цикла:
Не бойтесь закрывать книгу не дочитав её;
Не бойтесь выключать телевизор не досмотрев фильм;
Не бойтесь выключать плеер не дослушав песню.
Daddy_Cool
13.04.2024 10:52+6Ох! У меня много проектов в состоянии "готово на 95%".
Переводи книгу - переводил, списывался с автором, советовался с проф филологами... осталось улучшить несколько мест... забросил.
Собирал усилитель - электроника собрана, корпус собран, но... не так просверлил отверстие - надо переделать одну штучку... заброшено.
Ну и еще найдется пару штук. Я пытался понять причины почему так происходит, вот что понял:
1. Фантазии опережают реальность - эмоцонально то, что я почти сделал - это то же самое, что сделал. Ну и думать проще чем делать. Когда делаешь - возникают дурацкие проблемы, которые вроде простые - типа а где взять станок чтобы просверлить вот такое отверстие (два наших не подходят, у соседей разболтан, есть у друзей, но у друзей на даче, и т.п...) А когда знаешь, что ты рожден чтобы покорять вселенные (ну или проектировать интереснейшие девайсы), а тебе приходится думать как просверлить, пардон, дырку...
2. Когнитивное искажение "Ошибка планирования" - дело отнимает гораздо больше времени чем рассчитывашь изначально, пет-проект начинает отнимать время у других дел.
3. Возникают регулярные проблемы, а мотивация-то постепенно падает. В результате мотивации на последнюю проблему не хватает.
Из решений пока самое эффективное это привлечение других людей. В критический момент можно что-то перепоручить другому человеку - он свеженький, мотивированный, возьмет и сделает. Но! Это неспортивно. И такое решение имеет душок фатального недостатка. В моем случае, электроника усилителя была собрана другом-коллегой, а я по сути постоял рядом (и да - все равно не хватило последнего рывка).
---
И да - это всё висит в голове отнимая внимание.
Эффект Зейгарник. В среднем незавершённые действия у здоровых участников экспериментов вспоминались на 90 % лучше, чем завершённые. У больных шизофренией на 10 %.XXXXPro
13.04.2024 10:52+2Не только у вас. У меня тоже есть то, что я называю «эффектом 92-ого процента». То есть когда остаётся доделать процентов 8 от всей задачи, могу отложить очень надолго и вернуться и доделать оставшееся через несколько лет.
sepuka
13.04.2024 10:52"Tom the book to Anna gives" -- называется инверсия. Абсолютно законное изменение порядка подлежащего и сказуемого, если надо что-то акцентировать или добавить выразительности. Падежи, кстати, в английском тоже ещё не совсем до конца выветрились, в строгом смысле ажно целых два осталось, а в виде грамматических конструкций с помощью предлогов вполне себе ещё чётко выделяются родительный (of), дательный (to) и предложный (with, by). На резонный же ответ, что это же явно не окончания, есть не менее резонный факт, что в разных языках падежи задаются и суффиксами и префиксами и даже тоновыми контурами слова.
ilia_bonn
13.04.2024 10:52+1Хехе, хорошо, что вы забросили свой пет-проект в тот же день. Я вот почти год выстраивал волейбольное сообщество, собрал человек 200, всего себя этому посвятил. Так сказать, пет-проект вне тематики ИТ. Теперь пришло время двигаться дальше, сама логика и жизнь против того, чтобы продолжать этим заниматься, - так что я и не буду. Но так кошки скребут на душе...
Так что пришла в голову идея про новую тему статьи: Как справиться с болью от расставания с очередным пет-проектом :Д
Tim02
13.04.2024 10:52Я тоже организовал мечтное сообщество по танцам. Больше 1к. Потом выгорел но не стал забрасывать. Начал продавать рекламу в нем и интерес потихоньку вернулся)
sovaz1997
13.04.2024 10:52+2Если вы заметите, что вас начинает беспокоить срок готовности вашего начинания или, хуже того, если вы из-за него начнёте выгорать, то не мешкая бросайте
То есть, по сути, бросать из-за малейших труднотей?
Во-первых, нкио не запрещает просто взять паузу на какое-то время, а потом вернуться к проекту. Во-вторых, чтоэе это за проект такой, из-за которого ты начнешь выгорать? Если это так, то, скорее всего, этот проект и не нужен. Срок готовности? А в чем проблема, кто-то за спиной стоит и подгоняет?
xxxDef
13.04.2024 10:52+2Работа - ради результата, хобби - ради процесса. Когда пет-проект закончился - закончился и процесс, это печально и нужно грустить а не радоваться.
А если изначально пет-проект начинался ради результата - то это просто вторая работа, которая требует энергии, скоро надоест и будет заброшена как бесперспективная.
Gradiens
13.04.2024 10:52+2Странная проблема: бросить пет-проект.
Это же по определению проект, с которым делаешь что хочешь и как хочешь. Главное тут слово "хочешь".
Перестал хотеть - ну все, занялся чем-то более привлекательным. Никому ничего не должен. Даже себе. Особенно себе.
Это как купить тортик и обнаружить, что съел половину, а вторая половина не лезет. Не лезет - не надо. Убрал в холодильник, может потом придет аппетит. Аппетит не пришел? Ничего страшного. Положил тортик в мусорку и переключился на другие активности. Не стоит сокрушаться, что не можешь его съесть: он уже залежался. Он не нужен. Не стоит пихать в себя залежавшийся тортик. Это не очень приятно и не очень полезно.
Laryx
13.04.2024 10:52+1По мне - так главная проблема в неопределённости термина "пет-проект". Я вот не понял, что это такое.
Проект, который нужен только мне? Проект, который для меня важен? Проект, который у меня идёт "по остаточному принципу"? Проект, который мне приносит душевный комфорт?
Думаю, если определиться с названием - тут же станет ясно, что автор и несогласные комментаторы под термином "пет-проект" понимают совсем разные вещи. Что ж удивительного, что возникают разногласия?
M_AJ
13.04.2024 10:52+2И здесь я хочу рассказать о своём недавнем пет-проекте, который забросил в тот же день, в который запустил.
Бросать что-то, что только начал и так легко, сложно бросить что-то, чему ты уже отдал значительное количество сил и времени (а иногда и денег).
php7
Кмк, какие-то примитивные соображения у автора.