Non è il primo hackathon che vinco, non è il primo di cui , e questo non è affatto il primo post su Habr dedicato a "Digital Breakthrough". Ma non potevo non scrivere. Considero la mia esperienza abbastanza unica da condividerla. Probabilmente sono l'unico partecipante a questo hackathon che ha vinto sia la fase regionale che la finale con team diversi. Vuoi sapere come è successo? Benvenuto sotto.
Fase regionale (Mosca, 27-28 luglio 2019).
Ho visto per la prima volta la pubblicità di "Digital Breakthrough" intorno a marzo-aprile di quest'anno. Ovviamente, non potevo ignorare un hackathon così grande e mi sono registrato sul sito. Lì ho anche preso visione delle condizioni e del programma del concorso. Si è scoperto che per partecipare all'hackathon era necessario superare una prova online, che iniziava il 16 maggio. E probabilmente avrei dimenticato questa scadenza, dato che l'email di promemoria per l'inizio dei test non è mai arrivata. E, devo dire, successivamente TUTTE LE EMAIL che ricevevo dal CP finivano regolarmente nella cartella spam. Anche se ogni volta premevo il pulsante "non è spam". Non so come ci siano riusciti, ma con la mia mailing list su MailGun non giungevo a questo risultato. E riguardo l'esistenza di servizi come isnotspam.com, questi ragazzi sembrano non saperlo affatto. Ma ci siamo allontanati dal tema.
Mi hanno ricordato l'inizio dei test in uno degli incontri , lì abbiamo anche discusso della formazione del team. Aprendo l'elenco dei test, ho subito cominciato a lavorare sul test di Javascript. In generale, gli incarichi erano più o meno adeguati (tipo, quale sarebbe il risultato se sommi 1 + '1' nella console). Ma per la mia esperienza, utilizzare tali test per la selezione di personale o per un team lo farei con molte riserve. Il fatto è che nella vita reale, un programmatore si imbatte raramente in queste cose, e la sua capacità di scrivere codice rapidamente non è affatto correlata a queste conoscenze; allenarsi su tali questioni per i colloqui è relativamente facile (lo so per esperienza personale). In generale, ho completato il test piuttosto rapidamente, controllandomi in console in alcuni casi. Nel test di python, le domande erano di tipo simile, anch'esse verificate in console, e con sorpresa ho ottenuto punteggi più alti rispetto a quelli di JS, nonostante su python non avessi mai programmato professionalmente. Poi, nella conversazione con i partecipanti, ho sentito storie di come programmatori esperti ottenessero punteggi bassi nei test, e come a certe persone venissero inviati messaggi che informavano che non avevano superato la selezione per il CP, ma poi venissero comunque invitati. È chiaro che gli ideatori di questi test, in ogni probabilità, non avevano mai sentito parlare di , né della loro affidabilità e validità, né di come verificarli, e l'idea stessa dei test sarebbe stata fallimentare, anche senza considerare l'obiettivo principale dell'hackathon. E l'obiettivo principale dell'hack, come ho appreso in seguito, era battere un record del Guinness, e i test eran in conflitto con questo.
A un certo punto, dopo aver completato i test, mi hanno chiamato, chiesto se avrei partecipato, chiarito i dettagli e detto come accedere alla chat per formare la squadra. Presto, sono entrato nella chat e ho scritto brevemente di me. Nella chat regnava il caos, avevo l'impressione che gli organizzatori avessero fatto entrare, grazie alla pubblicità, molte persone casuali che non avevano nulla a che fare con l'IT. Numerosi product manager "di livello Steve Jobs" (una vera frase estratta da una presentazione di un partecipante) condividevano racconti su di loro, mentre i normali sviluppatori erano praticamente invisibili. Ma ho avuto fortuna e mi sono unito a tre programmatori JavaScript esperti. Ci siamo conosciuti meglio al hackathon, e in quel frangente abbiamo aggiunto una ragazza al team per ispirazione e per risolvere questioni organizzative. Non ricordo il perché, ma abbiamo scelto il tema "Formazione sulla cybersecurity" e siamo finiti nel track "Scienza ed educazione 2". Era la prima volta che mi trovavo in un team di 4 programmatori forti e ho percepito quanto fosse facile vincere in una composizione del genere. Siamo arrivati impreparati e fino a pranzo abbiamo litigato, non riuscivamo a decidere se fare un'app mobile o un sito web. In qualsiasi altra situazione avrei pensato che fosse un fallimento. La cosa più importante per noi era capire in cosa saremmo stati migliori dei concorrenti, dato che c'erano molte squadre che stavano sviluppando test, giochi sulla cybersecurity e cose simili. Osservando tutto ciò e cercando programmi e applicazioni educative su Google, abbiamo deciso che la nostra caratteristica distintiva sarebbero state le simulazioni di allerta antincendio. Abbiamo selezionato una serie di funzionalità che ci sono sembrate interessanti da implementare (registrazione con verifica dell'email e della password tramite database hacker, invio di email di phishing (sotto forma di comunicazioni da banche note), allenamenti di ingegneria sociale nella chat). Dopo aver chiarito cosa stavamo facendo e capito come poterci differenziare, abbiamo scritto rapidamente un'applicazione web completa, con me nel ruolo inusuale di sviluppatore backend. Così, abbiamo vinto con sicurezza il nostro track e, assieme ad altre tre squadre, siamo arrivati in finale a Kazan. Solo dopo, a Kazan, ho scoperto che la selezione per la finale era una farsa; ho incontrato molte facce conosciute di squadre che non erano riuscite a superare il processo di selezione. Siamo stati anche intervistati da giornalisti del canale 1. Tuttavia, nel servizio, il nostro progetto è stato mostrato solo per un secondo.

Il team Snowed, con il quale ho vinto la fase regionale
Finale (Kazan, 27 - 29 settembre 2019)
Ma poi sono iniziate le disavventure. Tutti i programmatori del team Snowed, per circa un mese, uno dopo l'altro, hanno comunicato che non potevano andare a Kazan per la finale. Così ho cominciato a cercare un nuovo team. All'inizio ho lanciato un appello nel chat generale della Russian Hack Team, e sebbene abbia ricevuto molte risposte e inviti, nessuno di essi mi ha colpito. C'erano team squilibrati, come ad esempio un product manager, uno sviluppatore mobile, un frontend developer, che ricordava il cigno, il granchio e la lucciola della favola. Ci sono stati anche team che non si adattavano alla mia tecnologia (ad esempio, con lo sviluppo di un'app mobile su Flutter). Infine, in un chat che consideravo trash (quella su VKontakte dove avveniva la selezione dei team per la fase regionale), è stato pubblicato un annuncio per cercare un frontend developer, e ho scritto per caso. I ragazzi si sono rivelati dottorandi della Skoltech e hanno subito proposto di incontrarci e conoscerci. Mi è piaciuto, i team che preferiscono conoscersi subito durante un hackathon di solito mi insospettiscono per la loro mancanza di motivazione. Ci siamo incontrati a “Grabli” su Pyatnitskaya. I ragazzi mi sono sembrati intelligenti, motivati, sicuri di sé e della vittoria, e ho preso la decisione proprio lì. Non sapevamo ancora quali sarebbero stati i track e i compiti nella finale, ma supponevamo di scegliere qualcosa legato al Machine Learning. E il mio compito sarebbe stato scrivere un admin per questo, quindi ho preparato in anticipo un template basato su antd-admin.
Sono andato a Kazan gratuitamente, a spese degli organizzatori. Devo dire che nei chat e nei blog era già stata espressa molta insoddisfazione riguardo all'acquisto dei biglietti e, in generale, all'organizzazione della finale, e non voglio riscrivere tutto questo.
Arrivato al Kazan Expo, registrandomi (ho avuto qualche problema con il rilascio del badge) e facendo colazione, abbiamo iniziato a scegliere il track. All'inaugurazione ufficiale, dove erano presenti figure ufficiali, siamo rimasti solo dieci minuti. In realtà, avevamo già dei track preferiti, ma ci interessavano i dettagli. Nel track No 18 (Rostelecom), ad esempio, si è scoperto che era necessario sviluppare un'app mobile, anche se nella descrizione breve non era menzionato. La nostra scelta principale era tra il track No 8 Ispezione ultrasonica dei tubi, PJSC
I primi giorni sono trascorsi praticamente inosservati. Nella comunicazione con i tecnici abbiamo scoperto che questo compito è già stato risolto da loro ("Gazprom Neft"), sono semplicemente curiosi se possa essere fatto meglio. Non dirò che questo ha ridotto la motivazione, ma è rimasta una certa amarezza. È stato sorprendente vedere che durante la notte i moderatori delle sezioni hanno riconosciuto i team funzionanti (come dicevano per statistica), di solito nei hackathon non è prassi. Al mattino avevamo un prototipo del front-end pronto, alcuni abbozzi del back-end e la prima soluzione ML. In generale, c'era già qualcosa da mostrare agli esperti. Nel pomeriggio di sabato, il designer aveva già disegnato più interfacce di quante ne avrei potute codificare e si era concentrato sulla creazione della presentazione. Sabato era dedicato alla registrazione del record, e al mattino, tutti coloro che lavoravano nella sala sono stati allontanati nel corridoio, poi l'ingresso e l'uscita dalla sala avvenivano tramite i badge, e si poteva uscire per un giorno non più di un'ora. Non dirò che ci abbia creato notevoli disagi, la maggior parte della giornata ci siamo comunque seduti e abbiamo lavorato. Il cibo, in effetti, era molto scarso, a pranzo abbiamo ricevuto un bicchiere di brodo, una pastina e una mela, ma anche in questo caso non ci ha disturbato molto, eravamo concentrati su altro.
Occasionalmente venivano distribuiti red bull, due lattine a persona, ed è stato molto utile. Un metodo collaudato ai hackathon di abbinare energia + caffè ci ha permesso di programmare tutta la notte e il giorno seguente, rimanendo svegli e attivi. Il secondo giorno, di fatto, ci siamo limitati ad aggiungere nuove funzionalità all'applicazione, calcolando gli indicatori finanziari e iniziando a visualizzare grafici sulla statistica dei difetti nelle infrastrutture. Non c'era un vero e proprio code review nel nostro team, gli esperti valutavano la soluzione del problema secondo uno stile simile a kaggle.com, in base all'accuratezza delle previsioni, mentre il frontend veniva valutato visivamente. La nostra soluzione di ML si è rivelata la più precisa, forse è proprio questo che ci ha permesso di emergere come leader. Nella notte tra sabato e domenica abbiamo lavorato fino alle 2, e poi siamo andati a dormire nell'appartamento che usavamo come base. Abbiamo dormito circa 5 ore, domenica alle 9 del mattino eravamo già a Kazan Expo. Io rapidamente stavo preparando qualcosa, ma la maggior parte del tempo è stata impiegata nella preparazione per la pre-presentazione. Le pre-presentazioni si svolgevano in due turni, davanti a due squadre di esperti, e ci hanno chiesto di presentare per ultimi, poiché entrambe le squadre di esperti volevano ascoltarci. Abbiamo interpretato questo come un buon segno. Abbiamo mostrato l'applicazione dal mio laptop, dal server di sviluppo avviato, non siamo riusciti a deployare l'applicazione correttamente, ma così facevano tutti.
In generale, tutto è andato bene, ci sono stati indicati alcuni aspetti in cui potevamo migliorare la nostra applicazione, e nel tempo a disposizione prima della difesa, abbiamo persino cercato di realizzare alcune di queste osservazioni. Anche la difesa è andata sorprendentemente liscia. Dopo la pre-presentazione sapevamo che, secondo i punteggi, eravamo in testa, avevamo un'ottima accuratezza nella soluzione, un buon frontend, un buon design e, in generale, avevamo buone sensazioni. Un altro segno favorevole è stato che la ragazza moderatrice della nostra sezione ha fatto un selfie con noi prima di entrare nella sala concerti, allora ho sospettato che lei sapesse qualcosa))). Ma noi non avevamo ancora conosciuto i nostri punteggi dopo la difesa, quindi il tempo che ci separava dall'annuncio della nostra squadra sul palco è passato un po' teso. Sul palco ci è stata consegnata una cartolina con la scritta 500000 rubli e a ciascuno un sacchetto con una tazza e un caricatore per il cellulare. Non siamo riusciti a goderci la vittoria e a festeggiarla normalmente, abbiamo cenato in fretta e siamo andati in taxi verso il treno.

