Mani sauc Dmitrijs. Un es vÄlos runÄt par to, kÄ mÅ«su komanda Big Data trasÄ sasniedza Urban Tech Challenge hakatona finÄlu. Uzreiz teikÅ”u, ka Å”is nav pirmais hakatons, kurÄ piedalÄ«jos, un ne pirmais, kurÄ ieguvu balvas. Å ajÄ sakarÄ savÄ stÄstÄ es vÄlos izteikt dažus vispÄrÄ«gus novÄrojumus un secinÄjumus par hakatonu nozari kopumÄ un izteikt savu viedokli pretstatÄ negatÄ«vajÄm atsauksmÄm, kas parÄdÄ«jÄs tieÅ”saistÄ tÅ«lÄ«t pÄc Urban Tech Challenge beigÄm (par piemÄrs
TÄtad vispirms daži vispÄrÄ«gi novÄrojumi.
1. PÄrsteidzoÅ”i, ka diezgan daudzi cilvÄki naivi domÄ, ka hakatons ir kaut kÄdas sporta sacensÄ«bas, kurÄs uzvar labÄkie kodÄtÄji. Tas ir nepareizi. Neuzskatu gadÄ«jumus, kad hakatona rÄ«kotÄji paÅ”i nezina, ko grib (es arÄ« to esmu redzÄjis). Bet, kÄ likums, uzÅÄmums, kas organizÄ hakatonu, tiecas pÄc saviem mÄrÄ·iem. ViÅu saraksts var bÅ«t atŔķirÄ«gs: tas varÄtu bÅ«t tehnisks dažu problÄmu risinÄjums, jaunu ideju un cilvÄku meklÄÅ”ana utt. Å ie mÄrÄ·i nereti nosaka pasÄkuma formÄtu, laiku, online/offline, kÄ tiks formulÄti uzdevumi (un vai tie vispÄr tiks formulÄti), vai hakatonÄ bÅ«s koda apskats utt. No Ŕī viedokļa tiek vÄrtÄtas gan komandas, gan to paveiktais. Un uzvar tÄs komandas, kas vislabÄk trÄpa uzÅÄmumam nepiecieÅ”amo, un daudzi lÄ«dz Å”im nokļūst pilnÄ«gi neapzinÄti un nejauÅ”i, domÄjot, ka viÅi patieÅ”Äm piedalÄs sporta sacensÄ«bÄs. Mani novÄrojumi liecina, ka, lai motivÄtu dalÄ«bniekus, organizatoriem vajadzÄtu radÄ«t vismaz sportiskas vides izskatu un vienÄdus apstÄkļus, pretÄjÄ gadÄ«jumÄ viÅi saÅems negatÄ«visma vilni, kÄ iepriekÅ” minÄtajÄ apskatÄ. Bet mÄs novirzÄmies.
2. LÄ«dz ar to Å”Äds secinÄjums. Organizatori ir ieinteresÄti, lai dalÄ«bnieki uz hakatonu ierastos ar savu darbu, dažkÄrt pat speciÄli Å”im nolÅ«kam organizÄ tieÅ”saistes sarakstes posmu. Tas nodroÅ”ina spÄcÄ«gÄkus izvades risinÄjumus. JÄdziens āpaÅ”u darbsā ir ļoti relatÄ«vs; jebkurÅ” pieredzÄjis izstrÄdÄtÄjs savÄ pirmajÄ apÅemÅ”anÄs reizÄ var uzkrÄt tÅ«kstoÅ”iem koda rindu no saviem vecajiem projektiem. Un vai tÄ bÅ«s iepriekÅ” sagatavota attÄ«stÄ«ba? Bet jebkurÄ gadÄ«jumÄ ir spÄkÄ noteikums, ko es izteicu slavenÄ mÄma formÄ:
Lai uzvarÄtu, ir jÄbÅ«t kaut kam, kaut kÄdai konkurences priekÅ”rocÄ«bai: lÄ«dzÄ«gam projektam, ko darÄ«jÄt agrÄk, zinÄÅ”anÄm un pieredzei konkrÄtÄ tÄmÄ vai jau gatavam darbam, kas paveikts pirms hakatona sÄkuma. JÄ, tas nav sports. JÄ, tas var nebÅ«t ieguldÄ«to pūļu vÄrts (Å”eit katrs pats izlemj, vai ir vÄrts kodÄt 3 nedÄļas naktÄ«, lai saÅemtu balvu 100 tÅ«kstoÅ”u apmÄrÄ, kas sadalÄ«ta starp visu komandu, un pat ar risku to nesaÅemt). TaÄu bieži vien Ŕī ir vienÄ«gÄ iespÄja tikt uz priekÅ”u.
3. Komandas atlase. KÄ pamanÄ«ju hakatona Äatos, daudzi Å”im jautÄjumam pieiet diezgan vieglprÄtÄ«gi (lai gan tas ir svarÄ«gÄkais lÄmums, kas noteiks tavu rezultÄtu hakatonÄ). DaudzÄs darbÄ«bas jomÄs (gan sportÄ, gan hakatonos) esmu redzÄjis, ka stipri cilvÄki mÄdz apvienoties ar stiprajiem, vÄjie ar vÄjajiem, gudrie ar gudrajiem, nu, vispÄr jau saproti... ApmÄram tÄ arÄ« notiek Äatos: mazÄk spÄcÄ«gi programmÄtÄji uzreiz tiek noÄ·erti, cilvÄki, kuriem nav nekÄdu hakatonam vÄrtÄ«gu prasmju, ilgi turas ÄatÄ un izvÄlas komandu pÄc principa, ja nu kÄds paÅemtu. . Dažos hakatonos tiek praktizÄta izlases veida iedalÄ«Å”ana komandÄm, un organizatori apgalvo, ka izlases komandas sniegums nav sliktÄks par esoÅ”ajÄm. Bet, pÄc maniem novÄrojumiem, motivÄti cilvÄki, kÄ likums, paÅ”i atrod komandu, ja kÄds jÄnorÄ«ko, tad bieži vien daudzi uz hakatonu neierodas.
Kas attiecas uz komandas sastÄvu, tas ir ļoti individuÄls un ļoti atkarÄ«gs no uzdevuma. Es varÄtu teikt, ka minimÄlais dzÄ«votspÄjÄ«gais komandas sastÄvs ir dizainers - front-end vai front-end - back-end. TaÄu zinu arÄ« gadÄ«jumus, kad uzvarÄja komandas, kas sastÄv tikai no priekÅ”gala spÄlÄtÄjiem, kuras pievienoja vienkÄrÅ”u back-end node.js vai izveidoja mobilo aplikÄciju React Native; vai tikai no backenderiem, kuri veica vienkÄrÅ”u izkÄrtojumu. KopumÄ viss ir ļoti individuÄls un atkarÄ«gs no uzdevuma. Mans plÄns, izvÄloties komandu hakatonam, bija Å”Äds: es plÄnoju komplektÄt komandu vai pievienoties komandai, piemÄram, front-end - back-end - dizainers (es pats esmu front-end). Un diezgan Ätri es sÄku tÄrzÄt ar python backender un dizaineru, kurÅ” pieÅÄma uzaicinÄjumu pievienoties mums. Nedaudz vÄlÄk mums pievienojÄs meitene, biznesa analÄ«tiÄ·e, kurai jau bija pieredze uzvarÄt hakatonÄ, un tas izŔķīra jautÄjumu par viÅas pievienoÅ”anos mums. PÄc Ä«sas tikÅ”anÄs mÄs nolÄmÄm sevi saukt par U4 (URBAN 4, urban four) pÄc analoÄ£ijas ar fantastisko Äetrinieku. Un viÅi pat ievietoja atbilstoÅ”u attÄlu mÅ«su telegrammas kanÄla iemiesojumÄ.
4. Uzdevuma izvÄle. KÄ jau teicu, jums ir jÄbÅ«t konkurences priekÅ”rocÄ«bÄm, pamatojoties uz to, tiek izvÄlÄts uzdevums hakatonam. Pamatojoties uz to, paskatÄ«jies
RezultÄtÄ mÄs izturÄjÄm uzdevumu no DPiIR un nemaz nebijÄm sarÅ«gtinÄti, ka neizturÄjÄm EFKO, jo uzdevums mums, maigi izsakoties, Ŕķita dÄ«vains.
5. GatavoÅ”anÄs hakatonam. Kad beidzot kļuva zinÄms, ka esam kvalificÄjuÅ”ies hakatonam, sÄkÄm gatavoties. Un Å”eit es neaicinu sÄkt rakstÄ«t kodu nedÄļu pirms hakatona sÄkuma. Vismaz jums ir jÄbÅ«t gatavai sistÄmai, ar kuru jÅ«s varat nekavÄjoties sÄkt darbu, nekonfigurÄjot rÄ«kus un nesaskaroties ar kÄdu lib kļūdu, ko nolÄmÄt izmÄÄ£inÄt pirmo reizi hakatonÄ. Es zinu stÄstu par leÅÄ·iskajiem inženieriem, kuri ieradÄs hakatonÄ un pavadÄ«ja 2 dienas, lai izveidotu projekta bÅ«vi, tÄpÄc visam vajadzÄtu sagatavoties iepriekÅ”. MÄs plÄnojÄm pienÄkumus sadalÄ«t Å”Ädi: aizmugure raksta rÄpuļprogrammas, kas izpÄta internetu un ievieto visu savÄkto informÄciju datu bÄzÄ, savukÄrt es node.js ierakstu API, kas vaicÄ Å”o datu bÄzi un nosÅ«ta datus uz priekÅ”u. Å ajÄ sakarÄ es iepriekÅ” sagatavoju serveri, izmantojot express.js, un sagatavoju priekÅ”galu react. Es neizmantoju CRA, vienmÄr pielÄgoju tÄ«mekļa pakotni sev un ļoti labi zinu, kÄdus riskus tas var radÄ«t (atcerieties stÄstu par leÅÄ·iskajiem izstrÄdÄtÄjiem). Å ajÄ brÄ«dÄ« es pieprasÄ«ju mÅ«su dizainera saskarnes veidnes vai vismaz maketus, lai bÅ«tu priekÅ”stats par to, ko es izkÄrtoÅ”u. TeorÄtiski viÅam vajadzÄtu arÄ« paÅ”am sagatavoties un saskaÅot ar mums, bet es tÄ arÄ« nesaÅÄmu atbildi. RezultÄtÄ es aizÅÄmos dizainu no viena no saviem vecajiem projektiem. Un tas sÄka darboties vÄl ÄtrÄk, jo visi Ŕī projekta stili jau bija uzrakstÄ«ti. No tÄ izriet secinÄjums: dizainers ne vienmÄr ir vajadzÄ«gs komandÄ))). MÄs ieradÄmies hakatonÄ ar Å”iem notikumiem.
6. Darbs hakatonÄ. Pirmo reizi savu komandu tieÅ”raidÄ redzÄju tikai hakatona atklÄÅ”anÄ CentrÄlajÄ sadales centrÄ. TikÄmies, pÄrrunÄjÄm problÄmas risinÄjumu un darba posmus. Un, lai gan pÄc atklÄÅ”anas mums bija jÄdodas ar autobusu uz Sarkano oktobri, devÄmies mÄjÄs gulÄt, vienojoties ierasties vietÄ lÄ«dz 9.00. KÄpÄc? Organizatori acÄ«mredzot vÄlÄjÄs no dalÄ«bniekiem gÅ«t maksimÄlu labumu, tÄpÄc sakÄrtoja tieÅ”i Å”Ädu grafiku. Bet, pÄc manas pieredzes, jÅ«s varat normÄli kodÄt, neguļot vienu nakti. Kas attiecas uz otro, es vairs neesmu pÄrliecinÄts. Hakatons ir maratons, jums ir adekvÄti jÄaprÄÄ·ina un jÄplÄno savi spÄki. TurklÄt mums bija sagatavoÅ”anÄs darbi.
TÄpÄc pÄc izgulÄÅ”anÄs 9.00 sÄdÄjÄm Dewocracy sestajÄ stÄvÄ. Tad mÅ«su dizainers negaidÄ«ti paziÅoja, ka viÅam nav portatÄ«vÄ datora un viÅÅ” strÄdÄs no mÄjÄm, un mÄs sazinÄsimies pa telefonu. Å is bija pÄdÄjais piliens. Un tÄ mÄs pagriezÄmies no Äetrinieka uz trÄ«s, lai gan komandas nosaukumu nemainÄ«jÄm. Atkal, tas mums nebija liels trieciens; man jau bija dizains no vecÄ projekta. KopumÄ sÄkumÄ viss noritÄja diezgan gludi un pÄc plÄna. MÄs ielÄdÄjÄm datubÄzÄ (nolÄmÄm izmantot neo4j) inovatÄ«vu uzÅÄmumu datu kopu no organizatoriem. Es sÄku drukÄt, tad paÅÄmu node.js, un tad viss sÄka aizdegties. Es nekad iepriekÅ” nebiju strÄdÄjis ar neo4j, un sÄkumÄ meklÄju Å”ai datubÄzei strÄdÄjoÅ”u draiveri, pÄc tam izdomÄju, kÄ uzrakstÄ«t vaicÄjumu, un tad ar pÄrsteigumu atklÄju, ka Ŕī datu bÄze pÄc vaicÄjuma atgriež entÄ«tijas mezglu objektu un to malu masÄ«va forma. Tie. Kad es pieprasÄ«ju organizÄciju un visus datus par to, izmantojot TIN, viena organizÄcijas objekta vietÄ man tika atgriezts liels objektu klÄsts, kurÄ bija dati par Å”o organizÄciju un to savstarpÄjÄm attiecÄ«bÄm. Es uzrakstÄ«ju kartÄtÄju, kas izgÄja cauri visam masÄ«vam un salÄ«mÄja visus objektus atbilstoÅ”i to organizÄcijai vienÄ objektÄ. Bet kaujÄ, pieprasot 8 tÅ«kstoÅ”u organizÄciju datubÄzi, tas tika izpildÄ«ts ÄrkÄrtÄ«gi lÄni, apmÄram 20 - 30 sekundes. SÄku domÄt par optimizÄciju... Un tad mÄs laikus apstÄjÄmies un pÄrgÄjÄm uz MongoDB, un tas aizÅÄma kÄdas 30 minÅ«tes. KopumÄ uz neo4j tika zaudÄtas apmÄram 5 stundas.
Atcerieties, nekad neÅemiet tehnoloÄ£iju uz hakatonu, kas jums nav pazÄ«stams, jo var bÅ«t pÄrsteigumi. Bet kopumÄ, ja neskaita Å”o neveiksmi, viss noritÄja pÄc plÄna. Un jau 9. decembra rÄ«tÄ mums bija pilnÄ«bÄ strÄdÄjoÅ”a aplikÄcija. AtlikuÅ”ajÄ dienas daÄ¼Ä mÄs plÄnojÄm tam pievienot papildu funkcijas. TurpmÄk man viss gÄja samÄrÄ gludi, bet aizmugure sagÄdÄja vesela kaudze problÄmu ar viÅa rÄpuļprogrammu aizliegÅ”anu meklÄtÄjprogrammÄs, juridisko personu agregatoru surogÄtpastÄ, kas pieprasot nonÄca meklÄÅ”anas rezultÄtu pirmajÄs vietÄs. katram konkrÄtam uzÅÄmumam. Bet labÄk viÅam paÅ”am par to pastÄstÄ«t. PirmÄ papildu funkcija, ko pievienoju, bija meklÄÅ”ana pÄc pilna vÄrda. VKontakte Ä£enerÄldirektors. PagÄja vairÄkas stundas.
TÄtad uzÅÄmuma lapÄ mÅ«su lietojumprogrammÄ parÄdÄ«jÄs Ä£enerÄldirektora iemiesojums, saite uz viÅa VKontakte lapu un daži citi dati. Tas bija jauks Ä·irsis uz kÅ«kas, lai gan tas varbÅ«t nedeva mums uzvaru. PÄc tam es gribÄju palaist kÄdu analÄ«zi. Bet pÄc ilgas iespÄju meklÄÅ”anas (ar UI bija daudz nianÅ”u) es nokÄrtojos uz vienkÄrÅ”Äko organizÄciju apkopoÅ”anu pÄc saimnieciskÄs darbÄ«bas koda. Jau vakarÄ, pÄdÄjÄs stundÄs, klÄju veidni inovatÄ«vu produktu attÄloÅ”anai (mÅ«su aplikÄcijÄ it kÄ ir sadaļa Produkti un pakalpojumi), lai gan aizmugure tam nebija gatava. TajÄ paÅ”Ä laikÄ datubÄze strauji pieauga, rÄpuļprogrammas turpinÄja strÄdÄt, aizmugure eksperimentÄja ar NLP, lai atŔķirtu novatoriskus tekstus no nenovatoriem))). TaÄu noslÄguma prezentÄcijas laiks jau tuvojÄs.
7. PrezentÄcija. No savas pieredzes varu teikt, ka jums vajadzÄtu pÄriet uz prezentÄcijas sagatavoÅ”anu apmÄram 3 lÄ«dz 4 stundas pirms tÄs termiÅa. It Ä«paÅ”i, ja tas ir saistÄ«ts ar video, tÄ uzÅemÅ”ana un rediÄ£ÄÅ”ana aizÅem diezgan daudz laika. Mums bija paredzÄts video. Un mums bija Ä«paÅ”s cilvÄks, kas ar to nodarbojÄs, kÄ arÄ« risinÄja vairÄkus citus organizatoriskus jautÄjumus. Å ajÄ sakarÄ mÄs lÄ«dz pÄdÄjam brÄ«dim nenovÄrsÄm uzmanÄ«bu no kodÄÅ”anas.
8. PiÄ·is. Man nepatika, ka prezentÄcijas un finÄli notika atseviÅ”Ä·Ä darba dienÄ (pirmdien). Å eit, visticamÄk, turpinÄjÄs organizatoru politika izspiest no dalÄ«bniekiem maksimumu. Es neplÄnoju atvaļinÄjumu no darba, gribÄju tikai tikt uz finÄlu, lai gan pÄrÄjÄ komanda paÅÄma brÄ«vu dienu. TaÄu emocionÄlÄ iedziļinÄÅ”anÄs hakatonÄ jau bija tik liela, ka pulksten 8 savas komandas (darba, nevis hakatona komandas) ÄatÄ ierakstÄ«ju, ka dienu pavadu par saviem lÄ«dzekļiem, un devos uz centrÄlo. birojs laukumiem. IzrÄdÄ«jÄs, ka mÅ«su problÄmai ir daudz tÄ«ru datu zinÄtnieku, un tas lielÄ mÄrÄ ietekmÄja pieeju problÄmas risinÄÅ”anai. Daudziem bija labs DS, bet nevienam nebija strÄdÄjoÅ”a prototipa, daudzi nevarÄja apiet savu rÄpuļprogrammu aizliegumus meklÄtÄjprogrammÄs. MÄs bijÄm vienÄ«gÄ komanda ar funkcionÄjoÅ”u prototipu. Un mÄs zinÄjÄm, kÄ atrisinÄt problÄmu. BeigÄs uzvarÄjÄm trasi, lai gan ļoti paveicÄs, ka izvÄlÄjÄmies vismazÄk konkurÄtspÄjÄ«go uzdevumu. Apskatot laukumus citÄs trasÄs, sapratÄm, ka tur mums nebÅ«s nekÄdu izredžu. Es arÄ« gribu teikt, ka mums ļoti paveicÄs ar žūriju, viÅi rÅ«pÄ«gi pÄrbaudÄ«ja kodu. Un, spriežot pÄc atsauksmÄm, tas nenotika visÄs trasÄs.
9. FinÄls. PÄc tam, kad vairÄkas reizes tikÄm izsaukti pie žūrijas uz koda pÄrskatÄ«Å”anu, mÄs, domÄjot, ka beidzot esam atrisinÄjuÅ”i visus jautÄjumus, devÄmies pusdienot uz Burger King. Tur mums atkal zvanÄ«ja organizatori, nÄcÄs Ätri iesaiÅot pasÅ«tÄ«jumus un doties atpakaļ.
Organizators mums parÄdÄ«ja, kurÄ telpÄ jÄiet, un, ieejot, mÄs nokļuvÄm uzvarÄtÄju komandu publiskÄs runas apmÄcÄ«bÄ. PuiÅ”i, kuriem vajadzÄja uzstÄties uz skatuves, bija labi uzlÄdÄti, visi iznÄca kÄ Ä«sti Å”ovmeÅi.
Un jÄatzÄ«st, ka finÄlÄ uz citu traÅ”u spÄcÄ«gÄko komandu fona izskatÄ«jÄmies bÄli, valdÄ«bas klientu nominÄcijÄ uzvara gluži pelnÄ«ti tika nekustamo Ä«paÅ”umu tehnoloÄ£iju trases komandai. Es domÄju, ka galvenie faktori, kas veicinÄja mÅ«su uzvaru trasÄ, bija: gatavÄs sagataves pieejamÄ«ba, kuras dÄļ mÄs varÄjÄm Ätri izgatavot prototipu, prototipa "izcelto punktu" klÄtbÅ«tne (meklÄjiet izpilddirektorus sociÄlajos tÄ«klos) un mÅ«su backender NLP prasmes, kas arÄ« ļoti ieinteresÄja žūriju.
Un noslÄgumÄ tradicionÄls paldies visiem, kas mÅ«s atbalstÄ«ja, mÅ«su trases žūrijai JevgeÅijam Jevgrafijevam (problÄmas autoram, kuru atrisinÄjÄm hakatonÄ) un, protams, hakatona organizatoriem. Å is, iespÄjams, bija lielÄkais un forÅ”Äkais hakatons, kurÄ esmu piedalÄ«jies, varu tikai novÄlÄt puiÅ”iem arÄ« turpmÄk saglabÄt tik augstu lÄ«meni!
Avots: www.habr.com