Задний план :

Соединенные Штаты — это имя, которое громко кричит об идее единства и исключительности. Однако живя в стенах страны, можно быстро понять, что государство по соседству может быть его собственной страной. На самом деле образ жизни, стандарты и экономика разных штатов могут сильно различаться, что может сделать жизнь американского кочевника трудной. Дом в одном штате может стоить в несколько раз дороже, чем аналогичный дом в другом штате. То же самое относится к доходам, погоде, возможностям трудоустройства и плотности населения — всем этим людям следует подумать, прежде чем паковать чемоданы и двигаться туда, куда попадет дротик.

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

Кроличья нора кода:

Как веб-разработчик, у меня никогда не бывает недостатка в вещах, которые я могу изучить. Как только я чему-то научился, передо мной всегда стоят два варианта; что я должен узнать дальше или как я могу улучшить то, что я только что узнал. Citrics — это приложение, в котором есть определенные компоненты, с которыми мне еще не приходилось работать. Заход в здание приложения был как затишье перед бурей футбольного матча. Легкий холодок в воздухе и любопытство, окутанное непредсказуемостью грядущего. В этом случае до этого момента мне еще предстояло найти необходимость и возможность изучить все различные способы визуализации данных во внешнем интерфейсе. Что-то, что я всегда хотел обойти, но не было достаточным прецедентом, чтобы я считал необходимым отвлечь время от других моих знаний и проектов, чтобы углубиться в них. Наконец пришло время, но, как и во всем, что связано с кодом, всегда была кроличья нора информации, которую нужно было отсортировать, прежде чем обучение действительно началось. Массив различных фреймворков для построения графиков данных был мгновенно доступен, как только я искал в Google соответствующие ключевые термины, а затем встал вопрос, использовать ли фреймворк или создать его с нуля. Это было немного пугающе, но в равной степени захватывающим, как кульминация хорошего триллера, я был взволнован, чтобы сначала нырнуть с головой, чтобы увидеть чудеса финала, но нервничал из-за того, как может разыграться это ключевое решение.

Планирование проекта:

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

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

Решения:

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

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

Способ, которым я решил решить этот пользовательский поток, заключался в создании складного нижнего колонтитула. Я хотел, чтобы он был складным, чтобы пользователи могли свернуть его в любое время, если они почувствуют, что он вторгается на их экранное пространство. Однако панель нижнего колонтитула действует как ссылка, в которой пользователи могут видеть, что карты их города заполняют нижний колонтитул как подтверждение того, что они выбрали тот, который намеревались сделать, или удаляют эту карту, если это не так. Еще одна особенность, которую я считаю важной, — это заполнители, которые занимают место в нижнем колонтитуле, когда есть возможность выбрать другой город для сравнения. На заполнитель можно щелкнуть в любой точке приложения в качестве точки быстрого доступа, чтобы вернуться к компоненту поиска, в котором они могут найти другой город для сравнения с остальными, если они того пожелают. Нижний колонтитул, я думаю, является четким и окончательным представлением того, что пользователь намерен и разрешен/способен делать. Это неявно показывает им, что это приложение создано, чтобы помочь пользователям сравнивать города друг с другом, и что пользователь может сравнивать до 3 городов одновременно. Простоты нижнего колонтитула достаточно, чтобы отобразить возможности и ограничения приложения для пользователя, чтобы ему не приходилось удивляться и тестировать на себе, чего я обнаружил, чего не хватало в предыдущей сборке, так как там было ничто не указывает пользователю на то, что он может/предполагает сделать.

Одна из самых больших проблем этого проекта заключалась в том, что у нас не было доступа к предыдущему бэкэнд-репозиторию API для предыдущей сборки, чтобы дополнять и редактировать таблицы в соответствии с нашими новыми потребностями. Это не было большой проблемой, так как нам было несложно запустить серверную часть Java Spring с нуля, создав ее специально для нашей собственной спецификации. Однако самая большая проблема заключается в том, что API науки о данных, который первая команда использовала для заполнения своей серверной базы данных, был недоступен, а также недоступен для повторного развертывания. Таким образом, самой большой дилеммой была попытка выяснить, как нам перенести все статистические данные о городах в нашу собственную новую базу данных. Был еще один API для обработки данных, который позже стал доступен для использования, что включало необходимость полного игнорирования всех наших архитектурных планов для приложения, поскольку этот новый API не имел возможности возвращать полный объект города со всеми статистическими полями. имел только кучу разных конечных точек, которые позволяли проводить очень конкретные сравнения между двумя городами. К счастью, пока не стало слишком поздно, у меня появилась идея очистить все данные из старого бэкенда API, так как старый бэкенд все еще был развернут, и с помощью комбинации двух конечных точек, которые они сделали доступными, мы смогли получить полный список всех идентификаторов для каждого города, затем прокручиваем список идентификаторов, чтобы извлечь полный объект города из старой базы данных и сохранить его в нашей собственной.

Будущее проекта:

Текущее состояние приложения в его нынешнем виде — это полностью функциональное приложение, которое соответствует нашим спецификациям MVP, когда мы решили его перестроить. Он включает в себя полный список функций, которые мы изначально планировали создать. Некоторые из функций этого приложения в его нынешнем виде включают в себя:

  • Вытягивание всех городов из бэкенда для отображения на главном экране/компоненте поиска.
  • Живая панель поиска, которая будет фильтровать города по мере того, как пользователь вводит текст.

  • Компонент живого фильтра, который будет фильтровать города по мере того, как пользователи вводят предпочтения, связанные с населением, плотностью населения, средней стоимостью аренды и средней стоимостью домов.
  • Складная панель нижнего колонтитула, содержащая три карточки-заполнители, которые напрямую ссылаются на компонент поиска с любого экрана, а также возможность перемещать карточки из компонента поиска в нижний колонтитул по мере того, как пользователи выбирают города.

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

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

Игра команд:

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

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