Cumu è perchè avemu vintu a pista Big Data à l'hackathon Urban Tech Challenge

Mi chjamu Dmitry. È vogliu parlà di cumu a nostra squadra hà ghjuntu à a finale di l'hackathon Urban Tech Challenge nantu à a pista Big Data. Dicu subitu chì questu ùn hè micca u primu hackathon in quale aghju participatu, è micca u primu in quale aghju pigliatu premii. In questu sensu, in a mo storia, vogliu esce alcune osservazioni generali è cunclusioni riguardanti l'industria di l'hackathon in tuttu, è dà u mo puntu di vista in uppusizione à e recensioni negative chì apparsu in linea immediatamente dopu a fine di u Urban Tech Challenge (per esempiu questu).

Allora prima alcune osservazioni generale.

1. Hè surprisante chì uni pochi di persone pensanu ingenuamente chì un hackathon hè un tipu di cumpetizione sportiva induve i megliu codificatori vincenu. Questu hè sbagliatu. Ùn aghju micca cunsideratu i casi quandu l'urganizatori di hackathon stessi ùn sanu micca ciò chì volenu (aghju vistu ancu). Ma, in regula, a cumpagnia chì urganizeghja un hackathon persegue i so scopi. U so listinu pò esse diversu: puderia esse una suluzione tecnica à certi prublemi, una ricerca di idee è persone novi, etc. Questi scopi spessu determinanu u formatu di l'avvenimentu, u so timing, in linea / offline, cumu i travaglii seranu formulati (è s'ellu seranu formulati in tuttu), s'ellu ci sarà una revisione di codice à l'hackathon, etc. E duie squadre è ciò chì anu fattu sò valutati da questu puntu di vista. E quelli squadre chì anu megliu u puntu chì a cumpagnia hà bisognu vincenu, è parechji ghjunghjenu à questu puntu completamente inconsciente è per accidenti, pensendu chì participanu veramente à una cumpetizione sportiva. I mo osservazioni mostranu chì, per motivà i participanti, l'urganizatori anu da creà almenu l'apparenza di un ambiente sportiu è e cundizioni uguali, altrimente riceveranu una onda di negatività, cum'è in a rivista sopra. Ma avemu digressu.

2. Da quì a seguente cunclusione. L'urganizatori anu interessatu à i participanti chì venenu à l'hackathon cù u so propiu travagliu, à volte ancu urganizanu apposta una tappa di currispundenza in linea per questu scopu. Questu permette solu suluzione più forte. U cuncettu di "travagliu propiu" hè assai relative, ogni sviluppatore espertu pò accumulà millaie di linee di codice da i so vechji prughjetti in u so primu impegnu. E questu serà un sviluppu pre-preparatu? Ma in ogni casu, s'applica a regula, chì aghju espressu in a forma di un meme famosu:

Cumu è perchè avemu vintu a pista Big Data à l'hackathon Urban Tech Challenge

Per vince, duvete avè qualcosa, qualchì tipu di vantaghju cumpetitivu: un prughjettu simili chì avete fattu in u passatu, cunniscenze è sperienza in un tema specificu, o un travagliu prontu fattu prima di l'iniziu di l'hackathon. Iè, ùn hè micca sportiu. Iè, questu ùn vale micca u sforzu spesu (qui, ognunu decide per sè stessu s'ellu vale a pena codificà per 3 settimane di notte per un premiu di 100 mila, spartutu trà tutta a squadra, è ancu cù u risicu di ùn avè micca). Ma, spessu, questu hè l'unica chance per andà avanti.

3. Selezzione di squadra. Cum'è aghju nutatu in i chats di hackathon, assai avvicinanu stu prublema abbastanza frivolmente (ancu se questa hè a decisione più impurtante chì determina u vostru risultatu à l'hackathon). In parechji spazii di l'attività (in u sportu è in l'hackathons) aghju vistu chì e persone forti tendenu à unisce cù i forti, i debuli cù i debuli, i intelligenti cù i intelligenti, bè, in generale, avete l'idea ... Questu hè apprussimatamente ciò chì succede in i chats: i programatori menu forti sò subitu subitu, e persone chì ùn anu micca cumpetenze preziose per un hackathon appiccicate in u chat per un bellu pezzu è sceglienu una squadra nantu à u principiu chì s'ellu solu qualcunu avissi a piglià. . In certi hackathons, l'assignazione aleatoria à e squadre hè praticata, è l'urganizatori sustene chì e squadre aleatorii ùn facenu micca peggiu di quelli esistenti. Ma sicondu i mo osservazioni, e persone motivate, in regula, truvà una squadra nantu à u so propiu, se qualchissia hà da esse attribuita, allora, spessu, assai di elli ùn venenu micca à l'hackathon.

