La rivoluzione digitale — come è andata

Non è il primo hackathon che vinco, né il primo di cui scrivo, e non è affatto il primo post su Habr dedicato a "Digital Breakthrough." Ma non potevo non scrivere. Ritengo che la mia esperienza sia abbastanza unica da meritare di essere condivisa. Probabilmente sono l'unico a questo hackathon che ha vinto sia la fase regionale che la finale con squadre diverse. Vuoi sapere come è successo? Benvenuto sotto il tag.

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

Ho visto per la prima volta la pubblicità del "Salto Digitale" intorno a marzo-aprile di quest'anno. Naturalmente, non potevo lasciarmi sfuggire un hackathon così importante e mi sono registrato sul sito. Lì ho anche preso visione delle condizioni e del programma del concorso. A quanto pare, per partecipare all'hackathon, era necessario superare un test online, che iniziava il 16 maggio. E, probabilmente, avrei dimenticato tutto ciò, dal momento che non ho ricevuto alcuna email di promemoria sull'inizio del test. E devo dire che, successivamente, TUTTE LE EMAIL che ricevevo dal CP finivano regolarmente nella cartella spam. Anche se cliccavo ogni volta il pulsante "non è indesiderata". Non so come siano riusciti a ottenere un tale risultato; con la mia newsletter su MailGun non ci sono riuscito. E riguardo all'esistenza di servizi come isnotspam.com, sembra che i ragazzi non ne siano a conoscenza in generale. Ma ci siamo deviati.

Mi hanno ricordato dell'inizio del test durante uno degli incontri club delle startup, lì abbiamo anche discusso della formazione del team. Aprendo l'elenco dei test, mi sono subito immerso nel test su Javascript. In generale, le domande erano più o meno adeguate (tipo, quale sarà il risultato se si sommano in console 1 + '1'). Ma, basandomi sulla mia esperienza, utilizzerei test di questo tipo per la selezione di personale o di un team solo con molte riserve. Il fatto è che nella vita reale un programmatore si confronta raramente con situazioni del genere; la sua capacità di scrivere codice rapidamente non ha nulla a che fare con queste conoscenze, e allenarsi su tali cose per i colloqui è piuttosto semplice (lo so per esperienza). In generale, ho completato il test piuttosto rapidamente, controllando me stesso in console in alcuni casi. Nel test su Python, le domande erano di un tipo simile; anche qui controllavo me stesso in console e, con sorpresa, ho ottenuto più punti rispetto a Javascript, anche se non ho mai programmato professionalmente in Python. Successivamente, chiacchierando con i partecipanti, ho ascoltato storie di come programmatori forti ottenessero punteggi bassi nei test, e come a certe persone arrivassero e-mail dicendo che non avevano superato la selezione per il CP, per poi essere comunque invitati a parteciparvi. È chiaro che i creatori di questi test, con ogni probabilità, non hanno mai sentito parlare di teoria dei test, né sulla loro affidabilità e validità, né su come metterli alla prova, e l'idea dei test sarebbe stata fallimentare sin dall'inizio, anche senza considerare il principale obiettivo del hackathon. E il principale obiettivo dell'hackathon, come scoprii più tardi, era stabilire un record mondiale, e i test erano in contrasto con questo.

