La svolta digitale: come è avvenuta

Questo non è il primo hackathon che vinco, né il primo scrivo, e questo non è il primo post su Habré dedicato al “Digital Breakthrough”. Ma non potevo fare a meno di scrivere. Considero la mia esperienza abbastanza unica da poter essere condivisa. Probabilmente sono l'unica persona presente a questo hackathon ad aver vinto la fase regionale e le finali facendo parte di squadre diverse. Vuoi sapere come è successo? Benvenuto al gatto.

Fase regionale (Mosca, 27-28 luglio 2019).

Ho visto per la prima volta una pubblicità per "Digital Breakthrough" da qualche parte tra marzo e aprile di quest'anno. Naturalmente non potevo rinunciare a un hackathon così grande e mi sono registrato sul sito. Lì ho conosciuto le condizioni e il programma del concorso. Si è scoperto che per partecipare all'hackathon era necessario superare un test online, iniziato il 16 maggio. E, forse, me ne sarei convenientemente dimenticato, visto che non ho ricevuto una lettera che mi ricordasse dell'inizio dei test. E, devo dire, in futuro TUTTE LE LETTERE che mi sono arrivate dalla CPU sono finite costantemente nella cartella spam. Anche se ho cliccato ogni volta sul pulsante “non discutibile”. Non so come siano riusciti a ottenere un risultato del genere; per me non ha funzionato con l’invio di mail su MailGun. E i ragazzi non sembrano sapere nulla dell’esistenza di servizi come isnotspam.com. Ma stiamo divagando.

Mi è stato ricordato l'inizio dei test in uno degli incontri club di avvio, lì abbiamo discusso anche della formazione della squadra. Dopo aver aperto l'elenco dei test, mi sono seduto per la prima volta sul test Javascript. In generale, i compiti erano più o meno adeguati (come sarà il risultato se aggiungi 1 + '1' nella console). Ma in base alla mia esperienza, utilizzerei tali test durante il reclutamento per un lavoro o una squadra con grandi riserve. Il fatto è che nel lavoro reale, un programmatore incontra raramente queste cose, con la sua capacità di eseguire rapidamente il debug del codice: questa conoscenza non è in alcun modo correlata e puoi allenarti per queste cose per le interviste abbastanza facilmente (lo so da solo). In generale, ho completato il test abbastanza velocemente, in alcuni casi mi sono verificato personalmente nella console. Nel test Python i compiti erano più o meno dello stesso tipo, mi sono testato anche sulla console e sono rimasto sorpreso di ottenere più punti che in JS, anche se non ho mai programmato professionalmente in Python. Più tardi, nelle conversazioni con i partecipanti, ho sentito storie su come programmatori forti hanno ottenuto punteggi bassi nei test, su come alcune persone hanno ricevuto lettere in cui si diceva che non avevano superato il processo di selezione per la CPU, e poi sono stati comunque invitati a parteciparvi. È chiaro che gli ideatori di questi test molto probabilmente non ne hanno sentito parlare teoria dei test, né sulla loro affidabilità e validità, né su come testarli, e l'idea dei test sarebbe stata un fallimento fin dall'inizio, anche se non avessimo tenuto conto dell'obiettivo principale dell'hackathon. E l'obiettivo principale dell'hacking, come ho appreso in seguito, era stabilire un record da Guinness, e i test lo hanno contraddetto.

