Revoluție digitală - cum s-a întâmplat

Acesta nu este primul hackathon pe care îl câștig, nici primul despre care îl câștig scris, iar aceasta nu este prima postare de pe Habré dedicată „Digital Breakthrough”. Dar nu m-am putut abține să nu scriu. Consider experiența mea suficient de unică pentru a fi împărtășită. Probabil că sunt singura persoană de la acest hackathon care a câștigat etapa regională și finala ca parte a diferitelor echipe. Vrei să știi cum s-a întâmplat asta? Bun venit la pisica.

Etapa regională (Moscova, 27 - 28 iulie 2019).

Prima dată am văzut o reclamă pentru „Digital Breakthrough” undeva în martie-aprilie a acestui an. Desigur, nu puteam să renunț la un hackathon atât de mare și m-am înregistrat pe site. Acolo am făcut cunoștință cu condițiile și programul competiției. S-a dovedit că, pentru a ajunge la hackathon, trebuia să treci un test online, care a început pe 16 mai. Și, poate, aș fi uitat convenabil de asta, deoarece nu am primit o scrisoare care să-mi amintească despre începutul testării. Și, trebuie să spun, în viitor TOATE SCRISOARELE care mi-au venit de la CPU au ajuns în mod constant în folderul de spam. Chiar dacă am apăsat de fiecare dată pe butonul „nu este inacceptabil”. Nu știu cum au reușit să obțină un astfel de rezultat; nu mi-a ieșit cu e-mailul pe MailGun. Și băieții par să nu știe deloc despre existența unor servicii precum isnotspam.com. Dar divagam.

Mi s-a reamintit despre începutul testării la una dintre întâlniri club de startup, acolo am discutat și despre formarea echipei. După ce am deschis lista de teste, m-am așezat mai întâi la testul Javascript. În general, sarcinile au fost mai mult sau mai puțin adecvate (cum ar fi rezultatul dacă adăugați 1 + '1' în consolă). Dar din experiența mea, aș folosi astfel de teste atunci când recrutez pentru un job sau o echipă cu rezerve foarte mari. Cert este că în munca reală, un programator întâlnește rar astfel de lucruri, cu capacitatea sa de a depana rapid codul - aceste cunoștințe nu se corelează în niciun fel și te poți antrena pentru astfel de lucruri pentru interviuri destul de ușor (știu de la mine). În general, am dat clic pe test destul de repede, în unele cazuri m-am verificat în consolă. La testul python, sarcinile au fost aproximativ de același tip, m-am testat și în consolă și am fost surprins să obțin mai multe puncte decât în ​​JS, deși nu am programat niciodată profesional în Python. Mai târziu, în conversațiile cu participanții, am auzit povești despre cum programatorii puternici au obținut scoruri scăzute la teste, despre cum unii oameni au primit scrisori în care se spunea că nu au trecut de procesul de selecție pentru CPU și apoi au fost invitați oricum la el. Este clar că, cel mai probabil, creatorii acestor teste nu au auzit despre nimic teoria testului, nici despre fiabilitatea și validitatea lor, nici despre modul de testare a acestora, iar ideea cu teste ar fi fost un eșec de la bun început, chiar dacă nu am ținut cont de scopul principal al hackatonului. Și scopul principal al hack-ului, așa cum am aflat mai târziu, a fost să stabilească un record Guinness, iar testele l-au contrazis.

