В жизни каждого программиста случается хакатон. Звучит, будто болячку подцепил, но тем не менее — через это проходят все. Кто-то по желанию, кто-то по необходимости, мало ли какие пути привели человека на подобное мероприятие.
Я не буду рассказывать, что это за формат, раз вы перешли сюда, значит, как минимум представляете, о чём речь. Но зато хочу затронуть тему того, а кому оно, собственно, надо? Начну с длинной прелюдии.
Я работаю инженером в океанологическом институте, программирую на G пользовательское ПО для взаимодействия с АЦП и прочими приблудами для считывания и анализа данных. В светлые студентческие годы кодил те же клиентские приложения на C# .net, а также писал скрипты на Python для администрирования локальных сетей. В общем, ничего сверхъестественного или чем можно было б гордиться. Но всегда же хочется добиться чего-то большего, верно?
Гуляя по просторам ещё тогда официально не заблокированного Телеграма (мессенджера, запрещённого на территории РФ), я наткнулся на онлайн отборочные хакатона одной молодой компании, работающей на данный момент над собственным блокчейном. Идеальные условия: ты дома, в выходные дни (онлайн этап проходил в выходные дни, чтобы не отвлекать людей от работы). Но что делать одному на подобном формате? Поэтому я обратился к своим коллегам по цеху, предложил выходной день провести с пользой. Один программист Objective Pascal, который уже лет десять решает прикладные задачи для лаборатории, оформляя всё в дружественный для пользователя интерфейс; один математик, который упрощает жизнь всем статистам своими макросами для Exel, а также создаёт логику для решения различных аналитических задач.
В итоге, как в анекдоте, программист, инженер и аналитик подали заявки на участие в хакатоне.
Все поставленные организаторами задачи сводились к работе с клиент-серверной частью, разработке р2р решений на базе блокчейна Bitshares… В общем, всё то, чего мы втроём не знали априори. Но чему хотели научиться!
Итак, времени было мало, но достаточно для реализации небольшого проекта, 36 часов на всё.
У нас есть
Зачем же мы всё это делали? Потому что мы хотим учиться. За 36 часов мои коллеги впервые посмотрели на python, поработали с ним, и пусть код сырой донельзя, но он работает и решает поставленную задачу. Даже этого было достаточно, чтобы заинтересоваться новым языком программирования, чтобы начать изучать нечто отличное от привычных рабочих задач.
Но нам повезло, и уже через две недели мы летели в Москву (сами мы из Владивостока, всем привет) на офлайн этап хакатона, где соревноваться должны были не сотня программистов (как на онлайн этапе), а выбранные организаторами 16 человек. Почему мы? А шут их знает, но за подобный опыт мы точно благодарны. Единственный, кто участвовал в нечто подобном, был я, принимая несколько лет подряд участие в региональном CTF, но с подобным это точно не сравнится.
Все мы любим наклеечки, вот и участников офлайн этапа не обделили
Опять же, наш уровень был далёк не то что от совершенства — и близко не стоял с участниками. Поэтому, когда были выдвинуты варианты задач, мы выбрали то, которое реально выполнить за отведённое время нашими силами, пусть и сидели мы до самой последней минуты. 28 часов, всего-ничего строчек кода, но уже всё как положено: полноценное клиентское приложение, в основе которого чистый код, а также огромные перспективы на дальнейший апгрейд. За отведённое время мы смогли реализовать полноценный MVP (2): мультивалютный холодный криптокошелёк. Никаких зависимостей от сети, всё работает 100% локально, что даёт достаточный уровень безопасности каждому параноику, что, при создании им кошелька, его пару ключей украдут. И даже заложенный в код рандомный генератор на базе встроенных в систему часов не портит момента, ведь откуда злоумышленнику знать, когда вы создали кошелёк, если вы это сделали на не подключенной к сети машине?
Весь движ проходил в уютном лофте, где каждому нашлось место
Задача задачей, но самое главное, мы познакомились и пообщались со специалистами, кодерами уровня, к которому нам ещё стремиться, но мы не остановимся. Надеюсь, мы не ударили в грязь лицом, а смогли составить конкуренцию им, пусть и минимальную.
К чему весь вышесказанный текст? Хакатоны — это важно. Они нужны для таких, как я и мои коллеги, новичков, которые если и знают программирование, то на простых задачах из учебников. Реальность отличается более сложными и нетривиальными вопросами, которые нужно уметь решать, если хочешь называть себя специалистом. Они нужны специалистам высокого уровня, поскольку каждый раз хакатон — это вызов, шанс показать, на что ты способен в условиях ограниченного времени с инструментами, которые ты впервые видишь.
А как считаете вы? Ниже небольшой интерактив, чтобы понимать мнение большинства присутствующих.
Спасибо, что уделили время моей истории, и да прибудет с вами кодинг.
P.S. Да, я так и не написал, кто проводил хакатон. Я не уверен, что по правилам хабра это можно, но желающие могут узнать об организаторах по ссылкам на git.
1. Исходный код парсера с онлайн этапа
2. Исходный код мультивалютного холодного кошелька
Автор: Ivan Radaev