Urban Tech Challenge hakatonunda Big Data trekini necə və niyə qazandıq

Mənim adım Dmitridir. Mən komandamızın Big Data trekində Urban Tech Challenge hakatonunun finalına necə çıxması barədə danışmaq istəyirəm. Dərhal deyəcəyəm ki, bu, iştirak etdiyim ilk hakaton deyil, mükafat aldığım ilk oyun deyil. Bununla əlaqədar olaraq, hekayəmdə bütövlükdə hackathon sənayesi ilə bağlı bəzi ümumi müşahidələr və nəticələr səsləndirmək istəyirəm və Urban Tech Challenge (üçün) başa çatdıqdan dərhal sonra onlayn olaraq ortaya çıxan mənfi rəylərdən fərqli olaraq öz fikrimi bildirmək istəyirəm. misal bu).

Beləliklə, əvvəlcə bəzi ümumi müşahidələr.

1. Təəccüblüdür ki, çox az adam sadəlövhcəsinə hakatonun ən yaxşı kodlayıcıların qalib gəldiyi bir növ idman yarışması olduğunu düşünür. Bu səhvdir. Hackathon təşkilatçılarının özləri nə istədiklərini bilmədikləri halları nəzərə almıram (mən də bunu görmüşəm). Amma bir qayda olaraq, hakaton təşkil edən şirkət öz məqsədlərini güdür. Onların siyahısı fərqli ola bilər: bəzi problemlərin texniki həlli, yeni ideyalar və insanlar axtarışı və s. Bu məqsədlər tez-tez tədbirin formatını, onun vaxtını, onlayn/oflayn, tapşırıqların necə formalaşdırılacağını (və onların ümumiyyətlə tərtib edilib-edilməyəcəyini), hakatonda kodun nəzərdən keçirilməsinin olub-olmamasını və s. Həm komandalar, həm də onların etdikləri bu baxımdan qiymətləndirilir. Və şirkətin ehtiyac duyduğu nöqtəni ən yaxşı vuran komandalar qalib gəlir və bir çoxları bu nöqtəyə tamamilə şüursuz və təsadüfən gəlir, həqiqətən də idman yarışında iştirak etdiklərini düşünürlər. Müşahidələrim göstərir ki, iştirakçıları həvəsləndirmək üçün təşkilatçılar ən azı idman mühitinin görünüşü və bərabər şərait yaratmalıdırlar, əks halda yuxarıdakı icmalda olduğu kimi mənfilik dalğası alacaqlar. Amma biz yayınırıq.

2. Beləliklə, aşağıdakı nəticə çıxır. Təşkilatçılar hakatona öz işləri ilə gələn iştirakçıları maraqlandırır, bəzən hətta bunun üçün xüsusi olaraq onlayn yazışma mərhələsi də təşkil edirlər. Bu, daha güclü çıxış həllərinə imkan verir. “Öz işi” anlayışı çox nisbidir; istənilən təcrübəli tərtibatçı ilk öhdəliyində köhnə layihələrindən minlərlə kod sətirini toplaya bilər. Və bu əvvəlcədən hazırlanmış bir inkişaf olacaqmı? Ancaq hər halda, məşhur bir mem şəklində ifadə etdiyim qayda tətbiq olunur:

Urban Tech Challenge hakatonunda Big Data trekini necə və niyə qazandıq

Qalib gəlmək üçün bir şeyə, bir növ rəqabət üstünlüyünə sahib olmalısınız: keçmişdə etdiyiniz oxşar layihə, müəyyən bir mövzuda bilik və təcrübə və ya hakaton başlamazdan əvvəl görülən hazır iş. Bəli, idman deyil. Bəli, bu, sərf olunan səylərə dəyməz (burada hər kəs özü qərar verir ki, 3 minlik mükafat üçün gecə 100 həftə kodlaşdırmağa dəyərmi, bütün komanda arasında bölünür və hətta onu almamaq riski ilə). Ancaq çox vaxt bu, irəliləmək üçün yeganə şansdır.