Ad un certo punto, dopo aver superato le prove, mi hanno chiamato, mi hanno chiesto se volevo partecipare, mi hanno chiarito i dettagli e mi hanno spiegato come entrare nella chat per la selezione della squadra. Presto sono entrato nella chat e ho scritto brevemente di me. Nella chat c'era tutta spazzatura; sembrava che gli organizzatori stessero facendo pubblicità a un sacco di persone a caso che non avevano nulla a che fare con l'IT. Numerosi product manager "al livello di Steve Jobs" (una frase reale tratta dal contributo di un partecipante) hanno pubblicato storie su se stessi e gli sviluppatori normali non erano nemmeno visibili. Ma sono stato fortunato e presto mi sono unito a tre programmatori JS esperti. Ci siamo già incontrati all'hackathon e poi abbiamo aggiunto una ragazza al team per ispirarci e risolvere problemi organizzativi. Non ricordo il motivo, ma abbiamo preso l'argomento "Formazione sulla sicurezza informatica" e lo abbiamo incluso nel percorso "Scienza e istruzione 2". Per la prima volta mi sono trovato in una squadra di 4 forti programmatori e per la prima volta ho sentito quanto fosse facile vincere in una composizione del genere. Siamo arrivati ​​impreparati e abbiamo litigato fino all'ora di pranzo e non sapevamo decidere cosa fare: un'applicazione mobile o una web. In qualsiasi altra situazione avrei pensato che fosse un fallimento. La cosa più importante per noi era capire in che modo saremmo stati migliori rispetto ai nostri concorrenti, perché c’erano molti team in giro che stavano tagliando test, giochi di sicurezza informatica e simili. Dopo aver esaminato questo e cercato su Google programmi e app di formazione, abbiamo deciso che il nostro principale elemento di differenziazione sarebbero state le esercitazioni antincendio. Abbiamo selezionato una serie di funzionalità che abbiamo trovato interessante da implementare (registrazione con verifica di email e password contro i database degli hacker, invio di email di phishing (sotto forma di lettere da banche note), formazione di social engineering in chat). Dopo aver deciso cosa stavamo facendo e aver capito come potevamo distinguerci, abbiamo scritto rapidamente un'applicazione web a tutti gli effetti e io ho svolto il ruolo insolito di sviluppatore backend. Pertanto, abbiamo vinto con sicurezza la nostra pista e, come parte di altre tre squadre, ci siamo qualificati per la finale di Kazan. Più tardi, a Kazan, ho scoperto che la selezione per la finale era una finzione, lì ho incontrato molti volti familiari delle squadre che non hanno superato la selezione. Siamo stati intervistati anche dai giornalisti di Canale 1. Tuttavia, nel relativo rapporto, la nostra applicazione è stata mostrata solo per 1 secondo.

La svolta digitale: come è avvenuta
Squadra innevata, dove ho vinto la fase regionale

Finale (Kazan, 27 – 29 settembre 2019)

Ma poi iniziarono i fallimenti. Tutti i programmatori del team Snowed nel giro di circa un mese, uno dopo l'altro, hanno riferito che non sarebbero stati in grado di andare a Kazan per la finale. E ho pensato di trovare una nuova squadra. Per prima cosa ho chiamato nella chat generale del Russian Hack Team e, sebbene lì abbia ricevuto molte risposte e inviti a unirmi ai team, nessuno di loro ha attirato la mia attenzione. C'erano team sbilanciati, come prodotto, sviluppatore mobile, front-end, che ricordavano un cigno, un gambero e un luccio di una favola. C'erano anche team che non erano adatti a me in termini di tecnologia (ad esempio, con lo sviluppo di un'applicazione mobile in Flutter). Alla fine, in una chat che ho considerato trash (la stessa VKontakte dove si è svolta la selezione delle squadre per la fase regionale), è stato pubblicato un annuncio sulla ricerca di un frontender per la squadra, e ho scritto in modo puramente casuale. I ragazzi si sono rivelati studenti laureati della Skoltech e si sono subito offerti di incontrarsi e fare conoscenza. Mi è piaciuto, i team che preferiscono conoscersi subito durante un hackathon di solito mi allarmano con la loro mancanza di motivazione. Ci siamo incontrati al "Rake" sulla Pyatnitskaya. I ragazzi sembravano intelligenti, motivati, fiduciosi in se stessi e nella vittoria, e ho preso la decisione proprio lì. Non sapevamo ancora quali tracce e compiti sarebbero stati presenti nella finale, ma pensavamo che avremmo scelto qualcosa legato al Machine Learning. E il mio compito sarà scrivere un amministratore per questa questione, quindi ho preparato in anticipo un modello per questo basato su antd-admin.
Sono andato a Kazan gratuitamente, a spese degli organizzatori. Devo dire che nelle chat e nei blog è già stata espressa molta insoddisfazione riguardo all'acquisto dei biglietti e, in generale, all'organizzazione della finale, non racconterò tutto.