Il team WAICO vince in finale
Al ritorno a Mosca, abbiamo fatto un'intervista con i giornalisti di NTV. Hanno registrato un'ora intera al secondo piano del caffè «Kvartal 44» su Polanka, ma nelle notizie hanno mostrato solo dieci secondi. Comunque, è un grande progresso rispetto alla fase regionale.
Se dovessi riassumere le impressioni generali dal Digital Breakthrough, sarebbero le seguenti. Sono stati spesi soldi folli per l'evento; non ho mai visto hackathon di tale portata. Ma non posso dire che sia giustificato o che ne valga davvero la pena. Una parte significativa dei partecipanti venuti a Kazan erano semplicemente festaioli che non sanno fare nulla con le proprie mani, e sono stati portati per stabilire un record. Non posso dire che la concorrenza in finale fosse maggiore rispetto alla fase regionale. Anche il valore e l'utilità di alcune sfide sollevano delle perplessità. Alcune sfide erano già state risolte a livello industriale da tempo. Come si è scoperto in seguito, alcune organizzazioni che gestivano i temi non erano nemmeno interessate alla loro risoluzione. E questa storia non è ancora finita; i team vincenti di ciascun tema sono stati selezionati per l'acceleratore, e si presume che da essi emergeranno startup RIVOLUZIONARIE. Ma non sono ancora pronto a scriverne, vedremo cosa ne verrà fuori.
Fonte: habr.com
