Како и зашто смо освојили трку Биг Дата на хакатону Урбан Тецх Цхалленге

Моје име је Дмитриј. И желим да причам о томе како је наш тим стигао до финала Урбан Тецх Цхалленге хакатона на стази Биг Дата. Одмах ћу рећи да ово није први хакатон на коме сам учествовао, а ни први на коме сам узео награде. С тим у вези, у својој причи желим да изнесем нека општа запажања и закључке у вези са хакатон индустријом у целини, и дам своје гледиште за разлику од негативних критика које су се појавиле на мрежи одмах након завршетка Урбан Тецх Цхалленге-а (за пример ово).

Дакле, прво нека општа запажања.

1. Изненађујуће је да доста људи наивно мисли да је хакатон нека врста спортског такмичења на коме побеђују најбољи кодери. Ово није у реду. Не разматрам случајеве када сами организатори хакатона не знају шта желе (и то сам видео). Али, по правилу, компанија која организује хакатон следи сопствене циљеве. Њихова листа може бити другачија: то може бити техничко решење неких проблема, потрага за новим идејама и људима, итд. Ови циљеви често одређују формат догађаја, његов тајминг, онлајн/офлајн, како ће задаци бити формулисани (и да ли ће уопште бити формулисани), да ли ће бити прегледа кода на хакатону итд. Из ове тачке гледишта процењују се и тимови и оно што су урадили. И побеђују они тимови који најбоље дођу до тачке која је потребна компанији, а многи до тога дођу потпуно несвесно и случајно, мислећи да заиста учествују у спортском такмичењу. Моја запажања показују да би организатори, да би мотивисали учеснике, требало да створе бар привид спортског амбијента и једнаких услова, иначе ће добити талас негативности, као у горњој рецензији. Али ми скрећемо пажњу.

2. Отуда и следећи закључак. Организатори су заинтересовани да учесници на хакатон дођу са својим радом, понекад чак и посебно организују онлајн дописну фазу за ту сврху. Ово омогућава јача излазна решења. Концепт „сопственог рада“ је веома релативан, сваки искусни програмер може да акумулира хиљаде линија кода из својих старих пројеката у свом првом урезивању. И да ли ће ово бити унапред припремљен развој догађаја? Али у сваком случају важи правило које сам изразио у облику познатог мема:

Како и зашто смо освојили трку Биг Дата на хакатону Урбан Тецх Цхалленге

Да бисте победили, морате имати нешто, неку врсту конкурентске предности: сличан пројекат који сте радили у прошлости, знање и искуство у одређеној теми, или готов рад урађен пре почетка хакатона. Да, није спортски. Да, ово можда није вредно уложеног труда (овде свако одлучује за себе да ли је вредно кодирања 3 недеље ноћу за награду од 100 хиљада, подељену на цео тим, па чак и уз ризик да је не добије). Али, често је ово једина шанса да се напредује.

3. Избор тима. Као што сам приметио у хакатон четовима, многи овом питању приступају прилично неозбиљно (иако је ово најважнија одлука која ће одредити ваш резултат на хакатону). У многим областима активности (и у спорту и на хакатонима) видео сам да јаки људи теже да се уједине са јакима, слаби са слабима, паметни са паметним, па, генерално, схватате... Отприлике овако се дешава у четовима: мање јаки програмери одмах бивају ухваћени, људи који немају вештине вредне за хакатон дуго висе у ћаскању и бирају тим по принципу да би га само неко преузео . На неким хакатонима се практикује насумично додељивање тимовима, а организатори тврде да насумични тимови не раде ништа лошије од постојећих. Али, према мојим запажањима, мотивисани људи, по правилу, сами пронађу тим, ако неко мора да буде додељен, онда, често, многи од њих не дођу на хакатон;

Што се тиче састава тима, ово је веома индивидуално и веома зависи од задатка. Могао бих да кажем да је минимално одржив састав тима дизајнер - фронт-енд или фронт-енд - бацк-ендер. Али такође знам за случајеве када су победили тимови који се састоје само од фронт-ендера, који су додали једноставан бацк-енд у ноде.јс, или направили мобилну апликацију у Реацт Нативе-у; или само од бекендера који су радили једноставан распоред. Генерално, све је веома индивидуално и зависи од задатка. Мој план за одабир тима за хакатон је био следећи: планирао сам да окупим тим или да се придружим тиму као што је фронт-енд - бацк-енд - дизајнер (и сам сам фронт-енд). И прилично брзо сам почео да ћаскам са питхон бацкендер-ом и дизајнером који је прихватио позив да нам се придружи. Нешто касније, придружила нам се и девојка, пословна аналитичарка, која је већ имала искуства са победама на хакатону, и то је решило питање њеног придруживања. После кратког састанка, одлучили смо да се назовемо У4 (УРБАН 4, урбана четворка) по аналогији са фантастичном четворком. И чак су ставили одговарајућу слику на аватар нашег телеграм канала.