Arrivati ​​all'Expo di Kazan, registrati (ho avuto un po' di difficoltà a ottenere il badge) e fatta colazione, siamo andati a scegliere una pista. All'inaugurazione, dove hanno parlato gli ufficiali, siamo andati solo per una decina di minuti, infatti avevamo già le nostre piste preferite, ma a noi interessavano i dettagli. Nella traccia n. 10 (Rostelecom), ad esempio, si è scoperto che era necessario sviluppare un'applicazione mobile, sebbene ciò non fosse nella breve descrizione. Abbiamo fatto la scelta principale tra il percorso n. 18 Difettoscopia delle condutture, Gazprom Neft PJSC e il percorso n. 8 Centri perinatali, Camera dei conti della Federazione Russa. In entrambi i casi era necessaria la Data Science e in entrambi i casi si sarebbe potuto aggiungere il web. Nella traccia n. 13, siamo stati fermati dal fatto che il compito di Data Science era piuttosto debole, era necessario analizzare Rosstat e non era chiaro se fosse necessario un pannello di amministrazione. E il valore stesso del compito era in dubbio. Alla fine abbiamo deciso che come squadra eravamo più adatti alla pista 13, soprattutto perché i ragazzi avevano già esperienza nella risoluzione di problemi simili. Abbiamo iniziato riflettendo sullo scenario in cui la nostra applicazione sarebbe stata utilizzata dall'utente finale. Si è scoperto che avremmo avuto due tipi di utenti: i tecnici interessati alle informazioni tecniche e i manager che avevano bisogno di indicatori finanziari. Quando è emersa un'idea dello scenario, è diventato chiaro cosa fare sul front-end, cosa dovrebbe disegnare il progettista e quali metodi erano necessari sul back-end, è diventato possibile distribuire i compiti. Le responsabilità nel team sono state distribuite come segue: due persone hanno risolto il machine learning con i dati ricevuti da esperti tecnici, una persona ha scritto il backend in Python, io ho scritto il front-end in React e Antd, il progettista ha disegnato le interfacce. Ci siamo persino seduti in modo che fosse più conveniente per noi comunicare mentre risolvevamo i nostri problemi.

Il primo giorno è passato quasi inosservato. Nella comunicazione con gli esperti tecnici, si è scoperto che loro (Gazprom Neft) avevano già risolto questo problema, si stavano solo chiedendo se fosse possibile risolverlo meglio. Non dico che questo abbia ridotto la mia motivazione, ma ha lasciato un residuo. Mi ha sorpreso che di notte i moderatori della sezione abbiano notato i team di lavoro (come hanno detto per le statistiche); questo di solito non viene praticato negli hackathon. Al mattino avevamo già pronto un prototipo della parte anteriore, alcuni rudimenti della parte posteriore e la prima soluzione ML. In generale, c'era già qualcosa da mostrare agli esperti. Sabato pomeriggio, il designer ha ovviamente disegnato più interfacce di quelle che avrei avuto il tempo di codificare ed è passato alla creazione di una presentazione. Il sabato è stato riservato alla registrazione del record e al mattino tutti coloro che lavoravano in sala sono stati espulsi nel corridoio, quindi l'ingresso e l'uscita dalla sala sono stati effettuati tramite badge, ed è stato possibile uscire non più più di un'ora al giorno. Non dirò che questo ci abbia causato alcun inconveniente significativo; per gran parte della giornata rimanevamo seduti e lavoravamo. Il cibo, infatti, era molto scarso; a pranzo abbiamo ricevuto un bicchiere di brodo, una crostata e una mela, ma anche questo non ci ha disturbato più di tanto, eravamo concentrati su altro.

