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
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:
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
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.
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.
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