4. Избор задатка. Као што сам већ рекао, морате имати конкурентску предност, задатак за хакатон се бира на основу тога. На основу овога, погледавши списак задатака и процењујући њихову сложеност, решили смо два задатка: каталог иновативних предузећа из ДПиИР-а и цхатбот из ЕФКО-а. Задатак из ДПИиР-а је изабрао бекендер, задатак из ЕФКО-а изабрао сам ја, јер имао искуство писања цхатботова у ноде.јс и ДиалогФлов. Задатак ЕФКО је такође укључивао МЛ. Имам одређено, не баш велико, искуство у МЛ. А према условима проблема, чинило ми се да је мало вероватно да ће се решити коришћењем МЛ алата. Овај осећај је ојачан када сам отишао на састанак Урбан Тецх Цхалленге, где су ми организатори показали скуп података о ЕФКО, где је било око 100 фотографија изгледа производа (сликаних из различитих углова) и око 20 класа грешака у изгледу. И, истовремено, они који су наручили задатак желели су да постигну стопу успешности класификације од 90%. Као резултат тога, припремио сам презентацију решења без МЛ-а, бекендер је припремио презентацију на основу каталога и заједно смо их, након финализације презентација, послали на Урбан Тецх Цхалленге. Већ у овој фази откривен је ниво мотивације и доприноса сваког учесника. Наш дизајнер није учествовао у дискусијама, касно је одговорио, чак је у последњем тренутку попунио податке о себи у презентацији, генерално, појавиле су се сумње.

Као резултат тога, положили смо задатак из ДПиИР-а и нимало се нисмо узнемирили што нисмо положили ЕФКО, јер нам се задатак, благо речено, учинио чудним.

5. Припрема за хакатон. Када се коначно сазнало да смо се квалификовали за хакатон, почели смо да припремамо припреме. И овде не заговарам да се почне писати код недељу дана пре почетка хакатона. У најмању руку, требало би да имате спреман шаблон, са којим можете одмах да почнете да радите, без потребе да конфигуришете алате и без налета на грешке неке либ-е коју сте одлучили да испробате први пут на хакатону. Знам причу о ангулар инжењерима који су дошли на хакатон и провели 2 дана на постављању пројекта, тако да све треба унапред припремити. Намеравали смо да расподелимо одговорности на следећи начин: бекендер пише претраживаче који претражују Интернет и стављају све прикупљене информације у базу података, док ја пишем АПИ у ноде.јс који поставља упите овој бази података и шаље податке у предњи део. У том смислу, унапред сам припремио сервер користећи екпресс.јс и припремио фронт-енд у реацт-у. Не користим ЦРА, увек прилагођавам веб пакет за себе и врло добро знам какве ризике ово може представљати (сетите се приче о ангулар програмерима). У овом тренутку, затражио сам шаблоне интерфејса или бар макете од нашег дизајнера како бих имао идеју шта ћу изложити. Теоретски, и он би требало да направи своје припреме и да их координира са нама, али никада нисам добио одговор. Као резултат тога, позајмио сам дизајн из једног од мојих старих пројеката. И почело је да функционише још брже, пошто су сви стилови за овај пројекат већ били написани. Отуда закључак: дизајнер није увек потребан у тиму))). Са овим развојем догађаја смо дошли на хакатон.

6. Радите на хакатону. Први пут сам видео свој тим уживо тек на отварању хакатона у Централном дистрибутивном центру. Састали смо се, разговарали о решењу и фазама рада на проблему. И мада смо после отварања морали да идемо аутобусом до Црвеног октобра, отишли ​​смо кући да спавамо, договоривши се да на место стигнемо до 9.00. Зашто? Организатори су очигледно желели да извуку максимум из учесника, па су договорили управо такав распоред. Али, по мом искуству, можете нормално кодирати без спавања једну ноћ. Што се тиче другог, више нисам сигуран. Хакатон је маратон, потребно је да адекватно израчунате и испланирате своју снагу. Штавише, имали смо припреме.

Како и зашто смо освојили трку Биг Дата на хакатону Урбан Тецх Цхалленге

Дакле, после спавања, у 9.00 смо седели на шестом спрату Девократије. Тада је наш дизајнер неочекивано најавио да нема лаптоп и да ће радити од куће, а ми ћемо комуницирати телефоном. Ово је била последња кап. И тако смо са четворке прешли на тројку, иако нисмо мењали име тима. Опет, ово није био велики ударац за нас; Генерално, у почетку је све ишло прилично глатко и по плану. Убацили смо у базу података (одлучили смо да користимо нео4ј) скуп података о иновативним компанијама од организатора. Почео сам да куцам, затим узео ноде.јс, а онда су ствари почеле да кваре. Никада раније нисам радио са нео4ј-ом, и прво сам тражио радни драјвер за ову базу података, онда сам смислио како да напишем упит, а онда сам био изненађен када сам открио да ова база података, када је упитана, враћа ентитете у облик низа чворних објеката и њихових ивица. Оне. када сам затражио организацију и све податке о њој преко ТИН-а, уместо једног објекта организације, враћен ми је дугачак низ објеката који садрже податке о овој организацији и односима између њих. Написао сам мапер који је прошао кроз цео низ и залепио све објекте према њиховој организацији у један објекат. Али у борби, када је тражена база података од 8 хиљада организација, то је извршено изузетно споро, око 20 - 30 секунди. Почео сам да размишљам о оптимизацији... А онда смо стали на време и прешли на МонгоДБ, и требало нам је око 30 минута. Укупно је изгубљено око 4 сати на нео5ј.