In quantu à a cumpusizioni di a squadra, questu hè assai individuale è assai dipendente di u compitu. Puderaghju dì chì a cumpusizioni minima di a squadra viable hè un designer - front-end o front-end - back-ender. Ma sò ancu cunnoscu di casi quandu i squadre chì sò custituiti solu di front-enders vincenu, chì aghjunghjenu un back-end simplice in node.js, o facenu una applicazione mobile in React Native; o solu da backenders chì anu fattu un layout simplice. In generale, tuttu hè assai individuale è dipende di u compitu. U mo pianu per selezziunà una squadra per l'hackathon era u seguitu: aghju pensatu di assemblà una squadra o unisce à una squadra cum'è front-end - back-end - designer (sò un front-end mè stessu). È abbastanza rapidamente aghju cuminciatu à chjamà cun un backender di pitone è un designer chì hà accettatu l'invitu per unisce à noi. Un pocu dopu, una zitella, un analista di cummerciale, chì hà digià avutu l'esperienza di vince un hackathon, hà unitu à noi, è questu hà decisu u prublema di unisce à noi. Dopu una riunione corta, avemu decisu di chjamà noi U4 (URBAN 4, urban four) per analogia cù i fantastichi four. È ancu mette una stampa currispundente nantu à l'avatar di u nostru canale di telegram.

4. Selezziunà un compitu. Cum'è aghju digià dettu, duvete avè un vantaghju cumpetitivu, u compitu per l'hackathon hè sceltu basatu annantu à questu. Basatu nantu à questu, dopu avè vistu lista di compiti è valutendu a so cumplessità, avemu stallatu nantu à dui compiti: un catalogu di imprese innovatori da DPiIR è un chatbot da EFKO. U compitu da DPIiR hè statu sceltu da u backender, u compitu da EFKO hè statu sceltu da mè, perchè hà avutu sperienza di scrive chatbots in node.js è DialogFlow. U compitu EFKO hà ancu implicatu ML. E sicondu i cundizioni di u prublema, mi paria chì era improbabile di esse risoltu cù l'utili ML. Questa sensazione hè stata rinfurzata quandu aghju andatu à u meetingup Urban Tech Challenge, induve l'urganizatori m'hà dimustratu un dataset nantu à EFKO, induve ci era circa 100 foto di layout di produttu (pigliate da diverse anguli) è circa 20 classi di errori di layout. È, à u listessu tempu, quelli chì urdinanu u compitu vulianu ottene una classificazione di successu di 90%. In u risultatu, aghju preparatu una presentazione di a suluzione senza ML, u backender hà preparatu una presentazione basata nantu à u catalogu, è inseme, dopu avè finalizatu e presentazioni, l'avemu mandatu à u Urban Tech Challenge. Dighjà in stu stadiu, u livellu di motivazione è cuntribuzione di ogni participante hè statu revelatu. U nostru designer ùn hà micca participatu à e discussioni, hà rispostu tardi, è ancu cumpletu l'infurmazioni nantu à ellu stessu in a presentazione in l'ultimu mumentu, in generale, i dubbiti sò ghjunti.

Per via di u risultatu, avemu passatu u compitu da DPiIR, è ùn eramu micca in tuttu turbatu chì ùn avemu micca passatu l'EFKO, postu chì u compitu ci pareva stranu, per dì un pocu.

5. Preparazione per l'hackathon. Quandu infine hà sappiutu chì avemu avutu qualificatu per l'hackathon, avemu cuminciatu à preparà a preparazione. È quì ùn sò micca favuritu di cumincià à scrive codice una settimana prima di l'iniziu di l'hackathon. À u minimu, duvete avè un boilerplate prontu, cù quale pudete immediatamente principià à travaglià, senza avè bisognu di cunfigurà strumenti, è senza bumping in bugs of some lib chì avete decisu di pruvà per a prima volta in un hackathon. Cunnoscu una storia nantu à l'ingegneri angulari chì sò ghjunti à un hackathon è anu passatu 2 ghjorni à mette in a creazione di u prugettu, cusì tuttu deve esse preparatu in anticipu. Avemu intesu distribuisce e rispunsabilità cum'è seguitu: u backender scrive crawlers chì scour l'Internet è mette tutte l'infurmazioni raccolte in a basa di dati, mentre scrivu una API in node.js chì interruga sta basa di dati è manda i dati à u fronte. In questu sensu, aghju preparatu un servitore in anticipu cù express.js è preparatu un front-end in reagisce. Ùn aghju micca aduprà CRA, aghju sempre persunalizà webpack per mè stessu è sò assai bè chì risichi pò esse (ricurdate a storia di i sviluppatori angulari). À questu puntu, aghju dumandatu mudelli di interfaccia o almenu mockups da u nostru designer per avè un'idea di ciò chì avaristi. In teoria, deve ancu fà e so propiu preparazioni è coordinate cun noi, ma ùn aghju mai ricevutu una risposta. In u risultatu, aghju pigliatu in prestu u disignu da unu di i mo vechji prughjetti. È hà cuminciatu à travaglià ancu più veloce, postu chì tutti i stili per stu prughjettu era digià scrittu. Da quì a cunclusione: un designer ùn hè micca sempre necessariu in una squadra))). Avemu ghjuntu à l'hackathon cù questi sviluppi.

