Hvernig og hvers vegna við unnum Big Data brautina á Urban Tech Challenge hackathoninu

Ég heiti Dmitry. Og ég vil tala um hvernig liðið okkar komst í úrslit Urban Tech Challenge hackathonsins á Big Data brautinni. Ég segi strax að þetta er ekki fyrsta hakkaþonið sem ég tók þátt í og ​​ekki það fyrsta sem ég fékk verðlaun í. Í þessu sambandi vil ég í sögu minni koma á framfæri nokkrum almennum athugunum og ályktunum varðandi hackathon iðnaðinn í heild sinni, og gefa sjónarhorn mitt á móti neikvæðum umsögnum sem birtust á netinu strax eftir lok Urban Tech Challenge (fyrir dæmi þetta).

Svo fyrst nokkrar almennar athuganir.

1. Það kemur á óvart að ansi margir halda barnalega að hackathon sé einhvers konar íþróttakeppni þar sem bestu kóðararnir vinna. Þetta er rangt. Ég lít ekki á tilvik þegar skipuleggjendur hackathon sjálfir vita ekki hvað þeir vilja (ég hef séð það líka). En að jafnaði, fyrirtækið sem skipuleggur hackathon sækist eftir eigin markmiðum. Listi þeirra gæti verið öðruvísi: það gæti verið tæknileg lausn á sumum vandamálum, leit að nýjum hugmyndum og fólki o.s.frv. Þessi markmið ráða oft sniði viðburðarins, tímasetningu hans, á netinu/ótengt, hvernig verkefnin verða mótuð (og hvort þau verði yfirhöfuð mótuð), hvort það verði endurskoðun kóða á hackathoninu o.s.frv. Bæði liðin og það sem þau gerðu eru metin út frá þessu sjónarhorni. Og þau lið sem ná best því marki sem fyrirtækið þarf á að halda vinna og margir komast að þessu marki algjörlega ómeðvitað og óvart og halda að þau séu í alvörunni að taka þátt í íþróttakeppni. Athuganir mínar sýna að til að hvetja þátttakendur ættu skipuleggjendur að skapa að minnsta kosti yfirbragð íþróttaumhverfis og jafnra aðstæðna, annars munu þeir fá bylgju neikvæðni eins og í ofangreindri umfjöllun. En við víkjum.

2. Þess vegna eftirfarandi niðurstaða. Skipuleggjendur hafa áhuga á að þátttakendur komi í hackathonið með eigin vinnu, stundum skipuleggja þeir sérstaklega bréfaskipti á netinu í þessu skyni. Þetta gerir ráð fyrir sterkari framleiðslulausnum. Hugmyndin um „eigin vinna“ er mjög afstæð; allir reyndir verktaki getur safnað þúsundum kóðalína úr gömlu verkefnum sínum í fyrstu skuldbindingu sinni. Og verður þetta fyrirfram undirbúin þróun? En í öllu falli gildir reglan, sem ég lýsti í formi frægu meme:

Hvernig og hvers vegna við unnum Big Data brautina á Urban Tech Challenge hackathoninu

Til að vinna þarftu að hafa eitthvað, einhvers konar samkeppnisforskot: svipað verkefni og þú gerðir áður, þekkingu og reynslu í tilteknu efni eða tilbúið verk sem unnið var áður en hackathonið hófst. Já, það er ekki íþrótt. Já, þetta er kannski ekki fyrirhafnarinnar virði (hér ákveður hver sjálfur hvort það sé þess virði að kóða í 3 vikur á nóttunni fyrir 100 þúsund vinning, skipt á allt liðið, og jafnvel með hættu á að fá það ekki). En oft er þetta eina tækifærið til að komast áfram.

