Ինչպես և ինչու մենք հաղթեցինք Big Data ուղու վրա Urban Tech Challenge հաքաթոնում

Իմ անունը Դմիտրի է։ Եվ ես ուզում եմ խոսել այն մասին, թե ինչպես է մեր թիմը հասել Urban Tech Challenge հաքաթոնի եզրափակիչ Big Data ուղու վրա: Անմիջապես կասեմ, որ սա առաջին հաքաթոնը չէ, որին ես մասնակցել եմ, և առաջինը չէ, որին ես մրցանակներ եմ ստացել։ Այս առումով, իմ պատմության մեջ ես ուզում եմ մի քանի ընդհանուր դիտարկումներ և եզրակացություններ հնչեցնել հեքաթոնի արդյունաբերության վերաբերյալ որպես ամբողջություն, և տալ իմ տեսակետը՝ ի տարբերություն բացասական ակնարկների, որոնք հայտնվել են առցանց Urban Tech Challenge-ի ավարտից անմիջապես հետո ( օրինակ այս).

Այսպիսով, նախ որոշ ընդհանուր դիտարկումներ.

1. Զարմանալի է, որ շատերը միամտորեն կարծում են, որ հեքըթոնը սպորտային մրցույթ է, որտեղ հաղթում են լավագույն կոդավորողները: Սա սխալ է. Ես չեմ համարում այն ​​դեպքերը, երբ հաքաթոնի կազմակերպիչներն իրենք չգիտեն, թե ինչ են ուզում (ես դա էլ եմ տեսել): Բայց, որպես կանոն, Հեքըթոն կազմակերպող ընկերությունը հետապնդում է իր նպատակները։ Նրանց ցանկը կարող է տարբեր լինել՝ դա կարող է լինել որոշ խնդիրների տեխնիկական լուծում, նոր գաղափարների ու մարդկանց որոնում և այլն։ Այս նպատակները հաճախ որոշում են միջոցառման ձևաչափը, դրա ժամանակացույցը, առցանց/օֆլայն, ինչպես են ձևակերպվելու առաջադրանքները (և ընդհանրապես ձևակերպվելու են), արդյոք կոդերի վերանայում կլինի հաքաթոնում և այլն: Այս տեսանկյունից են գնահատվում և՛ թիմերը, և՛ նրանց արածը։ Եվ հաղթում են այն թիմերը, որոնք լավագույնս հասել են այն կետին, որն անհրաժեշտ է ընկերությանը, և շատերը բոլորովին անգիտակցաբար և պատահաբար հասնում են այս կետին՝ մտածելով, որ իրենք իսկապես մասնակցում են սպորտային մրցույթի։ Իմ դիտարկումները ցույց են տալիս, որ մասնակիցներին մոտիվացնելու համար կազմակերպիչները պետք է գոնե մարզական միջավայրի տեսք և հավասար պայմաններ ստեղծեն, հակառակ դեպքում նրանք կստանան բացասական ալիք, ինչպես վերը նշված ստուգատեսում։ Բայց մենք շեղվում ենք.

2. Այստեղից էլ հետեւյալ եզրակացությունը. Կազմակերպիչները հետաքրքրված են, որ մասնակիցները հաքաթոնին գան սեփական աշխատանքով, երբեմն նույնիսկ հատուկ առցանց նամակագրության փուլ են կազմակերպում այդ նպատակով։ Սա թույլ է տալիս ավելի ուժեղ ելքային լուծումներ: «Սեփական աշխատանք» հասկացությունը շատ հարաբերական է, ցանկացած փորձառու ծրագրավորող կարող է հազարավոր տողեր կուտակել իր հին նախագծերից իր առաջին commit-ում: Եվ սա կլինի՞ նախապես պատրաստված զարգացում։ Բայց ամեն դեպքում գործում է կանոնը, որը ես արտահայտեցի հայտնի մեմի տեսքով.

Ինչպես և ինչու մենք հաղթեցինք Big Data ուղու վրա Urban Tech Challenge հաքաթոնում