6. U travagliu à l'hackathon. A prima volta chì aghju vistu a mo squadra in diretta era solu à l'apertura di l'hackathon à u Centru di Distribuzione Centrale. Avemu scontru, discutitu a suluzione è e tappe di u travagliu nantu à u prublema. È ancu s'è dopu à l'apertura duvemu andà in autobus à l'Ottobre Rossu, andemu in casa per dorme, accunsentendu à ghjunghje à u locu da 9.00. Perchè? L'urganizatori apparentemente vulianu ottene u più di i participanti, cusì anu urganizatu solu un tali calendariu. Ma, in a mo spirimintà, pudete codificà normalmente senza dorme per una notte. In quantu à u sicondu, ùn sò più sicuru. Un hackathon hè una maratona chì avete bisognu di calculà è pianificà a vostra forza. Inoltre, avemu avutu preparazione.

Cumu è perchè avemu vintu a pista Big Data à l'hackathon Urban Tech Challenge

Dunque, dopu à dorme, à 9.00 eramu à pusà à u sestu pianu di Dewocracy. Allora u nostru designer hà annunziatu inaspettatamente chì ùn hà micca un laptop è ch'ellu hà da travaglià da casa, è avemu da cumunicà per telefunu. Questa era l'ultima paglia. È cusì avemu turnatu da un quattru à un trè, ancu s'ellu ùn avemu micca cambiatu u nome di a squadra. In novu, questu ùn era micca un grande colpu per noi, aghju digià avutu u disignu da u vechju prughjettu. In generale, à u principiu tuttu hè andatu abbastanza bè è secondu u pianu. Avemu caricatu in a basa di dati (avemu decisu d'utilizà neo4j) un dataset di cumpagnie innovative da l'urganizatori. Aghju cuminciatu à scrive, dopu piglià node.js, è e cose cuminciaru à misfire. Ùn avia mai travagliatu cù neo4j prima, è prima stava à circà un driver di travagliu per questa basa di dati, dopu aghju capitu cumu scrive una dumanda, è dopu mi sò sorpresu di scopre chì sta basa di dati, quandu hè interrugata, torna entità in u forma di una matrice di oggetti nodi è i so bordi. Quelli. quandu aghju dumandatu una urganizazione è tutte e dati nantu à questu da TIN, invece di un ughjettu di l'urganizazione, mi sò tornatu una longa serie di oggetti chì cuntenenu dati nantu à questa urganizazione è e relazioni trà elli. Aghju scrittu un mapper chì passava per tutta l'array è incolla tutti l'uggetti secondu a so urganizazione in un oggettu. Ma in battaglia, quandu dumandava una basa di dati di 8 mila urganisazione, hè stata eseguita assai lentamente, circa 20 - 30 seconde. Aghju cuminciatu à pensà à l'ottimisazione... È dopu avemu firmatu in u tempu è cambiatu à MongoDB, è ci pigliò circa 30 minuti. In totale, circa 4 ore sò state perse nantu à neo5j.

Ricurdativi, ùn pigliate mai a tecnulugia à un hackathon chì ùn site micca familiarizatu, pò esse sorprese. Ma, in generale, fora di stu fallimentu, tuttu andò secondu u pianu. E digià a matina di u 9 di dicembre, avemu avutu una applicazione cumpletamente funzionante. Per u restu di u ghjornu avemu previstu di aghjunghje funzioni supplementari. In u futuru, tuttu hè andatu relativamente bè per mè, ma u backender hà avutu una mansa di prublemi cù a pruibizione di i so crawlers in i motori di ricerca, in u puzzicheghju di l'agregatori di e persone giuridiche, chì hè ghjuntu in i primi posti di risultati di ricerca quandu dumandava. per ogni cumpagnia specifica. Ma hè megliu per ellu di cuntà ellu stessu. A prima funzione supplementaria chì aghju aghjustatu hè a ricerca per nome cumpletu. Direttore Generale di VKontakte. Pigliò parechje ore.