La un moment dat, după ce au trecut testele, m-au sunat, m-au întrebat dacă voi participa, mi-au clarificat detaliile și mi-au spus cum să intru în chat pentru selectarea unei echipe. Curând, am intrat pe chat și am scris pe scurt despre mine. În chat se petrecea gunoi complet; se părea că organizatorii făceau reclamă multor persoane aleatorii care nu aveau nimic de-a face cu IT. Numeroși manageri de produs „la nivelul lui Steve Jobs” (o expresie reală din depunerea unui participant) au postat povești despre ei înșiși, iar dezvoltatorii normali nu erau nici măcar vizibili. Dar am avut noroc și m-am alăturat curând la trei programatori JS experimentați. Ne-am cunoscut deja la hackathon, apoi am adăugat o fată în echipă pentru inspirație și rezolvarea problemelor organizaționale. Nu-mi amintesc de ce, dar am luat subiectul „Cybersecurity Training” și l-am inclus în piesa „Science and Education 2”. Pentru prima dată m-am trezit într-o echipă de 4 programatori puternici și pentru prima dată am simțit cât de ușor este să câștig într-o astfel de compoziție. Am venit nepregătiți și ne-am certat până la prânz și nu am putut decide ce vom face: o aplicație mobilă sau una web. În orice altă situație aș fi crezut că este un eșec. Cel mai important lucru pentru noi a fost să înțelegem cum vom fi mai buni decât concurenții noștri, pentru că erau o mulțime de echipe în jur care făceau teste, jocuri de securitate cibernetică și altele asemenea. După ce ne-am uitat la asta și am căutat pe Google programe și aplicații de antrenament, am decis că principalul nostru factor de diferențiere ar fi exercițiile de incendiu. Am selectat o serie de funcții pe care ni s-au părut interesante de implementat (înregistrare cu verificarea e-mailului și a parolei împotriva bazelor de date de hackeri, trimiterea de e-mailuri de tip phishing (sub formă de scrisori de la bănci cunoscute), training de inginerie socială în chat). După ce ne-am hotărât ce facem și am înțeles cum ne putem evidenția, am scris rapid o aplicație web cu drepturi depline și am jucat rolul neobișnuit de dezvoltator backend. Astfel, ne-am câștigat cu încredere pista și, ca parte a altor trei echipe, ne-am calificat în finala de la Kazan. Mai târziu, la Kazan, am aflat că selecția pentru finală a fost o ficțiune; am întâlnit acolo multe chipuri cunoscute de la echipele care nu au trecut de selecție. Am fost chiar intervievați de jurnalişti de la Canalul 1. Cu toate acestea, în raportul de la acesta, aplicația noastră a fost afișată doar pentru 1 secundă.

Revoluție digitală - cum s-a întâmplat
Echipa înzăpezită, unde am câștigat etapa regională

Finală (Kazan, 27 – 29 septembrie 2019)

Dar apoi au început eșecurile. Toți programatorii din echipa Snowed în aproximativ o lună, unul după altul, au raportat că nu vor putea merge la Kazan pentru finală. Și m-am gândit să găsesc o nouă echipă. Mai întâi, am făcut un apel în chat-ul general al Rusiei Hack Team și, deși acolo am primit destul de multe răspunsuri și invitații de a mă alătura echipelor, niciuna nu mi-a atras atenția. Au fost echipe dezechilibrate, cum ar fi produs, dezvoltator mobil, front-end, care aminteau de o lebădă, raci și știucă dintr-o fabulă. Au fost și echipe care nu erau potrivite pentru mine din punct de vedere tehnologic (de exemplu, cu dezvoltarea unei aplicații mobile în Flutter). În cele din urmă, într-un chat pe care l-am considerat neplăcut (același VKontakte unde a avut loc selecția echipelor pentru etapa regională), a fost postat o reclamă despre căutarea unui frontender pentru echipă și am scris pur la întâmplare. Băieții s-au dovedit a fi studenți absolvenți la Skoltech și s-au oferit imediat să se întâlnească și să se cunoască. Mi-a plăcut; echipele care preferă să se cunoască imediat la un hackathon mă alarmează de obicei cu lipsa lor de motivație. Ne-am întâlnit la „Rake” de pe Pyatnitskaya. Băieții păreau inteligenți, motivați, încrezători în ei înșiși și în victorie, iar eu am luat decizia chiar acolo. Încă nu știam ce piese și sarcini vor fi în finală, dar am presupus că vom alege ceva legat de Machine Learning. Și sarcina mea va fi să scriu un admin pentru această chestiune, așa că am pregătit un șablon pentru asta în avans bazat pe antd-admin.
Am fost gratuit la Kazan, pe cheltuiala organizatorilor. Trebuie să spun că deja s-au exprimat multe nemulțumiri în chat-uri și bloguri în ceea ce privește achiziția de bilete și, în general, organizarea finalei, nu o să mai povestesc totul.