3. Liðsval. Eins og ég tók eftir í hackathon spjalli, nálgast margir þetta mál frekar léttúðlega (þótt þetta sé mikilvægasta ákvörðunin sem mun ákvarða niðurstöðu þína á hackathon). Á mörgum sviðum athafna (bæði í íþróttum og í hackathon) hef ég séð að sterkt fólk hefur tilhneigingu til að sameinast þeim sterku, veiku með veikum, klárum með klárum, jæja, almennt, þú skilur hugmyndina... Þetta er í grófum dráttum það sem gerist í spjalli: minna sterkir forritarar eru strax teknir upp, fólk sem hefur enga hæfileika sem er dýrmætt fyrir hackathon hanga í spjallinu í langan tíma og velja lið á þeirri reglu að ef bara einhver myndi taka það . Á sumum hakkaþonum eru slembiúthlutun á liðum æfð og skipuleggjendur halda því fram að tilviljanakennd lið standi sig ekki verr en þau sem fyrir eru. En samkvæmt mínum athugunum finnur áhugasamt fólk að jafnaði lið á eigin spýtur; ef það þarf að úthluta einhverjum þá koma oft margir þeirra ekki í hackathonið.

Hvað varðar samsetningu liðsins þá er þetta mjög einstaklingsbundið og mjög háð verkefninu. Ég gæti sagt að lágmarks lífvænleg liðssamsetning sé hönnuður - framhlið eða framhlið - bakhlið. En ég veit líka um tilvik þar sem teymi sem samanstanda eingöngu af framendum unnu, sem bættu við einföldum bakenda í node.js, eða gerðu farsímaforrit í React Native; eða aðeins frá bakendendum sem gerðu einfalt skipulag. Almennt séð er allt mjög einstaklingsbundið og fer eftir verkefninu. Áætlun mín um að velja lið fyrir hackathonið var sem hér segir: Ég ætlaði að setja saman teymi eða ganga í teymi eins og front-end - back-end - hönnuður (ég er sjálfur framenda). Og nokkuð fljótt byrjaði ég að spjalla við python-bakvörð og hönnuð sem þáði boðið um að vera með okkur. Stuttu seinna kom stúlka, viðskiptafræðingur, sem þegar hafði reynslu af því að vinna hackathon, til liðs við okkur og þetta réð úrslitum um að hún kom til okkar. Eftir stuttan fund ákváðum við að kalla okkur U4 (URBAN 4, urban four) á hliðstæðan hátt við hina frábæru fjögur. Og þeir settu meira að segja samsvarandi mynd á avatar símskeytarásarinnar okkar.

4. Val á verkefni. Eins og ég sagði þegar, þú verður að hafa samkeppnisforskot, verkefnið fyrir hackathon er valið út frá þessu. Byggt á þessu, eftir að hafa skoðað verkefnalista og metum hversu flókin þau eru, tókum við tvö verkefni: Skrá yfir nýsköpunarfyrirtæki frá DPiIR og spjallbot frá EFKO. Verkefnið frá DPIiR var valið af bakaðila, verkefnið frá EFKO var valið af mér, vegna þess að hafði reynslu af því að skrifa chatbots í node.js og DialogFlow. EFKO verkefnið tók einnig til ML, ég hef nokkra, ekki mjög mikla, reynslu af ML. Og í samræmi við aðstæður vandamálsins virtist mér ólíklegt að það yrði leyst með ML verkfærum. Þessi tilfinning styrktist þegar ég fór á Urban Tech Challenge fundinn, þar sem skipuleggjendur sýndu mér gagnapakka á EFKO, þar sem voru um 100 myndir af vöruútliti (teknar frá mismunandi sjónarhornum) og um 20 flokkar af skipulagsvillum. Og á sama tíma vildu þeir sem pöntuðu verkefnið ná 90% árangri í flokkun. Í kjölfarið útbjó ég kynningu á lausninni án ML, bakaðilinn útbjó kynningu sem byggði á vörulistanum og saman, eftir að hafa gengið frá kynningunum, sendum við þær í Urban Tech Challenge. Þegar á þessu stigi kom í ljós hve hvatning og framlag hvers þátttakanda var. Hönnuður okkar tók ekki þátt í umræðunum, svaraði seint og fyllti jafnvel út upplýsingar um sjálfan sig í kynningunni á allra síðustu stundu, almennt vöknuðu efasemdir.