Հաղթելու համար դուք պետք է ունենաք ինչ-որ բան, ինչ-որ մրցակցային առավելություն՝ նմանատիպ նախագիծ, որը արել եք նախկինում, գիտելիք և փորձ կոնկրետ թեմայում կամ պատրաստի աշխատանք, որը կատարվել է մինչև հաքաթոնի մեկնարկը։ Այո, դա սպորտային չէ: Այո, սա գուցե չարժե ծախսած ջանքերին (այստեղ յուրաքանչյուրն ինքն է որոշում՝ արժե՞ գիշերը 3 շաբաթ կոդավորել 100 հազար մրցանակի համար՝ բաժանված ամբողջ թիմի միջև և նույնիսկ այն չստանալու վտանգի դեպքում): Բայց, հաճախ, սա առաջ գնալու միակ հնարավորությունն է։

3. Թիմի ընտրություն. Ինչպես նկատեցի հեքըթոնային չաթերում, շատերը բավականին անլուրջ են մոտենում այս հարցին (չնայած սա ամենակարևոր որոշումն է, որը կորոշի ձեր արդյունքը հաքաթոնում): Գործունեության շատ ոլորտներում (ինչպես սպորտում, այնպես էլ հեքըթոններում) ես տեսել եմ, որ ուժեղ մարդիկ հակված են միավորվել ուժեղների հետ, թույլերը՝ թույլերի հետ, խելացիները՝ խելացիների հետ, լավ, ընդհանուր առմամբ, հասկանում ես... Մոտավորապես այսպես է պատահում չաթերում. քիչ ուժեղ ծրագրավորողներ, նրանք անմիջապես հափշտակվում են, մարդիկ, ովքեր չունեն հեքաթոնի համար արժեքավոր հմտություններ, երկար ժամանակ կախված են չաթում և ընտրում են թիմ այն ​​սկզբունքով, որ եթե ինչ-որ մեկը վերցնի այն: . Որոշ հեքըթոնների ժամանակ թիմերին պատահական հանձնարարություններ են կիրառվում, և կազմակերպիչները պնդում են, որ պատահական թիմերը ավելի վատ չեն գործում, քան գոյություն ունեցողները: Բայց իմ դիտարկումներով, մոտիվացված մարդիկ, որպես կանոն, ինքնուրույն թիմ են գտնում, եթե ինչ-որ մեկին պետք է նշանակել, ապա, հաճախ, նրանցից շատերը չեն գալիս հաքաթոնին։

Ինչ վերաբերում է թիմի կազմին, ապա սա շատ անհատական ​​է և մեծապես կախված է առաջադրանքից։ Ես կարող եմ ասել, որ նվազագույն կենսունակ թիմային կազմը դիզայներ է՝ front-end կամ front-end - back-end: Բայց ես նաև գիտեմ դեպքեր, երբ հաղթել են միայն front-ender-ներից բաղկացած թիմերը, ովքեր ավելացրել են պարզ back-end node.js-ում կամ կատարել բջջային հավելված React Native-ում; կամ միայն backender-ներից, ովքեր կատարել են պարզ դասավորություն: Ընդհանուր առմամբ, ամեն ինչ շատ անհատական ​​է և կախված է առաջադրանքից: Հեքըթոնի համար թիմ ընտրելու իմ պլանը հետևյալն էր. ես նախատեսում էի թիմ հավաքել կամ միանալ այնպիսի թիմի, ինչպիսին է front-end - back-end - designer (ես ինքս ֆրոնտ-end եմ): Եվ շատ արագ ես սկսեցի զրուցել python backender-ի և դիզայների հետ, ով ընդունեց մեզ միանալու հրավերը: Քիչ անց մեզ միացավ մի աղջիկ՝ բիզնես վերլուծաբան, ով արդեն հեքաթոնում հաղթելու փորձ ուներ, և դա որոշեց նրա՝ մեզ միանալու հարցը։ Կարճ հանդիպումից հետո մենք որոշեցինք մեզ անվանել U4 (URBAN 4, քաղաքային չորս) ֆանտաստիկ քառյակի անալոգիայով: Եվ նույնիսկ համապատասխան նկար են տեղադրել մեր հեռագրային ալիքի ավատարի վրա։

