Я посетил свой первый хакатон, когда учился на втором курсе университета, и с тех пор меня зацепило. Восемь хакатонов и две победы спустя, я чувствую, что хакатоны помогли мне сформироваться как в профессиональном, так и в личном плане. Вспоминая об этом опыте посещения моей альма-матер, хакатона iNTUition 5.0 Наньянского технологического университета в качестве представителя Panalyt, который спонсировал это мероприятие, после четырех лет организации и участия, Я решил поделиться некоторыми уроками, которые я усвоил за эти бессонные ночи, наполненные кофеином, программируя, чтобы быстро прототипировать новую идею.

Хакатоны – это интенсивные спринты, обычно продолжительностью до 72 часов, в ходе которых люди работают вместе, чтобы придумать, спроектировать и разработать решение проблемы. Хотя хакатоны в основном были сферой разработки программного обеспечения из-за легкого доступа к инструментам и данным, я понял, что они скорее предназначены для людей из разных областей (программистов, дизайнеров, экспертов в предметной области, черт возьми, даже для парня, который просто ест пиццу и в конце дарит подарки), чтобы вместе превратить идею в продукт. Не так уж сильно отличается от реальной команды разработчиков, верно?

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

Facebook только что запустил свой Live Video API, что натолкнуло нас на мысль создать продукт для организации группового обмена видео в прямом эфире на Facebook. Это позволяло пользователям запускать живое видео, а затем добавлять других пользователей в живое видео, где лента переключалась на ленту этого пользователя, как новостные каналы, переключающие репортеров. Мы остановились на этой идее после периода изнурительного мозгового штурма, обсудив осуществимость как с точки зрения технической сложности (после консультации с сотрудниками Facebook), так и с точки зрения нашей собственной оценки того, сможем ли мы доставить продукт в течение 24 часов, и соответственно определили объем решения; очень похоже на то, как техническая команда планирует свои спринты.

В основе хакатонов лежит чувство общности. Вы можете встретиться, а в некоторых случаях даже объединиться с единомышленниками и пообщаться в техническом сообществе, чтобы установить новые связи, новые дружеские отношения, а в некоторых случаях даже создать новые компании! Кроме того, большинство проектов хакатона обычно создаются там, где разработчики публикуют свои проекты в Интернете, чтобы другие разработчики могли либо использовать их, либо изменять в соответствии со своим конкретным вариантом использования.

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

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

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

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

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

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

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

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

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

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