Разработка
Когда следует отказаться от проекта, который не работает?
Думаю, самый главный вывод из этого — если что-то стоит того, чтобы его создать, вы сразу это поймете.
В течение последнего месяца я проводил много свободного времени после работы, работая над пет-проектом, но сегодня я сдаюсь.
Идея была основана на простой гипотезе. Людям нравится просматривать Википедию в поисках интересных статей, случайно нажимая на ссылки. Что, если бы существовал способ искать статьи, нажимая на местоположение? На самом деле, Википедия раньше имела такую возможность в своих приложениях (она и сейчас есть, но теперь только на веб-сайте). Однако есть несколько проблем с решением Википедии:
- Она не показывает точки на карте, поэтому вам придется догадываться, где находятся статьи по отношению друг к другу (или вводить координаты в карту отдельно).
- Они сортируют статьи по расстоянию, а не по популярности или другой эвристике.
Моя гипотеза заключалась в том, что если бы вы могли перетаскивать карту для поиска статей поблизости и сортировать их по количеству просмотров, это было бы интереснее и могло бы потенциально помочь в планировании отпуска. Я ошибался, и вот как я это понял.
1. Первоначальная увлеченность
Первая неделя работы над проектом прошла отлично. В первый день мне удалось интегрировать OpenStreetMaps и Wikipedia API, чтобы получить список всех статей в этом районе с указанием количества просмотров.
К третьему дню я поддерживал постепенное получение статей при перемещении карты, добавил фильтр просмотра страниц и всплывающие окна, которые ссылались на страницы Википедии.
К концу первой недели я закончил большую часть базового пользовательского интерфейса. Карта занимает весь экран, можно свернуть список статей и отсортировать их по просмотрам. К этому моменту у меня было все необходимое для подтверждения моей гипотезы. Вместо этого я решил продолжать добавлять все новые и новые функции, не имея четкого видения, пока…
2. Отговорки
После первой недели я стал более загружен различными делами на работе и мне нужно было ездить по делам. Я сказал себе, что постараюсь поработать над проектом, если у меня появится свободное время, но этого так и не произошло. В то время я считал, что не могу быть так строг к себе, потому что у меня действительно были другие дела, но, оглядываясь назад, я думаю, что именно здесь и проявилась моя нехватка мотивации. Может быть, я подсознательно боялся, что проект не получится таким, каким я его себе представлял?
3. Фальшивая продуктивность
После этой недели, в течение которой я не успел сделать ничего особенного, я решил ускорить процесс и внести кучу изменений.
- Сменить UI-библиотеку на naive-ui и снова на Quasar
- Изменять цвета маркеров на карте в зависимости от популярности статьи
- Использовать свойства Navigator.geolocation для поиска статей вблизи местоположения пользователя
- Загружать дополнительных сведений при нажатии на всплывающее окно
- Добавлять перекрестия в центр карты, чтобы пользователи знали отправную точку
- Сделать кучу различных CSS-твиков
Прошла неделя, и вот что у меня получилось в итоге.
Выглядит это, конечно, гораздо лучше. Но вы не видите ужасного лага, который возникает при первой загрузке страницы (и при любом перемещении по карте), того, что всплывающие окна часто не загружаются, пока не будут собраны все просмотренные страницы (я предполагаю, что из-за какого-то ограничения скорости на стороне Википедии), и того, как таблица справа ломается и становится практически бесполезной после перемещения по карте в течение некоторого времени и накопления тысяч статей в списке. Не стоит говорить о том, как это выглядит на телефоне.
4. Откладывание день за днем
После того как задачи, не требующие больших усилий, иссякли, я не знал, что делать дальше. Я начал понимать, что многое придется создавать с нуля, и мне пришлось признать, что то, что я делал, просто не работало.
Сайт работал медленно, самыми просматриваемыми статьями были только страницы городов (которые не являются особенно интересными координатами для посещения во время отпуска), а многие из заметных статей были такими, как «Стрельба в штаб-квартире YouTube» и «Смерть Джеффри Эпштейна», в то время как до более интересных мест, таких как «Особняк Питтока» и «Площадь Гирарделли«, было трудно докопаться. Удивительно, что у первых двух статей вообще были координаты.
На самом деле мне нужно было пересмотреть алгоритм, который я использовал для сортировки и отображения статей пользователям, улучшить управление картой, чтобы она меньше лагала, сделать страницу более отзывчивой при первой загрузке и установить лучший уровень масштабирования, который помог бы выделить статьи, которые загружались.
Но все же следующие несколько дней я провел, продолжая возиться с CSS, добавляя поддержку мобильного пользовательского интерфейса и улучшая отображение всплывающих окон и таблиц. Все это не решило основной проблемы, и вот что я имею сегодня — Wikimaps.
5. Сдаюсь
Причиной, по которой было так трудно добраться до этого этапа, был страх, что я ошибаюсь в своей гипотезе. Я обманул себя, поверив, что если я продолжу вносить эти небольшие постепенные изменения, то сделаю так, что мне снова будет интересно пользоваться. Но на самом деле я думаю, что мне, вероятно, следовало бросить все после первой недели… или, по крайней мере, кардинально изменить свой подход к делу. Возможно, я вернусь к этому проекту в другой раз, а пока он отправится на полку.
Зачем я это пишу? Отчасти в качестве предостережения для себя и других, чтобы в будущем не повторять ошибок. Частично потому, что я потратил последний месяц на создание чего-то и не хотел, чтобы это пропало зря. И отчасти в надежде, что, поделившись этой идеей с другими, я смогу вновь разжечь в себе ту первоначальную страсть, которая у меня была.
Думаю, самый главный вывод из этого — если что-то стоит того, чтобы его создать, вы сразу это поймете. Едва функционирующий прототип другого проекта, над которым я работал почти 4 года назад, за день набрал более 1000 голосов на Reddit только благодаря гифке.
На данный момент я перешел на более просторные и светлые пастбища. У меня есть еще один проект, и на этот раз я постараюсь проверить свою гипотезу как можно раньше.