Fyrir vikið stóðumst við verkefnið frá DPiIR og vorum alls ekki óhress með að við næðum ekki EFKO, enda þótti okkur verkefnið vægast sagt undarlegt.

5. Undirbúningur fyrir hackathon. Þegar loksins kom í ljós að við værum komnir í hakkaþonið fórum við að undirbúa undirbúninginn. Og hér er ég ekki að mæla með því að byrja að skrifa kóða viku fyrir upphaf hackathonsins. Að minnsta kosti ættir þú að vera með boilerplate tilbúinn, sem þú getur strax byrjað að vinna með, án þess að þurfa að stilla verkfæri, og án þess að rekast á galla af einhverju lib sem þú ákvaðst að prófa í fyrsta skipti á hackathon. Ég þekki sögu um hornverkfræðinga sem komu í hackathon og eyddu 2 dögum í að setja upp verkefnisgerðina, svo allt ætti að vera undirbúið fyrirfram. Við ætluðum að dreifa ábyrgð sem hér segir: bakþjónninn skrifar crawlers sem leita á netinu og setja allar safnaðar upplýsingar í gagnagrunninn, á meðan ég skrifa API í node.js sem leitar í þennan gagnagrunn og sendir gögnin að framan. Í þessu sambandi útbjó ég netþjón fyrirfram með því að nota express.js og útbjó framenda í react. Ég nota ekki CRA, ég sérsníða alltaf vefpakkann fyrir sjálfan mig og ég veit vel hvaða áhættu þetta getur haft í för með sér (munið söguna um skörpum forritara). Á þessum tímapunkti bað ég um viðmótssniðmát eða að minnsta kosti mockups frá hönnuðinum okkar til að hafa hugmynd um hvað ég myndi setja út. Fræðilega séð ætti hann líka að undirbúa sig sjálfur og samræma hann við okkur, en ég fékk aldrei svar. Í kjölfarið fékk ég hönnunina lánaða úr einu af gömlu verkunum mínum. Og það byrjaði að ganga enn hraðar, þar sem allir stíll fyrir þetta verkefni hafði þegar verið skrifaður. Þess vegna er niðurstaðan: ekki er alltaf þörf á hönnuði í teymi))). Við komum í hackathon með þessa þróun.

6. Vinna við hackathon. Fyrsta skiptið sem ég sá liðið mitt í beinni var aðeins við opnun hackathonsins í Miðdreifingarmiðstöðinni. Við hittumst, ræddum lausnina og stig þess að vinna að vandanum. Og þó að eftir opnunina þyrftum við að fara með rútu til Rauða október fórum við heim að sofa, samþykktum að mæta á staðinn um 9.00. Hvers vegna? Skipuleggjendur vildu greinilega fá sem mest út úr þátttakendum svo þeir skipulögðu einmitt slíka dagskrá. En mín reynsla er að þú getur kóðað venjulega án þess að sofa eina nótt. Hvað varðar seinni þá er ég ekki lengur viss. Hackathon er maraþon; þú þarft að reikna út og skipuleggja styrk þinn nægilega. Þar að auki höfðum við undirbúning.

Hvernig og hvers vegna við unnum Big Data brautina á Urban Tech Challenge hackathoninu