4. Առաջադրանքի ընտրություն: Ինչպես արդեն ասացի, դուք պետք է ունենաք մրցակցային առավելություն, հեքըթոնի առաջադրանքը ընտրվում է դրա հիման վրա: Ելնելով դրանից՝ նայելով առաջադրանքների ցանկը և գնահատելով դրանց բարդությունը՝ մենք կանգ առանք երկու խնդիրների վրա՝ DPiIR-ի նորարարական ձեռնարկությունների կատալոգ և EFKO-ի չաթ-բոտ: Առաջադրանքը DPIiR-ից ընտրվել է backender-ի կողմից, առաջադրանքը EFKO-ից ընտրվել է իմ կողմից, քանի որ ուներ node.js-ում և DialogFlow-ում չաթ-բոտեր գրելու փորձ: EFKO-ի առաջադրանքը ներառում էր նաև ML, ես ունեմ որոշ, ոչ այնքան մեծ փորձ ՓԼ-ում: Եվ ըստ խնդրի պայմանների, ինձ թվում էր, որ այն դժվար թե լուծվի ML գործիքների միջոցով։ Այս զգացողությունն ավելի ուժեղացավ, երբ ես գնացի Urban Tech Challenge հանդիպմանը, որտեղ կազմակերպիչներն ինձ ցույց տվեցին EFKO-ի տվյալների բազա, որտեղ կար արտադրանքի դասավորության մոտ 100 լուսանկար (տարբեր տեսանկյուններից արված) և մոտ 20 դասակարգման սխալներ: Եվ, միևնույն ժամանակ, առաջադրանքը պատվիրողները ցանկանում էին հասնել դասակարգման հաջողության 90 տոկոսի։ Արդյունքում ես պատրաստեցի լուծման ներկայացում առանց ML-ի, backender-ը պատրաստեց պրեզենտացիա՝ հիմնված կատալոգի վրա, և միասին, պրեզենտացիաները վերջնական տեսքի բերելուց հետո, ուղարկեցինք Urban Tech Challenge-ին։ Արդեն այս փուլում բացահայտվել է յուրաքանչյուր մասնակցի մոտիվացիայի և ներդրման մակարդակը։ Մեր դիզայները չմասնակցեց քննարկումներին, ուշ արձագանքեց, նույնիսկ ամենավերջին պահին իր մասին տեղեկություն լրացրեց շնորհանդեսում, ընդհանրապես կասկածներ առաջացան։

Արդյունքում մենք հանձնեցինք առաջադրանքը DPiIR-ից և բոլորովին չէինք տխրել, որ չենք անցել EFKO-ն, քանի որ առաջադրանքը մեզ, մեղմ ասած, տարօրինակ թվաց:

5. Հեքըթոնին նախապատրաստվելը. Երբ վերջապես հայտնի դարձավ, որ մենք որակավորվել ենք հաքաթոնին, սկսեցինք նախապատրաստվել։ Եվ այստեղ ես չեմ ջատագովում, որ սկսենք կոդ գրել հաքաթոնի մեկնարկից մեկ շաբաթ առաջ։ Առնվազն, դուք պետք է պատրաստ ունենաք կաթսա, որի հետ դուք կարող եք անմիջապես սկսել աշխատել, առանց գործիքների կազմաձևման, և առանց բախվելու այնպիսի սխալների, որոնք դուք որոշել եք առաջին անգամ փորձել հաքաթոնում: Ես մի պատմություն գիտեմ անկյունային ինժեներների մասին, ովքեր եկել էին հաքաթոն և 2 օր ծախսել նախագծի կառուցումը, այնպես որ ամեն ինչ պետք է նախապես պատրաստվի: Մենք մտադիր էինք բաշխել պարտականությունները հետևյալ կերպ. backender-ը գրում է թրթուրներ, որոնք զննում են ինտերնետը և տեղադրում հավաքագրված ամբողջ տեղեկատվությունը տվյալների բազայում, մինչդեռ ես գրում եմ API node.js-ում, որը հարցում է անում այս տվյալների բազայում և ուղարկում տվյալները առջևում: Այս կապակցությամբ ես նախապես սերվեր եմ պատրաստել՝ օգտագործելով express.js-ը և պատրաստել եմ front-end react-ում։ Ես չեմ օգտագործում CRA, ես միշտ հարմարեցնում եմ վեբ փաթեթը ինձ համար և լավ գիտեմ, թե դա ինչ ռիսկեր կարող է առաջացնել (հիշեք պատմությունը անկյունային մշակողների մասին): Այս պահին ես մեր դիզայներից խնդրեցի ինտերֆեյսի ձևանմուշներ կամ գոնե մոդելներ, որպեսզի պատկերացում ունենայի, թե ինչ կներկայացնեմ: Տեսականորեն նա էլ պետք է իր նախապատրաստական ​​աշխատանքները կատարի ու մեզ հետ համաձայնեցնի, բայց այդպես էլ պատասխան չստացա։ Արդյունքում ես դիզայնը վերցրեցի իմ հին նախագծերից մեկից։ Եվ այն սկսեց ավելի արագ աշխատել, քանի որ այս նախագծի բոլոր ոճերն արդեն գրված էին։ Այստեղից էլ եզրակացություն՝ թիմում միշտ չէ, որ դիզայներ է պետք)))։ Հեքըթոնին եկանք այս զարգացումներով։