3. Komanda seçimi. Hackathon çatlarında qeyd etdiyim kimi, bir çoxları bu məsələyə olduqca qeyri-ciddi yanaşır (baxmayaraq ki, bu, hakatonda nəticənizi müəyyən edəcək ən vacib qərardır). Bir çox fəaliyyət sahələrində (həm idmanda, həm də hakatonda) mən görmüşəm ki, güclü insanlar güclülərlə, zəiflərlə zəiflə, ağıllılar ağıllılarla birləşməyə meyllidirlər, yaxşı, ümumiyyətlə, başa düşürsən... Təxminən söhbətlərdə belə olur: daha az güclü proqramçılar dərhal qovulurlar, hakaton üçün dəyərli heç bir bacarığı olmayan insanlar uzun müddət söhbətdə qalırlar və bir komanda seçirlər ki, kaş bunu kimsə götürsə. . Bəzi hakatonlarda komandalara təsadüfi təyinat tətbiq olunur və təşkilatçılar iddia edirlər ki, təsadüfi komandalar mövcud olanlardan heç də pis çıxış etmirlər. Ancaq müşahidələrimə görə, motivasiyalı insanlar, bir qayda olaraq, özləri komanda tapırlar, əgər kimisə təyin etmək lazımdırsa, çox vaxt hakatona gəlmirlər.

Komandanın tərkibinə gəlincə, bu, çox fərdi və tapşırıqdan çox asılıdır. Deyə bilərəm ki, minimum həyat qabiliyyətli komanda tərkibi dizaynerdir - front-end və ya front-end - back-ender. Ancaq mən həmçinin, yalnız front-endlərdən ibarət komandaların qalib gəldiyi, node.js-də sadə back-end əlavə edən və ya React Native-də mobil proqram yaradan halları bilirəm; və ya yalnız sadə plan tərtib edən dəstəkçilərdən. Ümumiyyətlə, hər şey çox fərdi və vəzifədən asılıdır. Hackathon üçün komanda seçmək planım belə idi: Mən komanda toplamaq və ya front-end - back-end - dizayner kimi komandaya qoşulmağı planlaşdırırdım (mən özüm frontendəm). Və olduqca tez bir piton dəstəkçisi və bizə qoşulmaq üçün dəvəti qəbul edən bir dizaynerlə söhbət etməyə başladım. Bir az sonra artıq hakatonda qalib olmaq təcrübəsi olan bir qız, biznes analitiki bizə qoşuldu və bu, onun bizə qoşulması məsələsini həll etdi. Qısa görüşdən sonra fantastik dördlüyə bənzətməklə özümüzü U4 (URBAN 4, urban four) adlandırmaq qərarına gəldik. Hətta telegram kanalımızın avatarına da müvafiq şəkil qoyublar.

4. Tapşırığın seçilməsi. Artıq dediyim kimi, rəqabət üstünlüyünə sahib olmalısınız, hackathon üçün tapşırıq buna əsasən seçilir. Buna əsaslanaraq, baxdı tapşırıq siyahısı və onların mürəkkəbliyini qiymətləndirərək, biz iki məsələ üzərində dayandıq: DPiIR-dən innovativ müəssisələrin kataloqu və EFKO-dan chatbot. DPIiR-dən tapşırığı dəstəkləyici seçdi, EFKO-dan tapşırığı mən seçdim, çünki node.js və DialogFlow-da chatbotlar yazmaq təcrübəsi var idi. EFKO tapşırığı həmçinin ML ilə bağlı idi; ML-də çox da geniş olmayan bir qədər təcrübəm var. Və problemin şərtlərinə görə, mənə elə gəldi ki, ML alətlərindən istifadə etməklə həll etmək mümkün deyil. Urban Tech Challenge görüşünə getdiyim zaman bu hiss daha da gücləndi, burada təşkilatçılar mənə EFKO-da məlumat toplusunu göstərdilər, burada məhsul planlarının təxminən 100 fotoşəkili (müxtəlif bucaqlardan çəkilmiş) və təxminən 20 sinif tərtibat səhvləri var idi. Və eyni zamanda, tapşırığı sifariş edənlər 90% -lik bir təsnifat müvəffəqiyyət dərəcəsinə nail olmaq istədilər. Nəticədə mən ML olmadan həllin təqdimatını hazırladım, backender kataloq əsasında təqdimat hazırladı və birlikdə təqdimatları yekunlaşdırdıqdan sonra onları Urban Tech Challenge-ə göndərdik. Artıq bu mərhələdə hər bir iştirakçının motivasiya səviyyəsi və töhfəsi aşkarlanıb. Dizaynerimiz müzakirələrdə iştirak etmədi, gec cavab verdi, hətta təqdimatda özü haqqında məlumatları da son anda doldurdu, ümumiyyətlə, şübhələr yarandı.