Þess vegna, eftir að hafa sofið út, klukkan 9.00 sátum við á sjöttu hæð Dewocracy. Þá tilkynnti hönnuður okkar óvænt að hann ætti ekki fartölvu og að hann myndi vinna heima og við myndum hafa samskipti í gegnum síma. Þetta var síðasta hálmstráið. Og svo breyttum við úr fjórum í þrennu, þó við breyttum ekki liðsnafninu. Aftur, þetta var ekki mikið áfall fyrir okkur, ég hafði þegar hönnunina úr gamla verkefninu. Yfirleitt gekk allt í fyrstu nokkuð snurðulaust og samkvæmt áætlun. Við hlóðum inn í gagnagrunninn (við ákváðum að nota neo4j) gagnasafni nýsköpunarfyrirtækja frá skipuleggjendum. Ég byrjaði að setja inn, tók svo upp node.js og þá fóru hlutirnir að klikka. Ég hafði aldrei unnið með neo4j áður, og fyrst var ég að leita að starfandi rekla fyrir þennan gagnagrunn, síðan fann ég út hvernig á að skrifa fyrirspurn og svo kom mér á óvart að þessi gagnagrunnur, þegar spurt er um hann, skilar einingum í mynd af fylki hnúthluta og brúnir þeirra. Þeir. þegar ég bað um stofnun og öll gögn um hana með TIN, í stað eins stofnunarhluts, var mér skilað langri röð af hlutum sem innihéldu gögn um þessa stofnun og tengslin á milli þeirra. Ég skrifaði kortara sem fór í gegnum allt fylkið og límdi alla hluti í samræmi við skipulag þeirra í einn hlut. En í bardaga, þegar óskað var eftir gagnagrunni með 8 þúsund stofnunum, var hann keyrður mjög hægt, um 20 - 30 sekúndur. Ég fór að hugsa um hagræðingu... Og svo stoppuðum við í tíma og skiptum yfir í MongoDB og það tók okkur um 30 mínútur. Alls töpuðust um 4 tímar á neo5j.

Mundu, farðu aldrei með tækni í hackathon sem þú þekkir ekki, það gæti komið á óvart. En almennt séð, fyrir utan þessa bilun, gekk allt samkvæmt áætlun. Og þegar að morgni 9. desember vorum við komin með fullvirka umsókn. Það sem eftir var dagsins ætluðum við að bæta við fleiri eiginleikum við það. Í framtíðinni gekk allt tiltölulega snurðulaust fyrir mig, en bakþjónninn átti í miklum vandræðum með að banna skriðara sína í leitarvélum, í ruslpósti safnara lögaðila, sem kom í fyrsta sæti leitarniðurstaðna þegar óskað var eftir fyrir hvert tiltekið fyrirtæki. En það er betra fyrir hann að segja frá því sjálfur. Fyrsti viðbótaraðgerðin sem ég bætti við var leit með fullu nafni. Forstjóri VKontakte. Það tók nokkrar klukkustundir.

Svo, á síðu fyrirtækisins í umsókn okkar, birtist avatar framkvæmdastjórans, hlekkur á VKontakte síðuna hans og nokkur önnur gögn. Þetta var gott kirsuber á kökunni, þó það hafi kannski ekki skilað okkur vinningnum. Síðan langaði mig að keyra smá greiningu. En eftir langa leit að valkostum (það voru mörg blæbrigði við HÍ) settist ég á einfaldasta samsöfnun stofnana eftir hagkvæmniskóða. Þegar um kvöldið, á síðustu klukkutímum, var ég að setja upp sniðmát til að sýna nýstárlegar vörur (í forritinu okkar á að vera hluti fyrir vörur og þjónustu), þó að bakhliðin hafi ekki verið tilbúin fyrir þetta. Á sama tíma stækkaði gagnagrunnurinn hröðum skrefum, skriðararnir héldu áfram að vinna, bakþjónninn gerði tilraunir með NLP til að greina nýstárlega texta frá þeim sem ekki voru nýjungar))). En tími lokakynningarinnar var þegar að nálgast.