Periodicamente distribuivano Red Bull, due lattine per mano, il che era molto utile. La ricetta bevanda energetica + caffè, testata a lungo negli hackathon, mi ha permesso di programmare tutta la notte e il giorno successivo, essendo allegro come un bicchiere. Il secondo giorno, infatti, abbiamo semplicemente aggiunto nuove funzionalità all'applicazione, calcolato indicatori finanziari e iniziato a visualizzare grafici basati sulle statistiche dei difetti nelle autostrade. Nel nostro percorso non è stata effettuata alcuna revisione del codice in quanto tale; gli esperti hanno valutato la soluzione al problema in stile kaggle.com, in base all'accuratezza delle previsioni, e il front-end è stato valutato visivamente. La nostra soluzione ML si è rivelata la più precisa, forse questo è ciò che ci ha permesso di diventare leader. Nella notte tra sabato e domenica lavoravamo fino alle 2 di notte, poi andavamo a dormire nell'appartamento che usavamo come base. Abbiamo dormito circa 5 ore, domenica alle 9 eravamo già all'Expo di Kazan. Ho preparato qualcosa in fretta, ma la maggior parte del tempo l'ho passato a prepararmi per la pre-difesa. Le pre-difese si sono svolte in 2 flussi, davanti a due squadre di esperti; ci è stato chiesto di parlare per ultimi, poiché entrambe le squadre di esperti volevano ascoltarci. Lo abbiamo preso come un buon segno. L'applicazione è stata mostrata dal mio portatile, da un server di sviluppo in esecuzione; non abbiamo avuto il tempo di distribuire correttamente l'applicazione, tuttavia, tutti hanno fatto lo stesso.

In generale è andato tutto bene, ci sono stati segnalati i punti in cui potevamo migliorare la nostra applicazione, e nel tempo prima della difesa abbiamo anche provato a mettere in pratica alcuni di questi commenti. Anche la difesa è andata sorprendentemente bene. Sulla base dei risultati della pre-difesa, sapevamo di essere avanti in termini di punti, eravamo in testa in termini di precisione della soluzione, avevamo un buon front-end, un buon design e, in generale, avevamo una buona sentimenti. Un altro segno positivo è stato che la moderatrice della nostra sezione si è fatta un selfie con noi prima di entrare nella sala da concerto, e quindi ho sospettato che potesse sapere qualcosa))). Ma non sapevamo il nostro punteggio dopo la difesa, quindi il tempo prima che la nostra squadra fosse annunciata dal palco è passato un po’ di tensione. Sul palco hanno consegnato un cartoncino con la scritta 500000 rubli e ad ogni persona è stata consegnata una borsa con una tazza e una batteria per cellulare. Non siamo riusciti a goderci la vittoria e a festeggiarla come si deve, abbiamo cenato velocemente e abbiamo preso un taxi per andare al treno.

La svolta digitale: come è avvenuta
Il Team WAICO vince la finale

Al ritorno a Mosca, i giornalisti di NTV ci hanno intervistato. Abbiamo filmato per un'ora intera al secondo piano del bar Kvartal 44 sulla Polyanka, ma il telegiornale ha mostrato solo circa 10 secondi, dopotutto un grande progresso rispetto alla scena regionale.

Se riassumiamo le impressioni generali della svolta digitale, sono le seguenti. Sono stati spesi molti soldi per l’evento; non avevo mai visto hackathon di tale portata prima. Ma non posso dire che ciò sia giustificato e che ripagherà davvero. Una parte significativa dei partecipanti che sono venuti a Kazan erano semplicemente festaioli che non sapevano fare nulla con le proprie mani e che sono stati costretti a stabilire un record. Non posso dire che la concorrenza nelle finali sia stata più alta che nella fase regionale. Inoltre, il valore e l'utilità dei compiti di alcune tracce sono discutibili. Alcuni problemi sono stati risolti da tempo a livello industriale. Come si è scoperto in seguito, alcune organizzazioni che hanno condotto le tracce non erano interessate a risolverle. E questa storia non è ancora finita, i team leader di ogni traccia sono stati selezionati per il pre-acceleratore e si presume che si riveleranno startup RIVOLUZIONARI. Ma non sono ancora pronto a scrivere di questo, vedremo cosa ne verrà fuori.

Fonte: habr.com

Aggiungi un commento