Nəticədə, biz DPiIR-dən tapşırığı verdik və EFKO-dan keçməməyimizdən heç üzülmədik, çünki tapşırıq yumşaq desək, bizə qəribə göründü.

5. Hackathon üçün hazırlıq. Nəhayət ki, hakatona vəsiqə qazandığımız məlum olduqdan sonra hazırlığı hazırlamağa başladıq. Və burada mən hackathon başlamazdan bir həftə əvvəl kod yazmağa başlamağın tərəfdarı deyiləm. Ən azı, alətləri konfiqurasiya etmədən və ilk dəfə hakatonda sınamaq qərarına gəldiyiniz bəzi lib-də səhvlərlə qarşılaşmadan dərhal işə başlaya biləcəyiniz bir qazanınız olmalıdır. Mən hackathon-a gələn və layihənin qurulmasını qurmaq üçün 2 gün sərf edən bucaq mühəndisləri haqqında bir hekayə bilirəm, buna görə hər şey əvvəlcədən hazırlanmalıdır. Məsuliyyətləri aşağıdakı kimi bölüşdürmək niyyətindəyik: backender interneti araşdıran və bütün toplanmış məlumatları verilənlər bazasına yerləşdirən taramaçılar yazır, mən isə node.js-də bu verilənlər bazasını sorğulayan və məlumatları ön tərəfə göndərən API yazıram. Bununla əlaqədar mən əvvəlcədən express.js-dən istifadə edərək server hazırladım və reaksiyada front-end hazırladım. Mən CRA-dan istifadə etmirəm, həmişə veb paketini özüm üçün fərdiləşdirirəm və bunun hansı risklərə səbəb ola biləcəyini çox yaxşı bilirəm (bucaqlı tərtibatçılar haqqında hekayəni xatırlayın). Bu nöqtədə, nə tərtib edəcəyim barədə fikir sahibi olmaq üçün dizaynerimizdən interfeys şablonları və ya heç olmasa maketlər istədim. Nəzəri olaraq o da öz hazırlıqlarını görməli və bizimlə koordinasiya etməlidir, amma heç vaxt cavab almadım. Nəticədə dizaynı köhnə layihələrimdən birindən götürdüm. Və daha da sürətlə işləməyə başladı, çünki bu layihə üçün bütün üslublar artıq yazılmışdı. Nəticə budur: bir komandada dizayner həmişə lazım deyil))). Biz hakatona bu inkişaflarla gəldik.

6. Hackathonda işləmək. İlk dəfə komandamı canlı olaraq yalnız Mərkəzi Paylama Mərkəzində hakatonun açılışında gördüm. Görüşdük, problemin həlli və üzərində işin mərhələlərini müzakirə etdik. Açılışdan sonra Qırmızı Oktyabr ayına avtobusla getməli olsaq da, saat 9.00-a çatmağa razılaşaraq evə yatmağa getdik. Niyə? Təşkilatçılar, görünür, iştirakçılardan maksimum yararlanmaq istəyirdilər, ona görə də məhz belə bir cədvəl təşkil etdilər. Ancaq təcrübəmə görə, bir gecə yatmadan normal şəkildə kodlaya bilərsiniz. İkincisinə gəlincə, mən artıq əmin deyiləm. Hakaton bir marafondur, gücünüzü adekvat hesablamalı və planlaşdırmalısınız. Üstəlik, hazırlıqlarımız da var idi.

Urban Tech Challenge hakatonunda Big Data trekini necə və niyə qazandıq