7. Kynning. Af eigin reynslu get ég sagt að þú ættir að skipta yfir í að undirbúa kynningu um 3 til 4 klukkustundum áður en hún er væntanleg. Sérstaklega ef það felur í sér myndband tekur myndataka þess og klipping töluvert mikinn tíma. Við áttum að vera með myndband. Og við vorum með sérstakan mann sem sinnti þessu og leysti líka ýmis önnur skipulagsmál. Í þessu sambandi afvegaleiðum við okkur ekki frá kóðun fyrr en á síðustu stundu.

8. Pitch. Mér líkaði ekki að kynningarnar og úrslitin væru haldin á sérstökum virkum degi (mánudagur). Hér hélt líklega áfram sú stefna skipuleggjenda að kreista hámarkið út úr þátttakendum. Ég ætlaði ekki að taka mér frí frá vinnu, ég vildi bara koma í úrslitakeppnina, þó að restin af liðinu mínu hafi tekið daginn frá. Hins vegar var tilfinningalega dýfan í hackathoninu þegar orðin svo mikil að klukkan 8 skrifaði ég í spjallið hjá teyminu mínu (vinnuliðinu, ekki hackathon liðinu) að ég væri að taka daginn á minn kostnað og fór í miðbæinn. skrifstofu fyrir velli. Vandamálið okkar reyndist vera með fullt af hreinum gagnafræðingum og þetta hafði mikil áhrif á nálgunina við að leysa vandann. Margir áttu góðan DS, en enginn var með virka frumgerð, margir komust ekki í kringum bönn skriða sinna í leitarvélum. Við vorum eina liðið með virka frumgerð. Og við vissum hvernig á að leysa vandamálið. Á endanum unnum við brautina þó við værum mjög heppnir að við völdum keppnisminnsta verkefnið. Þegar við skoðuðum vellina í öðrum brautum komumst við að því að þar ættum við enga möguleika. Ég vil líka segja að við vorum mjög heppin með dómnefndina, þeir skoðuðu kóðann nákvæmlega. Og af umsögnum að dæma gerðist þetta ekki í öllum lögum.

9. Úrslitaleikur. Eftir að við vorum kölluð til dómnefndar nokkrum sinnum til að fara yfir kóðann, héldum við að við hefðum loksins leyst öll mál, fórum að borða hádegismat á Burger King. Þar hringdu skipuleggjendurnir í okkur aftur, við þurftum að pakka pöntunum í skyndi og fara til baka.

Skipuleggjandinn sýndi okkur hvaða herbergi við þyrftum að fara inn í og ​​þegar við komum inn, fundum við okkur á ræðuæfingu fyrir sigurliðin. Strákarnir sem áttu að koma fram á sviðinu voru vel hlaðnir, allir komu út eins og alvöru sýningarmenn.

Og ég verð að viðurkenna að í úrslitaleiknum, gegn sterkustu liðunum frá öðrum brautum, litum við fölur út; sigurinn í tilnefningu ríkisstjórnarinnar um viðskiptavin fór verðskuldað til liðsins af fasteignatæknibrautinni. Ég held að lykilþættirnir sem stuðluðu að sigri okkar á brautinni hafi verið: framboð á tilbúnu eyðublaði, vegna þess að við gátum fljótt búið til frumgerð, tilvist „hápunkta“ í frumgerðinni (leit að forstjórum á samfélagsnetum) og NLP færni bakþjónsins okkar, sem einnig vakti mikla athygli dómnefndarinnar.

Hvernig og hvers vegna við unnum Big Data brautina á Urban Tech Challenge hackathoninu

Og að lokum, hefðbundnar þakkir til allra þeirra sem studdu okkur, dómnefndar brautarinnar okkar, Evgeniy Evgrafiev (höfundur vandamálsins sem við leystum á hakkaþoninu) og auðvitað skipuleggjendum hakkaþonsins. Þetta var kannski stærsta og flottasta hackathon sem ég hef tekið þátt í, ég get bara óskað strákanna að halda svona háum standard í framtíðinni!

Heimild: www.habr.com

Bæta við athugasemd