Недавно я впервые в жизни поучаствовал в хакатоне. Мой друг пригласил меня, и я решил попробовать. Новый опыт как никак, плюс проверить способен ли я что-то сделать в краткие сроки довольно интересно. Относительно классических хакатонов этот можно назвать облегченным, задание выполнялось в течении двух недель.
Команда состояла из двух человек. Я отвечал за планирование, бэкенд и деплой, а мой друг – за дизайн и фронтенд.
С такими вводными мы подали заявку на участие.
В общих чертах задача состояла в создании сервиса по расчету стоимости недвижимости на основании похожих объявлений о продаже. Недвижимость для расчета поступает в виде excel файла.
Так как ТЗ было довольно формальным, хоть сколько то целостное видение задачи появилось только на третий день после начала. Как раз на следующий день после Q&A сессии. До этого момента мы создавали странички регистрации и входа, а также пытались продумать прототип дизайна страниц, функционал которых мы понимали.
Следующая проблема возникла при выборе метода получения объявлений. Изначально планировалось получить полную базу данных и локально подбирать аналоги. Но в процессе оказалось, что сайты с объявлениями не отображают все объявления, даже с учетом наличия пагинации. Поэтому было принято решение парсить сайт каждый раз по запросу пользователя. Тогда пришлось превращать подбор аналогов в по сути отдельный сервис, который по таймауту слал запрос на сайт с аналогами.
Далее все процесс пошел более-менее спокойно, поэтому опустим этот отрезок времени.
Итоговая версия была готова за три дня до дедлайна. Так как я не специализируюсь на администрировании серверов, процесс деплоя занял сутки, в конце которых выяснилось, что сервис по подбору аналогов не работает. Оказалось, что ip-шники серверов, которые были нам предоставлены организаторами находятся в черном списке у сайта с объявлениями. Пришлось экстренно решать данный вопрос. Для этого я попытался воспользоваться бесплатными прокси, но это не помогло - сайт по-прежнему блокировал запросы. Тогда было принято решение купить VPS сервер у noname провайдера (чтобы ip точно не был уже заблокирован) и проксировать запросы через него. Для этого был найден готовый код прокси-сервера. Но и это не помогло! Так как времени разбираться в причинах уже не было, буквально за час был написан прокси-сервер, который наконец заработал. По итогу на все эти махинации ушли еще сутки, но результат был достигнут - наше приложение работало, а у нас был еще целый день в запасе. В тот же вечер мы целиком протестировали наш сервис. Исправив обнаруженные баги и окончательно убедившись в полной его работоспособности, мы ушли отдыхать. На следующий день были внесены только косметические изменения. Мы были почти уверены, что пройдем в финал, так как судя по Q&A сессиям остальные команды чувствовали себя не сильно уверенно.
А через неделю мы узнали, что не прошли в финал. В поисках причины мы решили попробовать еще раз проверить что у наше решение рабочее, и к нашему удивлению это оказалось не так! Проблема оказалась не в взаимодействии с базой данных, не в работе сервиса по подбору аналогов, и даже не в математических вычислениях. Проблема оказалось в том, что при попытке добавления стилей в excel файл, у которого уже был стиль с данным именем происходила ошибка! Так, в очередной раз украшая файлы для пользователя мы сделали сайт нерабочим на самом первом этапе.
По итогу данного мероприятия я сделал для себя следующие выводы
Планирование превыше всего. Пытаться делать проект по наитию очень опасно, хоть иногда и получается.
Не стоит нагружать себя большим количеством ролей в команде, так как это практически нереально вывезти на должном уровне.
ВСЕГДА проверяй проект перед релизом с нуля не используя старые файлы. Наше поражение случилось во многом из-за этого. Лучше всего попросить кого-то из знакомых воспользоваться сайтом без ваших подсказок.
Но несмотря на поражение я доволен что поучаствовал в таком мероприятии, это был необычный опыт, который надолго запомнится.
Комментарии (6)
DessDaz1996
10.12.2022 09:57+2У меня тоже был опыт участия в хакатоне. Только мы заранее не хотели доходить до финала, поскольку по условиям соревнования компания отдаёт разработчикам мизерную сумму, а интеллектуальные права на разработку забирает себе. В итоге мы на финале специально слили защиту, чтобы нас не выбрали победителями
Maks_K2
12.12.2022 09:57Это как раз 401 законый способ отнять отнять деньги у людей Остап Бендер молча курит в сторонке (в данном случае интеллектуальной собственности разработчика за копейки)
nimishin
Прикольно, а еще бы ссылку на код?
Эх и откуда люди время берут?
AlexandrovRoman Автор
Ссылки нет, так как появилась мысль попробовать развить до полноценного сервиса, и пока заприватил репозиторий