6. Աշխատեք հաքաթոնում։ Առաջին անգամ իմ թիմին ուղիղ եթերում տեսա միայն Հաքաթոնի բացմանը Կենտրոնական բաշխման կենտրոնում։ Հանդիպեցինք, քննարկեցինք խնդրի լուծումն ու աշխատանքի փուլերը։ Ու թեև բացումից հետո ավտոբուսով պետք է գնայինք Կարմիր հոկտեմբեր, գնացինք տուն՝ քնելու՝ պայմանավորվելով տեղ հասնել ժամը 9.00-ին։ Ինչո՞ւ։ Կազմակերպիչները, ըստ երևույթին, ցանկանում էին առավելագույն օգուտ քաղել մասնակիցներից, ուստի կազմակերպեցին հենց այդպիսի ժամանակացույց: Բայց, իմ փորձից, դուք կարող եք կոդավորել սովորաբար առանց մեկ գիշեր քնելու: Ինչ վերաբերում է երկրորդին, ես այլևս վստահ չեմ. Հեքըթոնը մարաթոն է, դուք պետք է համարժեք հաշվարկեք և պլանավորեք ձեր ուժերը: Ավելին, նախապատրաստական ​​աշխատանքներ ունեինք։

Ինչպես և ինչու մենք հաղթեցինք Big Data ուղու վրա Urban Tech Challenge հաքաթոնում

Հետևաբար, քնելուց հետո, ժամը 9.00-ին մենք նստած էինք Dewocracy-ի վեցերորդ հարկում։ Հետո մեր դիզայները անսպասելի հայտարարեց, որ նոթբուք չունի, և ինքը աշխատելու է տնից, իսկ մենք հեռախոսով կշփվենք։ Սա վերջին կաթիլն էր: Եվ այսպես, մենք չորսից դարձանք եռյակ, թեև չփոխեցինք թիմի անվանումը։ Կրկին, սա մեզ համար մեծ հարված չէր, ես արդեն ունեի դիզայնը հին նախագծից: Ընդհանուր առմամբ, սկզբում ամեն ինչ բավականին հարթ ու ըստ պլանի էր ընթանում։ Մենք ներբեռնեցինք տվյալների բազա (մենք որոշեցինք օգտագործել neo4j) կազմակերպիչների կողմից նորարարական ընկերությունների տվյալների բազա: Ես սկսեցի տպագրել, հետո վերցրեցի node.js-ը, և հետո ամեն ինչ սկսեց սխալ գործարկվել: Ես նախկինում երբեք չէի աշխատել neo4j-ի հետ, և սկզբում ես փնտրում էի աշխատող դրայվեր այս տվյալների բազայի համար, հետո հասկացա, թե ինչպես գրել հարցում, և հետո զարմացա, երբ հայտնաբերեցի, որ այս տվյալների բազան, երբ հարցնում են, վերադարձնում է իրեր հանգույցի օբյեկտների և դրանց եզրերի զանգվածի ձևը: Նրանք. երբ ես խնդրեցի կազմակերպություն և դրա վերաբերյալ բոլոր տվյալները TIN-ով, մեկ կազմակերպության օբյեկտի փոխարեն, ինձ վերադարձրեցին այս կազմակերպության վերաբերյալ տվյալներ պարունակող օբյեկտների մեծ զանգված և նրանց միջև փոխհարաբերությունները: Ես գրեցի քարտեզագիր, որն անցավ ամբողջ զանգվածով և սոսնձեց բոլոր առարկաները՝ ըստ իրենց կազմակերպման, մեկ օբյեկտի մեջ: Բայց ճակատամարտում 8 հազար կազմակերպությունների տվյալների բազա պահանջելիս այն կատարվեց չափազանց դանդաղ՝ մոտ 20-30 վայրկյան։ Ես սկսեցի մտածել օպտիմալացման մասին... Եվ հետո մենք ժամանակին կանգ առանք և անցանք MongoDB-ին, և մեզանից պահանջվեց մոտ 30 րոպե: Ընդհանուր առմամբ, neo4j-ով կորել է մոտ 5 ժամ։