Allora, nantu à a pagina di a cumpagnia in a nostra applicazione, apparsu un avatar di u direttore generale, un ligame à a so pagina VKontakte è altri dati. Era una bella ciliegia nantu à a torta, ancu s'ellu ùn ci hà micca datu a vittoria. Allora, aghju vulsutu eseguisce alcune analitiche. Ma dopu una longa ricerca di l'opzioni (ci era parechje sfumature cù l'UI), aghju stabilitu nantu à l'agregazione più simplice di l'urganisazione per codice di attività ecunomica. Dighjà à a sera, in l'ultime ore, aghju stallatu un mudellu per vede prudutti innovatori (in a nostra applicazione ci hè suppostu esse una sezione di Prodotti è Servizi), ancu s'è u backend ùn era micca prontu per questu. À u listessu tempu, a basa di dati era gonfiata da salti, i crawlers cuntinueghjanu à travaglià, u backender hà sperimentatu cù NLP per distingue i testi innovativi da quelli micca innovativi))). Ma l'ora di a presentazione finale s'avvicinava dighjà.

7. Presentazione. Da a mo sperienza, possu dì chì duvete passà à a preparazione di una presentazione circa 3 à 4 ore prima ch'ella sia dovuta. Soprattuttu s'ellu implica u video, a so ripresa è a so editazione piglia assai tempu. Duvemu avè un video. E avemu avutu una persona speciale chì hà trattatu questu, è ancu risolviu una quantità di altre prublemi di l'urganizazione. In questu sensu, ùn avemu micca distrattu da a codificazione finu à l'ultimu mumentu.

8. Pitch. Ùn mi piacia micca chì e presentazioni è finali sò stati in un ghjornu di settimana separatu (luni). Quì, assai prubabilmente, a pulitica di l'urganizatori di strincà u massimu di i participanti cuntinuava. Ùn aghju micca pensatu à piglià u tempu da u travagliu, vulia solu vene à a finale, ancu s'è u restu di a mo squadra hà pigliatu u weekend. Tuttavia, l'immersione emotiva in l'hackathon era digià cusì alta chì à 8 ore aghju scrittu in u chat di a mo squadra (u squadra di travagliu, micca a squadra di hackathon) chì aghju pigliatu u ghjornu à u mo propiu spesa, è andò à u centru cintrali. uffiziu per i piazzole. U nostru prublemu turnò à avè assai di scentifichi dati puri, è questu assai affettatu l'approcciu di risolve u prublema. Parechje avianu un bonu DS, ma nimu ùn avia un prototipu di travagliu, assai ùn pudianu svià i pruibizioni di i so crawlers in i search engines. Eramu l'unicu squadra cù un prototipu di travagliu. È sapemu cumu risolve u prublema. À a fine, avemu vintu a pista, ancu s'è avemu avutu assai furtunatu chì avemu sceltu u travagliu menu cumpetitivu. Fighjendu i piazzi in altre piste, avemu capitu chì ùn averemu micca chance quì. Vogliu ancu dì chì avemu avutu assai furtunatu cù u ghjuridicu anu verificatu meticulosamente u codice. E, à ghjudicà da e recensioni, questu ùn hè micca successu in tutti i pezzi.

9. Finale. Dopu chì avemu statu chjamatu à u ghjuridicu parechje volte per una rivista di codice, noi, pensendu chì avemu infine risoltu tutti i prublemi, andemu à pranzu à Burger King. Quì l'urganizatori ci anu chjamatu torna, avemu avutu à imballà rapidamente i nostri ordini è vultà.

L'urganizatore ci hà dimustratu in quale stanza ci vole à andà, è, à l'entrata, ci truvemu in una sessione di furmazione di parlà in publicu per i squadre vincitori. I picciotti chì duvianu esse realizatu nantu à u palcuscenicu eranu ben carichi, tutti sò sorti cum'è veri showmen.

È devu ammette, in a finale, in u sfondate di e squadre più forti da altre piste, avemu vistu pallidu a vittoria in a nomina di u cliente di u guvernu abbastanza meritatamente andò à a squadra da a pista di tecnulugia immubiliare. Pensu chì i fatturi chjave chì anu cuntribuitu à a nostra vittoria nantu à a pista eranu: a dispunibilità di un blank ready-made, per via di quale pudemu fà rapidamente un prototipu, a presenza di "highlights" in u prototipu (cerca di CEOs. nantu à e rete suciale) è e cumpetenze NLP di u nostru backender , chì hà ancu interessatu assai u ghjuridicu.

Cumu è perchè avemu vintu a pista Big Data à l'hackathon Urban Tech Challenge

E in cunclusioni, tradiziunale ringraziu à tutti quelli chì ci sustenevanu, u ghjuridicu di a nostra pista, Evgeniy Evgrafiev (l'autore di u prublema chì avemu risoltu à l'hackathon) è di sicuru l'urganizatori di l'hackathon. Questu hè statu forse u più grande è u più cool hackathon chì aghju mai participatu, possu solu desiderate à i ragazzi di mantene un standard cusì altu in u futuru!

Source: www.habr.com

Add a comment