Ona görə də yatdıqdan sonra saat 9.00-da Devocracy-nin altıncı mərtəbəsində oturmuşduq. Sonra dizaynerimiz gözlənilmədən noutbukunun olmadığını və evdən işləyəcəyini, telefonla əlaqə saxlayacağımızı bildirdi. Bu bardağı taşıran son damla oldu. Beləliklə, komandanın adını dəyişməsək də, dörddən üçə keçdik. Yenə deyirəm, bu bizim üçün böyük zərbə deyildi, məndə köhnə layihənin dizaynı var idi. Ümumiyyətlə, əvvəlcə hər şey olduqca rəvan və plana uyğun getdi. Təşkilatçılardan innovativ şirkətlərin məlumat dəstini verilənlər bazasına yüklədik (neo4j-dən istifadə etmək qərarına gəldik). Mən çap etməyə başladım, sonra node.js-i götürdüm və sonra işlər səhv etməyə başladı. Mən əvvəllər neo4j ilə heç vaxt işləməmişdim və əvvəlcə bu verilənlər bazası üçün işləyən sürücü axtarırdım, sonra sorğunun necə yazılacağını anladım və sonra bu verilənlər bazasının sorğulananda obyektləri geri qaytardığını aşkar edəndə təəccübləndim. qovşaq obyektləri və onların kənarları massivinin forması. Bunlar. bir təşkilat və onun haqqında bütün məlumatları VÖEN ilə tələb edəndə bir təşkilat obyekti əvəzinə mənə bu təşkilat və onlar arasındakı əlaqələr haqqında məlumatları ehtiva edən uzun bir sıra obyektlər qaytarıldı. Mən bütün massivdən keçən və bütün obyektləri təşkilinə görə bir obyektə yapışdıran bir xəritəçi yazdım. Ancaq döyüşdə, 8 min təşkilatın məlumat bazası tələb olunduqda, o, olduqca yavaş, təxminən 20 - 30 saniyə ərzində icra edildi. Optimallaşdırma haqqında düşünməyə başladım... Və sonra biz vaxtında dayandıq və MongoDB-yə keçdik və bu, təxminən 30 dəqiqə çəkdi. Ümumilikdə, neo4j-də təxminən 5 saat itirildi.

Unutmayın, heç vaxt texnologiya ilə tanış olmadığınız hakatona getməyin, sürprizlər ola bilər. Amma ümumilikdə bu uğursuzluqdan başqa hər şey plan üzrə getdi. Artıq dekabrın 9-da səhər saatlarında tam işləyən bir ərizəmiz var idi. Günün qalan hissəsində ona əlavə funksiyalar əlavə etməyi planlaşdırdıq. Gələcəkdə hər şey mənim üçün nisbətən rəvan getdi, lakin dəstəkləyicinin axtarış sistemlərində, sorğu zamanı axtarış nəticələrinin ilk yerlərində gələn hüquqi şəxslərin aqreqatorlarının spamında taramaçılarının qadağan edilməsi ilə bağlı bir çox problem var idi. hər bir xüsusi şirkət üçün. Amma bu barədə onun özü danışsa daha yaxşı olar. Əlavə etdiyim ilk əlavə xüsusiyyət tam adla axtarış oldu. VKontakte-nin baş direktoru. Bir neçə saat çəkdi.

Beləliklə, tətbiqimizdəki şirkətin səhifəsində baş direktorun avatarı, VKontakte səhifəsinə keçid və bir sıra digər məlumatlar göründü. Tortun üzərində gözəl albalı oldu, baxmayaraq ki, o, bizə qələbə qazandırmadı. Sonra bəzi analitiklər aparmaq istədim. Ancaq uzun müddət axtarış etdikdən sonra (UI ilə çoxlu nüanslar var idi), mən iqtisadi fəaliyyət kodu ilə təşkilatların ən sadə birləşməsinə qərar verdim. Artıq axşam, son saatlarda innovativ məhsulların nümayişi üçün şablon hazırladım (bizim tətbiqimizdə Məhsullar və Xidmətlər bölməsi olmalıdır), baxmayaraq ki, arxa plan buna hazır deyildi. Eyni zamanda, verilənlər bazası sıçrayış və həddi ilə şişirdi, sürünənlər işləməyə davam etdi, backender innovativ mətnləri qeyri-innovativlərdən ayırmaq üçün NLP ilə təcrübə etdi))). Ancaq yekun təqdimat vaxtı artıq yaxınlaşırdı.