A un certo punto, dopo aver superato i test, mi hanno chiamato, hanno chiesto se avrei partecipato, hanno chiarito i dettagli e mi hanno detto come accedere alla chat per formare il team. Poco dopo, sono entrato nella chat e ho scritto brevemente di me. Nella chat c'era un caos totale, ho avuto l'impressione che gli organizzatori avessero attirato pubblicità molte persone casuali che non hanno alcun legame con l'IT. Numerosi product manager "del livello di Steve Jobs" (una frase reale da una presentazione di un partecipante) postavano racconti su di sé, mentre normali sviluppatori non si vedevano affatto. Ma sono stato fortunato e poco dopo mi sono unito a tre esperti programmatori JS. Ci siamo conosciuti di persona durante l'hackathon, e in quel momento abbiamo aggiunto una ragazza nel team per ispirazione e per gestire le questioni organizzative. Non ricordo più perché, ma abbiamo scelto il tema "Formazione in cybersecurity" e siamo finiti nel track "Scienza e istruzione 2". È stata la prima volta che mi sono trovato in un team di 4 forti programmatori e ho sentito per la prima volta quanto fosse facile vincere in una composizione del genere. Siamo arrivati non preparati e fino a pranzo abbiamo discusso e non riuscivamo a decidere cosa avremmo fatto: un'app mobile o un sito web. In qualsiasi altra situazione avrei pensato che fosse un fallimento. La cosa principale per noi era capire in cosa saremmo stati migliori rispetto ai concorrenti, dato che intorno a noi c'erano molte squadre che realizzavano test, giochi sulla cybersecurity e simili. Guardando tutto questo e cercando programmi e app educative, abbiamo deciso che la nostra principale caratteristica distintiva sarebbero stati addestramenti secondo il principio dell'allerta antincendio. Abbiamo selezionato una serie di caratteristiche che ci sembravano interessanti da realizzare (registrazione con verifica email e password tramite banche dati hacker, invio di email di phishing (sotto forma di email da banche famose), addestramento in ingegneria sociale in chat). Definito cosa stavamo facendo e capito come poterci distinguere, abbiamo scritto abbastanza rapidamente un'applicazione web completa, e io ho ricoperto un ruolo insolito per me di sviluppatore backend. Così, abbiamo vinto il nostro track con sicurezza e, insieme ad altri tre team, siamo avanzati alla finale a Kazan. Solo più tardi, a Kazan, ho scoperto che la selezione per la finale era una finzione; ho incontrato molti volti familiari di team che non erano stati selezionati. Ci hanno persino fatto un'intervista i giornalisti del primo canale. In effetti, nel reportage, la nostra applicazione è stata mostrata solo per un secondo.

La rivoluzione digitale — come è andata
Il team Snowed, con il quale ho vinto la fase regionale

Finale (Kazan, 27 - 29 settembre 2019)