Հիշեք, երբեք մի տանեք տեխնոլոգիան այնպիսի հաքաթոն, որին ծանոթ չեք, կարող են անակնկալներ լինել: Բայց, ընդհանուր առմամբ, բացի այս ձախողումից, ամեն ինչ ընթացավ ըստ պլանի։ Իսկ արդեն դեկտեմբերի 9-ի առավոտյան ունեինք լիարժեք աշխատանքային հայտ։ Մնացած օրվա համար մենք նախատեսում էինք դրան ավելացնել լրացուցիչ հնարավորություններ: Հետագայում ինձ համար ամեն ինչ համեմատաբար հարթ ընթացավ, բայց բեքդերը մի ամբողջ շարք խնդիրներ ուներ որոնման համակարգերում իր սողնակների արգելման հետ կապված, իրավաբանական անձանց ագրեգատորների սպամում, որոնք հայտնվեցին որոնման արդյունքների առաջին տեղերում խնդրանքով. յուրաքանչյուր կոնկրետ ընկերության համար: Բայց ավելի լավ է, որ նա ինքը պատմի այդ մասին: Առաջին լրացուցիչ հնարավորությունը, որը ես ավելացրեցի, լրիվ անունով որոնումն էր: VKontakte-ի գլխավոր տնօրեն. Դա տեւեց մի քանի ժամ։

Այսպիսով, մեր դիմումի ընկերության էջում հայտնվեց գլխավոր տնօրենի ավատարը, նրա VKontakte էջի հղումը և որոշ այլ տվյալներ: Դա տորթի վրա գեղեցիկ բալ էր, թեև դա մեզ կարող էր հաղթանակ չտալ: Այնուհետև ես ուզում էի մի քանի վերլուծություն վարել: Բայց տարբերակների երկար որոնումից հետո (UI-ի հետ կապված շատ նրբերանգներ կային), ես որոշեցի կազմակերպությունների ամենապարզ ագրեգացումը՝ ըստ տնտեսական գործունեության ծածկագրի: Արդեն երեկոյան, վերջին ժամերին, ես դնում էի նորարարական ապրանքներ ցուցադրելու ձևանմուշ (մեր հավելվածում ենթադրվում է, որ կա Ապրանքներ և ծառայություններ բաժին), չնայած հետին պլանը պատրաստ չէր դրա համար: Միևնույն ժամանակ տվյալների շտեմարանը ցատկոտում էր, սողունները շարունակում էին աշխատել, backender-ը փորձեր արեց NLP-ով նորարար տեքստերը ոչ նորարարականներից տարբերելու համար))): Բայց վերջնական շնորհանդեսի ժամանակն արդեն մոտենում էր։

7. Ներկայացում. Իմ սեփական փորձից կարող եմ ասել, որ դուք պետք է անցնեք պրեզենտացիայի պատրաստմանը դրա ավարտից մոտ 3-4 ժամ առաջ: Հատկապես եթե այն ներառում է տեսանյութ, դրա նկարահանումն ու մոնտաժը բավականին շատ ժամանակ է պահանջում։ Մենք պետք է տեսահոլովակ ունենայինք։ Եվ մենք ունեինք հատուկ անձնավորություն, ով զբաղվում էր այս գործով, ինչպես նաև լուծում էր մի շարք այլ կազմակերպչական հարցեր։ Այս առումով մենք մեզ չշեղեցինք կոդավորումից մինչև ամենավերջին պահը։