7. Təqdimat. Öz təcrübəmdən deyə bilərəm ki, təqdimat hazırlamağa vaxtının çatmasına təxminən 3-4 saat qalmış keçməlisiniz. Xüsusilə videonu əhatə edirsə, onun çəkilişi və montajı kifayət qədər çox vaxt aparır. Videomuz olmalı idi. Bizim bununla məşğul olan, həmçinin bir sıra digər təşkilati məsələləri həll edən xüsusi bir insanımız var idi. Bu baxımdan biz son ana qədər özümüzü kodlaşdırmadan yayındırmadıq.

8. Pitch. Təqdimatların və finalların ayrı bir iş günündə (bazar ertəsi) keçirilməsi xoşuma gəlmədi. Burada çox güman ki, təşkilatçıların iştirakçıları maksimum sıxışdırmaq siyasəti davam etdi. İşdən məzuniyyət almağı planlaşdırmırdım, yalnız finala çıxmaq istəyirdim, baxmayaraq ki, komandamın qalan hissəsi istirahət günüdür. Halbuki, hakatona emosional batmaq onsuz da o qədər yüksək idi ki, səhər saat 8-də komandamın (hackathon komandası deyil, iş komandasının) çatında günü öz hesabıma keçirdiyimi yazdım və mərkəzə getdim. meydançalar üçün ofis. Problemimizdə çoxlu təmiz məlumat alimləri olduğu ortaya çıxdı və bu, problemin həllinə yanaşmaya çox təsir etdi. Çoxlarının yaxşı DS-si var idi, amma heç kimin işləyən prototipi yox idi, bir çoxları axtarış motorlarında taramaçılarının qadağalarından keçə bilmədi. İşləyən prototipi olan yeganə komanda biz idik. Və problemi necə həll edəcəyimizi bilirdik. Ən az rəqabətli tapşırığı seçdiyimiz üçün çox şanslı olsaq da, yekunda trekdə qalib gəldik. Digər treklərdəki meydançalara baxanda anladıq ki, orada heç bir şansımız olmayacaq. Onu da deyim ki, münsiflər heyəti bizim üçün çox şanslı idi, kodu diqqətlə yoxladılar. Və rəylərə görə, bu, bütün treklərdə baş vermədi.

9. Final. Kod yoxlaması üçün bir neçə dəfə münsiflər heyətinə çağırıldıqdan sonra, nəhayət, bütün məsələləri həll etdiyimizi düşünərək, Burger King-də nahar etməyə getdik. Orada təşkilatçılar bizə yenidən zəng etdilər, biz tez sifarişlərimizi yığıb geri qayıtmalı olduq.

Təşkilatçı bizə hansı otağa girməli olduğumuzu göstərdi və içəri girəndə özümüzü qalib komandalar üçün natiqlik məşqində gördük. Səhnədə çıxış etməli olan uşaqlar yaxşı ittiham olundular, hamı əsl şoumen kimi çıxdı.

Etiraf etməliyəm ki, finalda digər treklərin ən güclü komandaları fonunda biz solğun görünürdük; dövlət müştəri nominasiyasında qələbə daşınmaz əmlak texnologiya treki komandasına layiqincə çatdı. Düşünürəm ki, trasda qələbəmizə kömək edən əsas amillər bunlar idi: hazır blankın olması, bunun sayəsində tez bir prototip hazırlaya bildik, prototipdə "vurğulanan məqamların" olması (CEO-ları axtarın). sosial şəbəkələrdə) və dəstəkçimizin NLP bacarıqları münsiflər heyətini də çox maraqlandırdı.

Urban Tech Challenge hakatonunda Big Data trekini necə və niyə qazandıq

Sonda bizi dəstəkləyən hər kəsə, trekimizin münsiflər heyətinə, Evgeni Evqrafiyevə (hackathonda həll etdiyimiz problemin müəllifi) və əlbəttə ki, hakatonun təşkilatçılarına ənənəvi təşəkkürlər. Bu, bəlkə də indiyə qədər iştirak etdiyim ən böyük və ən gözəl hakathon idi, mən ancaq uşaqlara gələcəkdə belə yüksək standartı qorumağı arzu edə bilərəm!

Mənbə: www.habr.com

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