Запамтите, никада не носите технологију на хакатон са којим нисте упознати, може бити изненађења. Али, генерално, осим овог неуспеха, све је ишло по плану. И већ ујутру 9. децембра имали смо потпуно радну апликацију. За остатак дана планирали смо да му додамо додатне функције. Убудуће ми је све ишло релативно глатко, али бекендер је имао гомилу проблема са забраном својих претраживача у претраживачима, у нежељеној поруци агрегатора правних лица, који су долазили на прва места резултата претраге када су тражили за сваку конкретну компанију. Али боље је да он сам исприча о томе. Прва додатна функција коју сам додао била је претрага по пуном имену. генерални директор ВКонтакте. Требало је неколико сати.

Дакле, на страници компаније у нашој апликацији појавио се аватар генералног директора, веза до његове странице ВКонтакте и неки други подаци. Била је то лепа трешња на торти, иако нам можда није донела победу. Онда сам желео да извршим неку аналитику. Али након дугог тражења опција (било је много нијанси са корисничким интерфејсом), одлучио сам се на најједноставније агрегирање организација према коду економске активности. Већ увече, последњих сати, постављао сам шаблон за приказ иновативних производа (у нашој апликацији би требало да постоји одељак Производи и услуге), иако бацкенд није био спреман за то. У исто време, база података је набрекнула, пузачи су наставили да раде, бекендер је експериментисао са НЛП-ом да разликује иновативне текстове од неиновативних))). Али време за завршну презентацију се већ приближавало.

7. Презентација. Из сопственог искуства могу рећи да би требало да пређете на припрему презентације око 3 до 4 сата пре истека. Нарочито ако укључује видео, његово снимање и монтажа одузима доста времена. Требало је да имамо видео. И имали смо посебну особу која се овим бавила, а такође је решавала низ других организационих питања. С тим у вези, нисмо се одвраћали од кодирања до последњег тренутка.

8. Питцх. Није ми се допало што се презентације и финале одржавају у посебном радном дану (понедељак). Овде се, највероватније, наставила политика организатора да из учесника извуку максимум. Нисам планирао да се одмарам са посла, желео сам само да дођем до финала, иако је остатак тима узео викенд. Међутим, емоционално уживљавање у хакатон је већ било толико да сам у 8 ујутро написао у чет мог тима (радног тима, а не хакатон тима) да узимам дан о свом трошку и отишао у централни канцеларија за терене. Испоставило се да наш проблем има много научника чистих података, а то је у великој мери утицало на приступ решавању проблема. Многи су имали добар ДС, али нико није имао прототип који ради, многи нису могли да заобиђу забране својих цравлера у претраживачима. Били смо једини тим са прототипом који ради. И знали смо како да решимо проблем. На крају смо победили на стази, иако смо имали велику срећу што смо изабрали најмање такмичарски задатак. Гледајући терене на другим стазама, схватили смо да ту нећемо имати шансе. Такође желим да кажем да смо имали велику срећу са жиријем, пажљиво су проверили шифру. И, судећи по рецензијама, то се није догодило на свим стазама.

9. Финал. Након што смо неколико пута позвани у жири на преглед кода, ми смо, мислећи да смо коначно решили сва питања, отишли ​​на ручак у Бургер Кинг. Тамо су нас организатори поново позвали, морали смо брзо да спакујемо поруџбине и да се вратимо назад.

Организатор нам је показао у коју просторију треба да уђемо, а по уласку смо се нашли на говорном тренингу за победничке екипе. Момци који су требали да наступају на сцени били су добро напуњени, сви су изашли као прави шоумени.

И морам признати да смо у финалу, на позадини најјачих тимова са других стаза, изгледали бледо, победа у номинацији државног купца сасвим је заслужено припала тиму из области технологије некретнина. Мислим да су кључни фактори који су допринели нашој победи на стази били: доступност готовог бланка, због чега смо били у могућности да брзо направимо прототип, присуство „хигхлигхтс“ у прототипу (потрага за директорима на друштвеним мрежама) и НЛП вештине нашег бекендера, што је такође веома заинтересовало жири.

Како и зашто смо освојили трку Биг Дата на хакатону Урбан Тецх Цхалленге

И на крају, традиционално хвала свима који су нас подржали, жирију наше стазе Евгенију Евграфјеву (аутору проблема који смо решили на хакатону) и наравно организаторима хакатона. Ово је био можда највећи и најсјајнији хакатон на којем сам икада учествовао, могу само да пожелим момцима да задрже тако висок стандард и убудуће!

Извор: ввв.хабр.цом

Додај коментар