8. սկիպիդար. Ինձ դուր չեկավ, որ շնորհանդեսներն ու եզրափակիչներն անցկացվեցին առանձին աշխատանքային օր (երկուշաբթի): Այստեղ, ամենայն հավանականությամբ, շարունակվել է կազմակերպիչների՝ մասնակիցներից առավելագույնը քամելու քաղաքականությունը։ Ես չէի նախատեսում աշխատանքից արձակուրդ վերցնել, միայն ուզում էի եզրափակիչ դուրս գալ, թեև թիմիս մնացած անդամները հանգստյան օր վերցրեցին: Այնուամենայնիվ, հեքըթոնում զգացմունքային ընկղմումն արդեն այնքան բարձր էր, որ առավոտյան ժամը 8-ին ես իմ թիմի չաթում (աշխատանքային թիմ, ոչ թե հեքըթոնի թիմ) գրեցի, որ օրն անցնում եմ իմ հաշվին և գնացի կենտրոն։ գրասենյակ խաղադաշտերի համար. Պարզվեց, որ մեր խնդիրը շատ մաքուր տվյալների գիտնականներ ունի, և դա մեծապես ազդեց խնդրի լուծման մոտեցման վրա: Շատերն ունեին լավ DS, բայց ոչ ոք չուներ աշխատանքային նախատիպ, շատերը չէին կարողանում շրջանցել իրենց սողացողների արգելքները որոնման համակարգերում: Մենք միակ թիմն էինք, որն ունի աշխատանքային նախատիպ։ Եվ մենք գիտեինք, թե ինչպես լուծել խնդիրը։ Ի վերջո, մենք հաղթեցինք վազքուղում, թեև մեր բախտը բերեց, որ ընտրեցինք ամենաքիչ մրցակցային առաջադրանքը։ Նայելով այլ մրցուղիների խաղադաշտերին՝ մենք հասկացանք, որ այնտեղ ոչ մի հնարավորություն չենք ունենա: Նաև ուզում եմ ասել, որ մեր բախտը բերել է ժյուրիի հետ, նրանք մանրակրկիտ ստուգել են կոդը։ Եվ, դատելով ակնարկներից, դա տեղի չի ունեցել ոչ բոլոր հետքերում:

9. Վերջնական. Այն բանից հետո, երբ մեզ մի քանի անգամ կանչեցին ժյուրիի մոտ՝ օրենսգրքի վերանայման, մենք, մտածելով, որ վերջապես լուծել ենք բոլոր հարցերը, գնացինք լանչելու Burger King-ում։ Այնտեղ կազմակերպիչները նորից զանգահարեցին մեզ, մենք ստիպված էինք արագ հավաքել մեր պատվերները և հետ գնալ։

Կազմակերպիչը մեզ ցույց տվեց, թե որ սենյակն է պետք մտնել, և ներս մտնելուն պես մենք հայտնվեցինք հաղթող թիմերի հրապարակային ելույթի ժամանակ: Այն տղաները, ովքեր պետք է բեմ դուրս գան, լավ լիցքավորված էին, բոլորը դուրս եկան իսկական շոումենների նման։

Եվ ես պետք է խոստովանեմ, որ եզրափակչում, այլ ուղու ուժեղագույն թիմերի ֆոնին, մենք գունատ տեսք ունեինք, կառավարության հաճախորդների անվանակարգում հաղթանակը միանգամայն արժանի կերպով բաժին հասավ անշարժ գույքի տեխնոլոգիական ուղու թիմին: Կարծում եմ, որ հիմնական գործոնները, որոնք նպաստեցին մեր հաղթանակին ուղու վրա, հետևյալն էին. սոցիալական ցանցերում) և մեր backender-ի NLP հմտությունները, որոնք նույնպես մեծապես հետաքրքրեցին ժյուրիին:

Ինչպես և ինչու մենք հաղթեցինք Big Data ուղու վրա Urban Tech Challenge հաքաթոնում

Եվ վերջում ավանդական շնորհակալություն բոլոր նրանց, ովքեր աջակցեցին մեզ, մեր թրեքի ժյուրիին՝ Եվգենի Եվգրաֆիևին (խնդիրի հեղինակը, որը մենք լուծեցինք հաքաթոնում) և, իհարկե, հաքաթոնի կազմակերպիչներին: Սա թերևս ամենամեծ և ամենաթեժ հաքաթոնն էր, որին երբևէ մասնակցել եմ, ես կարող եմ միայն մաղթել, որ տղաները ապագայում պահպանեն նման բարձր մակարդակ:

Source: www.habr.com

Добавить комментарий