Ma poi sono cominciati i problemi. Tutti i programmatori del team Snowed, nel corso di circa un mese, uno dopo l'altro, hanno comunicato che non sarebbero potuti andare a Kazan per la finale. Così ho iniziato a cercare un nuovo team. All'inizio ho lanciato un appello nella chat generale della Russian Hack Team, e sebbene abbia ricevuto molte risposte e inviti a unirmi a diversi team, nessuno di essi mi ha colpito. C'erano team squilibrati, come per esempio un product manager, uno sviluppatore mobile e un frontend developer, che mi ricordano il Cigno, il Granchio e la Luccio della favola. C'erano anche team che non si adattavano alla mia tecnologia (per esempio, quelli che sviluppavano un'app mobile su Flutter). Infine, in una chat che consideravo poco seria (quella di Vkontakte, dove si stava cercando di formare i team per la fase regionale), è stata pubblicata un'annuncio per la ricerca di un frontend developer, e io ho scritto per caso. I ragazzi si sono rivelati dottorandi del politecnico e mi hanno subito proposto di incontrarci e conoscerci. Mi è piaciuto, i team che preferiscono incontrarsi direttamente durante l'hackathon di solito mi mettono in guardia per la loro mancanza di motivazione. Ci siamo incontrati a «Grablja» in Pjatnitskaja. I ragazzi mi sono sembrati capaci, motivati, sicuri di sé e della vittoria, e ho preso la mia decisione proprio lì. Non sapevamo ancora quali sarebbero stati i track e le sfide della finale, ma ipotizzavamo di scegliere qualcosa legato al Machine Learning. La mia mansione sarebbe stata quella di scrivere un pannello di amministrazione per questo, quindi avevo già preparato un progetto di base basato su antd-admin.
Sono andato a Kazan gratuitamente, grazie agli organizzatori. Devo dire che già nei chat e nei blog sono state espresse molte lamentele riguardo all'acquisto dei biglietti e, in generale, all'organizzazione della finale, non ripeterò tutto questo.

Arrivati a Kazan Expo, dopo aver fatto il check-in (ho avuto qualche piccolo problema a ottenere il badge) e fatto colazione, siamo andati a scegliere un track. All'inaugurazione ufficiale, dove sono intervenuti i rappresentanti, siamo rimasti solo per circa 10 minuti. In realtà, avevamo già dei track preferiti, ma ci interessavano i dettagli. Nel track n. 18 (Rostelecom), ad esempio, è emerso che era necessario sviluppare un'app mobile, anche se nella descrizione non era stato accennato. La nostra scelta principale era tra il track n. 8, Diagnostica dei tubi, PJSC Gazprom Neft, e il track n. 13, Centri perinatali, Corte dei conti della Federazione Russa. In entrambi i casi era necessaria la Data Science, e in entrambi i casi si sarebbe potuto integrare il web. Nel track n. 13 ci ha bloccato il fatto che il compito di Data Science fosse piuttosto debole, si doveva estrarre dati da Rosstat e non era chiaro se fosse necessaria una interfaccia di amministrazione. Inoltre, il valore stesso del compito sollevava dubbi. Alla fine abbiamo deciso che, come team, eravamo più orientati verso il track n. 8, anche perché i ragazzi avevano già esperienza nella soluzione di compiti simili. Abbiamo iniziato a pensare allo scenario in base al quale la nostra applicazione sarebbe stata utilizzata dall'utente finale. Così abbiamo avuto due tipi di utenti: tecnici, interessati alle informazioni tecniche, e manager, che avevano bisogno di indicatori finanziari. Quando è emersa un'idea dello scenario, è diventato chiaro cosa fare nel front-end, cosa illustrare al designer, e quali metodi servissero nel back-end, rendendo possibile suddividere i compiti. I compiti nel team si sono distribuiti come segue: due persone si occupavano di ML con i dati forniti dagli esperti tecnici, una persona scriveva il back-end in Python, io scrivevo il front-end in React e Ant Design, e il designer disegnava le interfacce. Ci siamo anche seduti in modo da comunicare meglio, risolvendo i nostri compiti.

I primi giorni sono passati quasi inosservati. Durante le conversazioni con gli esperti tecnici, è emerso che questo compito era già stato risolto da loro ("Gazprom Neft"), erano semplicemente curiosi di sapere se potesse essere risolto meglio. Non dirò che questo ha diminuito la motivazione, ma ha lasciato un certo amaro in bocca. Mi ha sorpreso che durante la notte i moderatori delle sezioni segnassero i team che lavoravano (come dicevano per la statistica), cosa che di solito non si pratica nei hackathon. Al mattino avevamo un prototipo del frontend pronto, alcune tracce del backend e la prima soluzione di ML. In generale, avevamo già qualcosa da mostrare agli esperti. Nel pomeriggio di sabato, il designer aveva già disegnato un numero di interfacce maggiore di quelle che avrei potuto codificare e si è spostato a creare la presentazione. Il sabato era dedicato alla registrazione del record, e al mattino, tutti quelli che lavoravano nella sala sono stati allontanati nel corridoio; poi l'ingresso e l'uscita dalla sala avvenivano tramite badge, inoltre, si poteva uscire per un massimo di un'ora durante il giorno. Non dirò che questo ci ha creato disagi significativi, la maggior parte della giornata l'abbiamo comunque trascorsa lavorando. Il cibo, infatti, era molto scarso; per il pranzo abbiamo ricevuto un bicchiere di brodo, una torta e una mela, ma anche in questo caso non ci ha turbato più di tanto, eravamo concentrati su altro.

Periodicamente venivano distribuite lattine di red bull, due a persona, il che è stato molto utile. Un vecchio rimedio collaudato nei hackathon, energia + caffè, ci permetteva di programmare tutta la notte e il giorno successivo, rimanendo svegli e carichi. Il secondo giorno, in sostanza, ci limitavamo a introdurre nuove funzionalità nell'applicazione, abbiamo effettuato dei calcoli sui parametri finanziari e abbiamo iniziato a generare grafici sulla statistica dei difetti nelle infrastrutture. Non c'era un vero e proprio code review nel nostro track; gli esperti valutavano la soluzione del problema nello stile di kaggle.com, in base alla precisione delle previsioni, mentre il frontend veniva valutato visivamente. La nostra soluzione di ML si è rivelata la più accurata, e probabilmente questo ci ha aiutato a diventare leader. Nella notte tra sabato e domenica abbiamo lavorato fino alle 2 del mattino, per poi andare a dormire nell'appartamento che usavamo come base. Abbiamo dormito circa 5 ore e domenica alle 9 del mattino eravamo già alla Kazan Expo. Stavo affrettando alcune cose, ma gran parte del tempo è stata occupata dalla preparazione alla pre-difesa. Le pre-difese 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 anche tutti gli altri facevano così.

Nel complesso, tutto è andato bene; ci sono stati indicati dei punti in cui avremmo potuto migliorare la nostra applicazione, e nel tempo che ci ha portato alla difesa, abbiamo persino cercato di implementare alcune di queste osservazioni. Anche la difesa è andata sorprendentemente bene. Dopo la pre-difesa sapevamo che eravamo in vantaggio nei punteggi, eravamo leader per la precisione della soluzione, avevamo un buon front-end, un buon design e, in generale, avevamo buone sensazioni. Un altro segno favorevole è stato che la ragazza moderatrice della nostra sezione, prima di entrare nel concerto, ha fatto un selfie con noi; allora ho iniziato a sospettare che potesse sapere qualcosa))). Ma noi non conoscevamo i nostri punteggi dopo la difesa, quindi il tempo fino all'annuncio del nome della nostra squadra dal palco è trascorso un po' teso. Sul palco ci è stata consegnata una cartolina con la scritta 500000 rubli e a ciascuno un pacchetto con una tazza e una batteria per cellulare. Non siamo riusciti a goderci la vittoria e a celebrarla come si deve, abbiamo cenato rapidamente e siamo andati in taxi alla stazione.

