Не знаю, каким получится данный опус, но я бы хотел получить на выходе некую ретроспективу для самого себя, и раз уж основное место в ней будет занимать вполне себе когда‑то великий, а для кого‑то до сих пор ужасный плагин WP‑Recall, то размещу эту публикацию именно здесь, где по сути всё и начиналось.
Я уже давно чувствовал необходимость дать какую‑то конкретику о том, что же происходит, но так и не смог выстроить для самого себя корректной модели развития событий тогда, когда это действительно было необходимо, а сейчас это скорее похоже на пук в пустоте — бесполезный, но в то же время такой необходимый, ибо нельзя всё вечно держать в себе, поэтому получайте. Начну издалека, но не переживайте, постараюсь кратко, зато станет понятна общая мотивация и причины некоторых поступков или их отсутствия.
Начало
Я уже не помню точно, но где‑то в 2011–2012 году во мне проснулся настоящий интерес к программированию. И хотя сейчас я бы не назвал свою деятельность в то время программированием, мои попытки засунуть нос в код плагинов WordPress казались мне очень увлекательными, а результат почти всегда удивлял и нередко повышал самооценку, толкая к новым свершениям. Когда я почувствовал в своих действиях достаточную уверенность, то увидел перед собой целый мир нереализованных возможностей, которые непременно необходимо реализовать. Помню, была местечковая доска объявлений на BuddyPress, в которую мне удалось напихать кринжовых идей и которую даже удалось успешно продать за 5 тысяч рублей (позже проект переедет на новый домен avito.ru, шутка). А как‑то вечером меня осенила потрясающая идея реализации проекта платного доступа к контенту. Суть была в том, чтобы пользователи могли публиковать текстовый и видеоконтент, закрывать его неким платным доступом и стимулировать своих подписчиков к его приобретению. Со своей стороны я должен предоставить только возможности для этого, ну и далее жить поживать, удерживая малую комиссию себе на радость.
И вот тут надо, видимо, сделать отступление, чтобы в полной мере прочувствовать момент. У меня по сути не было никаких навыков, позволяющих реализовать подобный проект, у меня не было никаких ресурсов. В то время я умел править чужой PHP‑код и пытался применять сей навык на фриланс‑бирже, большую часть времени подрабатывая контент‑менеджером. Но мне было на всё плевать, я видел цель и не видел препятствий. Я не анализировал рынок на предмет конкуренции, не пытался получить консультации со стороны или хотя бы соотнести свои возможности с масштабом задачи. Зачем, если я уже умею в PHP, а под боком есть такой удобный WordPress с зоопарком плагинов, правда? Madness... Madness and stupid.
После того как развернул сайт и проштудировал репозиторий WP, я быстро понял, что подходящих плагинов под эту задачу нет. Далее пришло понимание, что необходимо менять основную ценность — не просто закрывать какой‑то контент, но обеспечить продажу файликов, в которых этот контент будет находиться. Нужна была кастомная форма публикации, какая‑то загрузка, какая‑то оплата, какая‑то витрина — в общем, нужен был вполне себе полноценный интернет‑магазин цифрового контента. Имеющиеся плагины не покрывали текущих потребностей, я понял, что всё это дело придётся мне писать самому. А так как я понятия не имел о глубине этой жопы, то не остановился и приступил к реализации.
Собственно, моя наивность меня и берегла, потому что, имея довольно примитивные предположения о достаточном минимуме требуемого функционала, я довольно быстро этот примитивный минимум и реализовывал. Простая форма — есть, кнопка для загрузки файла на сервер — есть, кнопка на оплату — есть, взаимодействие по API с платёжкой — есть, витрина через архивные страницы записей — есть. Чек‑поинт, можем запускаться!
А нет, не можем. Должен быть личный кабинет. Для отзывов покупателей продавцам.
Я сразу решил, что в админку WP никто попадать не должен, а BuddyPress в моём проекте делать нечего. Мне нужен был простой личный кабинет — пароль там задать или имя, но главное — надо было прикрутить публикацию отзывов, это была бы имба, а раз я уже столько наговнокодил фоном, то сделаю и этот функционал быстро, и так же качественно, как и всё остальное.
Действительно, у меня получилось сделать задуманное довольно быстро — весь код ЛК поместился в одном файлике на сто строк. OMG, я чувствовал себя Цукербергом, чертовым гением, который уложил всё нужное в один файл, не то что этот BuddyPress — он просто распух на десятки, а может, и сотни файлов с кодом, который хрен пойми что делает. Не то что мой код, верно говорят: краткость — сестра таланта!
Итак, требуемый функционал моего супер‑пупер проекта был готов. Теперь‑то можем запускаться? Ну, наверное, можем, но не хотелось зазывать потенциальных клиентов на пустой сайт, необходимо чем‑то наполнить каталог. И как‑то недолго я думал, чем наполнять, решение было очевидным — выделить всё то, что я уже наваял, в отдельные плагины и разместить в каталоге. Так там появились: плагин формы публикации записей, плагин для загрузки и продажи файлов, плагин интернет‑магазина, плагин отзывов с личным кабинетом.
Как были написаны эти плагины — предмет отдельного изучения для патологоанатома, но случилось важное: именно в этот момент я сколотил из говна и палок телегу, на которой буду ехать более 10 лет.
Расцвет
Пробежавшись по всем ссылкам в поисковых запросах типа «продажа цифрового товара», «отзывы WordPress», «публикация WordPress» и т.п., я наспамил ссылок в комментариях на свой проект. Параллельно я уложил своё видение работы проекта и пока решил сосредоточиться только на продаже своих великолепных плагинов. Инкапсулировав отдельные части своего проекта в плагины, я столкнулся с необходимостью обеспечивать их взаимодействие друг с другом — их совместная работа требовала согласованности, и это стало некоторым вызовом. Решая его, я пришёл к осознанию, что всё должно замыкаться на личном кабинете. Именно там должен формироваться архив опубликованных товаров, история оплат, история заказов, содержание и пополнение баланса пользователя — это был необходимый минимум к уже имеющимся отзывам. Надо было думать, как это всё организовать внутри ЛК, так появились вкладки. И когда первые эксперименты по выводу произвольного контента в ЛК оказались успешны, пришло осознание, что я нашёл центральный продукт, вокруг которого всё и должно вертеться, а если я выделяю центральный продукт, то все остальные призваны его расширять.
Наконец получив на руки готовую концепцию своего главного продукта, я ещё раз пробежался по сайтам и снова наспамил, но уже с фокусом на функционал личного кабинета — простого, лёгкого, но функционального!
Старожилы помнят, что в своих первых итерациях плагин содержал внутри себя весь функционал таких расширений. Со временем там появились группы, рейтинг, форма публикации, баланс пользователя, интернет‑магазин также был перенесён туда.
И знаете что? Это сработало. Люди активно посещали мой ресурс, интересовались новым плагином, его функциональными возможностями. Чувствовалось, что есть целый пласт людей, которым данное направление было интересно, а моя поделка оказалась востребованной. Я попал в точку.
К 2013‑му году на сайте сформировалась постоянная активность, а над плагином велась уже постоянная системная работа. Впоследствии все расширения плагина были выделены в отдельные товары каталога — дополнения к плагину, а их список стал стремительно расширяться. Причём перечень этих дополнений рос не только в количественном, но и в качественном исполнении — возрастала их сложность.
Первоначальные дополнения расширяли свои настройки и функционал, новые дополнения предлагали функционал, который был востребован в качестве генератора прибыли: платный доступ, реферальная система, инвестиционная система, форум. Постоянно расширялся набор дополнений для подключения к платёжным системам и агрегаторам.
К середине 2022 года было реализовано и выпущено в каталог более трёхсот! различных дополнений, закрывающих пользовательские потребности в самых разных областях. К этому также приложили руку сторонние разработчики, у которых была возможность добавлять на продажу или для свободного распространения свои товары.
Максимальное количество установок на сайтах достигло 5000. Пусть это не фантастические цифры, но они позволяли сохранять интерес и вовлечённость. Плагин был востребован.
Смысл всего
Это время не было лёгкой прогулкой — весь период шла напряжённая работа, направленная не только на разработку новых дополнений, но и на поддержку уже имеющегося зоопарка в каталоге. Всё это отнимало много времени и сил, оттого время пролетало незаметно, годы проходили в постоянной погоне за недостижимым идеалом. Хотелось больше оптимизировать, сделать гибче, добавить возможностей, но всё это лишь набор задач. Знал ли я, ЧТО именно хочу получить в итоге? И знал ли я, КАК достигнуть этого?
Это главные вопросы, которые и определили причину падения.
10 лет — достаточный срок, чтобы оглядеться и подвести какие‑то итоги. Когда реализовал всё, что только можно, и идей больше нет, самое время остановиться. А когда останавливаешься после долгого бега, начинаешь замечать нечто другое.
Не знаю, верно ли это, но мне на ум приходит аналогия с птичкой или хомяком. Хотя хомяк несколько ограничен в своих возможностях, поэтому пускай будет птичка 🙂 Птичка долгое время обустраивает свой быт, обеспечивает себя водой, едой, даже что‑то сколотила себе из мебели — вот такая умелая птичка, живёт и радуется, а потом вдруг оказывается, что её дом — это клетка. Сидит такая птичка, и вроде всё есть, можно и дальше радоваться жизни, а смысл?
А какой у меня был смысл моей деятельности? Вроде всё очевидно: развивай свой продукт, зарабатывай деньги! Ну хорошо, а кем я себя позиционирую, чего я вообще хочу? А вот это интересный вопрос.
Одним чудесным днём, реализуя очередное расширение к плагину, привычно, на автомате, накидывая опции, проектируя CRUD, закладывая хуки, я осознал, что упёрся в потолок. Я уже давно не занимался ничем по‑настоящему новым, я не решал возникающие передо мной вызовы — все были решены уже давно, моё развитие остановилось. Много позже я понял, что в тот момент я потерял смысл своей работы.
Мне понадобилось много времени, чтобы понять, что вся моя деятельность крутилась вокруг собственного развития. 10 лет напряжённой и плодотворной работы над своим проектом нужны были лишь для того, чтобы просто идти вперёд. Рос и развивался проект — рос и развивался я как разработчик. Как только я узнавал что‑то новое, я это тут же применял на практике. Функционал становился сложнее — я получал опыт архитектурной оптимизации. Надо было разработать с нуля сложный функционал — я учился его проектировать, а затем реализовывать. Требовалось интегрировать платёжную систему — я изучал стороннее API и использовал его. И всё это постоянно, итерационно, год за годом. Это не могло не начать повторяться.
В 2020 году я принял решение выйти на рынок труда в качестве наёмного разработчика. Это стало переломом моего мировоззрения. До этого я гордился своим делом, обеспечивал семью, считал, что необходимо двигаться именно в этом направлении и дальше, а сам исполнил такое... Но на первом же месте я ощутил такой мощный прилив сил и мотивации при решении большой и сложной задачи, что мои сожаления я оставил позади и больше о них не вспоминал. Птичку выпустили из клетки! Наконец я увидел, насколько ограничены мои знания, насколько ограничен я был в применяемых инструментах — в первую очередь самим WordPress, я осознал, насколько широк и необъятен мир разработки, сложны проекты и решаемые задачи. За последующие годы я прочитал много книг по специальности, поработал с множеством проектов — от банка до многоуровневой партнёрской сети, участвовал в сложнейших миграциях проектов на новую архитектуру и ясно вижу СМЫСЛ своей деятельности и работы именно в этом! Постоянное движение вперёд и постоянное профессиональное развитие — это то, что задаёт драйв в моей жизни, и я благодарен судьбе, что смог это осознать не слишком поздно.
Заключение
Плагин WP‑Recall никогда не был целью сам по себе, он был лишь средством для достижения цели. Я благодарен ему за фундамент, который сформировал с помощью него, но он строился слишком долго. Есть ли у меня желание вернуться к нему, переписать или просто взять на поддержку то, что вроде и так, до сих пор, неплохо работает? (хотя, конечно, уже не уверен). Нет. В первую очередь из‑за имеющихся ограничений WordPress. Это уже порядком проржавевшая клетка, в недрах которой тихо доживает свой век WP‑Recall, и я в эту клетку уже никогда не вернусь.
Я понимаю, насколько эгоистично могут читаться мои слова в глазах бывших и текущих пользователей плагина. Их тысячи. Но это было честно. Я не вижу необходимости далее затягивать процесс недосказанностью. Пора перевернуть страницу.
Комментариев (0)