Ajunși la Kazan Expo, înscriși (am avut puține probleme să obțin ecuson) și luând micul dejun, ne-am dus să alegem o pistă. Am fost doar la marea deschidere, unde au vorbit oficialii, vreo 10 minute.De fapt, aveam deja piesele preferate, dar ne-au interesat detaliile. În pista nr. 18 (Rostelecom), de exemplu, s-a dovedit că este necesar să se dezvolte o aplicație mobilă, deși acest lucru nu era în descrierea succintă. Am făcut alegerea principală între calea nr. 8 Defectoscopie conductelor, Gazprom Neft PJSC și calea nr. 13 centre perinatale, Camera de Conturi a Federației Ruse. În ambele cazuri, a fost nevoie de Data Science și, în ambele cazuri, ar fi putut fi adăugat web-ul. În pista nr. 13, am fost opriți de faptul că sarcina Data Science acolo era destul de slabă, era necesar să analizăm Rosstat și nu era clar dacă era nevoie de un panou de administrare. Și însăși valoarea sarcinii era pusă la îndoială. Până la urmă, am decis că, ca echipă, suntem mai potriviti pentru pista 8, mai ales că băieții aveau deja experiență în rezolvarea unor probleme similare. Am început prin a ne gândi la scenariul în care aplicația noastră ar fi utilizată de utilizatorul final. S-a dovedit că vom avea două tipuri de utilizatori: tehnicieni care erau interesați de informațiile tehnice și managerii care aveau nevoie de indicatori financiari. Când a apărut o idee a scenariului, a devenit clar ce să facă pe front-end, ce ar trebui să deseneze designerul și ce metode erau necesare pe partea din spate, a devenit posibilă distribuirea sarcinilor. Responsabilitățile în echipă au fost distribuite astfel: doi oameni au rezolvat ML cu date primite de la experți tehnici, o persoană a scris backend-ul în Python, eu am scris front-end-ul în React și Antd, designerul a desenat interfețele. Chiar ne-am așezat astfel încât să ne fie mai convenabil să comunicăm în timp ce ne rezolvăm problemele.

Prima zi a trecut aproape neobservată. În comunicarea cu experții tehnici, s-a dovedit că ei (Gazprom Neft) au rezolvat deja această problemă, doar se întrebau dacă ar putea fi rezolvată mai bine. Nu voi spune că asta mi-a redus motivația, dar a lăsat un reziduu. Am fost surprins că noaptea moderatorii secțiunii au notat echipele de lucru (cum spuneau pentru statistici); acest lucru nu se practică de obicei la hackathon-uri. Până dimineață aveam un prototip al față, câteva rudimente ale spatelui și prima soluție ML gata. În general, era deja ceva de arătat experților. Sâmbătă după-amiază, designerul a desenat, evident, mai multe interfețe decât aș avea timp să codific și a trecut la crearea unei prezentări. Sâmbăta a fost rezervată pentru înregistrarea înregistrării, iar dimineața, toți cei care lucrau în sală au fost alungați pe coridor, apoi intrarea și ieșirea din sală se făceau folosind insigne și nu mai era posibil să plece. decat o ora pe zi. Nu voi spune că acest lucru ne-a cauzat vreun inconvenient semnificativ; cea mai mare parte a zilei am stat și am lucrat. Mâncarea, într-adevăr, era foarte slabă; la prânz am primit un pahar de bulion, o plăcintă și un măr, dar iarăși acest lucru nu ne-a deranjat prea mult, eram concentrați pe altceva.

Ei dădeau periodic red bull, două conserve pe mână, ceea ce a fost de mare ajutor. Rețeta de băutură energizantă + cafea, care fusese de mult testată la hackathon-uri, mi-a permis să codific toată noaptea și a doua zi, fiind vesel ca un pahar. În a doua zi, noi, de fapt, am adăugat pur și simplu noi funcții la aplicație, am calculat indicatori financiari și am început să afișăm grafice despre statisticile defectelor de pe autostrăzi. Nu a existat nicio revizuire a codului ca atare în pista noastră; experții au evaluat soluția problemei în stilul kaggle.com, pe baza acurateței prognozei, iar front-end-ul a fost evaluat vizual. Soluția noastră ML s-a dovedit a fi cea mai precisă, poate asta ne-a permis să devenim lideri. În noaptea de sâmbătă spre duminică am lucrat până la 2 dimineața, apoi ne-am dus la culcare la apartamentul pe care l-am folosit ca bază. Am dormit vreo 5 ore, duminica la ora 9 am fost deja la Kazan Expo. Am pregătit în grabă ceva, dar cea mai mare parte a timpului s-a petrecut pregătindu-mă pentru pre-apărare. Preapărările s-au desfășurat în 2 fluxuri, în fața a două echipe de experți, ni s-a cerut să vorbim ultimii, întrucât ambele echipe de experți au vrut să ne asculte. Am luat asta ca pe un semn bun. Aplicația a fost afișată de pe laptopul meu, de pe un server de dezvoltare care rulează; nu am avut timp să implementăm corect aplicația, totuși, toată lumea a făcut la fel.

În general, totul a mers bine, ni s-au punctat puncte în care ne-am putea îmbunătăți aplicația, iar în timpul dinaintea apărării am încercat chiar să implementăm unele dintre aceste comentarii. De asemenea, apărarea a mers surprinzător de lin. Pe baza rezultatelor pre-apărării, știam că suntem înainte la puncte, am fost în frunte în ceea ce privește precizia soluției, am avut un front-end bun, un design bun și, în general, am avut un bun sentimente. Un alt semn favorabil a fost că fata moderatoare de la secția noastră și-a făcut un selfie cu noi înainte de a intra în sala de concert, iar apoi am bănuit că poate știe ceva))). Dar nu ne știam scorurile după apărare, așa că timpul până când echipa noastră a fost anunțată din scenă a trecut puțin încordat. Pe scenă au înmânat un carton cu inscripția 500000 de ruble și fiecare persoană a primit o geantă cu o cană și o baterie de telefon mobil. Nu am reușit să ne bucurăm de victoria și să o sărbătorim cum trebuie; am luat rapid cina și am luat un taxi până la tren.

Revoluție digitală - cum s-a întâmplat
Echipa WAICO câștigă finala

La întoarcerea la Moscova, jurnaliştii de la NTV ne-au intervievat. Am filmat o oră întreagă la etajul doi al cafenelei Kvartal 44 de pe Polyanka, dar știrile au arătat doar vreo 10 secunde.La urma urmei, progrese puternice față de etapa regională.

Dacă rezumăm impresiile generale ale descoperirii digitale, acestea sunt următoarele. S-au cheltuit mulți bani pentru eveniment; nu am mai văzut niciodată hackathoane de o asemenea amploare. Dar nu pot spune că acest lucru este justificat și că va da cu adevărat roade. O parte semnificativă a participanților care au venit la Kazan au fost pur și simplu petrecăreți care nu știau să facă nimic cu propriile mâini și care au fost forțați să stabilească un record. Nu pot spune că competiția în finală a fost mai mare decât la etapa regională. De asemenea, valoarea și utilitatea sarcinilor unor piese sunt discutabile. Unele probleme au fost de mult rezolvate la nivel industrial. După cum sa dovedit mai târziu, unele organizații care au condus piesele nu au fost interesate să le rezolve. Și această poveste nu s-a încheiat încă, echipele conducătoare de pe fiecare pistă au fost selectate pentru pre-accelerator și se presupune că se vor dovedi a fi startup-uri BREAKTHROUGH. Dar încă nu sunt pregătit să scriu despre asta, vom vedea ce va rezulta.

Sursa: www.habr.com

Adauga un comentariu