La rivoluzione digitale — come è andata
Il team WAICO vince in finale

Al ritorno a Mosca, abbiamo rilasciato un’intervista ai giornalisti di NTV. Hanno ripreso per un'ora al secondo piano del caffè 'Kvartal 44' a Poljanka, ma nel notiziario hanno trasmesso solo dieci secondi. Nonostante ciò, è stato un notevole progresso rispetto alla fase regionale.

Se dobbiamo riassumere le impressioni generali dal Digital Breakthrough, queste sono le seguenti. Sono stati spesi davvero enormi somme per l'evento, non ho mai visto hackathon di questa portata. Ma dire che ciò sia giustificato, e che ne valga davvero la pena, non posso. Una parte significativa dei partecipanti, venuti a Kazan, era costituita semplicemente da festaioli che non sanno fare nulla con le proprie mani e che sono stati radunati per stabilire un record. Non posso dire che la competizione finale fosse più alta rispetto a quella della fase regionale. Inoltre, il valore e l'utilità di alcune delle sfide sono discutibili. Alcuni problemi erano stati già risolti a livello industriale da tempo. Come è emerso successivamente, alcune organizzazioni che gestivano i track non erano nemmeno interessate alla loro risoluzione. E questa storia non è ancora finita, i team leader di ogni track sono stati selezionati per il pre-acceleratore, ed è previsto che da loro nascano start-up RIVOLUZIONARIE. Ma per ora non sono pronto a scrivere su questo, vediamo cosa ne verrà fuori.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster