Cifereca sukceso - kiel ĝi okazis

Ĉi tio ne estas la unua hakatono kiun mi gajnas, ne la unua pri kiu mi gajnas skribado, kaj ĉi tio ne estas la unua afiŝo pri Habré dediĉita al "Digital Breakthrough". Sed mi ne povis ne skribi. Mi konsideras mian sperton sufiĉe unika por dividi. Mi verŝajne estas la sola persono ĉe ĉi tiu hakatono, kiu gajnis la regionan stadion kaj finalon kiel parto de malsamaj teamoj. Ĉu vi volas scii kiel tio okazis? Bonvenon al kato.

Regiona stadio (Moskvo, 27 - 28 julio 2019).

Mi unue vidis reklamon pri "Digital Breakthrough" ie en marto-aprilo ĉi-jare. Kompreneble, mi ne povis preterlasi tian grandan hakatonon kaj registriĝis en la retejo. Tie mi konatiĝis kun la kondiĉoj kaj programo de la konkurso. Montriĝis, ke por atingi la hakatonon, oni devis trapasi interretan teston, kiu komenciĝis la 16-an de majo. Kaj, eble, mi oportune forgesus pri tio, ĉar mi ne ricevis leteron rememorigante min pri la komenco de la testado. Kaj, mi devas diri, estonte ĈIUJ LETEROJ, kiuj venis al mi el la CPU, konstante finiĝis en la spam-dosierujo. Eĉ kvankam mi ĉiufoje klakis la butonon "ne kritikinda". Mi ne scias kiel ili sukcesis atingi tian rezulton; ĝi ne funkciis por mi kun poŝtado ĉe MailGun. Kaj la infanoj ŝajnas tute ne scii pri la ekzisto de servoj kiel isnotspam.com. Sed ni digresas.

Mi estis rememorigita pri la komenco de testado ĉe unu el la renkontiĝoj startklubo, tie ni diskutis ankaŭ pri la formado de la teamo. Malferminte la liston de testoj, mi unue sidiĝis al la Javascript-testo. Ĝenerale, la taskoj estis pli-malpli taŭgaj (kiel kia estos la rezulto se vi aldonas 1 + '1' en la konzolo). Sed laŭ mia sperto, mi uzus tiajn testojn dum varbado por laboro aŭ teamo kun tre grandaj rezervoj. La fakto estas, ke en reala laboro, programisto malofte renkontas tiajn aferojn, kun sia kapablo rapide sencimigi kodon - ĉi tiu scio neniel korelacias, kaj vi povas trejni por tiaj aferoj por intervjuoj sufiĉe facile (mi scias de mi mem). Ĝenerale, mi klakis tra la testo sufiĉe rapide, en iuj kazoj mi kontrolis min en la konzolo. En la python-testo, la taskoj estis proksimume samtipaj, mi ankaŭ provis min en la konzolo, kaj surpriziĝis gajni pli da poentoj ol en JS, kvankam mi neniam profesie programis en Python. Poste, en konversacioj kun partoprenantoj, mi aŭdis rakontojn pri kiom fortaj programistoj gajnis malalte en testoj, kiel kelkaj homoj ricevis leterojn dirante, ke ili ne trapasis la elektprocezon por la CPU, kaj tiam ili estis invititaj al ĝi ĉiuokaze. Estas klare, ke la kreintoj de ĉi tiuj provoj plej verŝajne nenion aŭdis pri tio testteorio, nek pri ilia fidindeco kaj valideco, nek pri kiel testi ilin, kaj la ideo kun testoj estus malsukcesa jam de la komenco, eĉ se ni ne konsiderus la ĉefan celon de la hakatono. Kaj la ĉefa celo de la hako, kiel mi eksciis poste, estis starigi Guinness-rekordon, kaj la testoj kontraŭdiris ĝin.

Iam post trapaso de la testoj, ili vokis min, demandis ĉu mi partoprenos, klarigis la detalojn kaj diris al mi kiel eniri la babilejon por elekti teamon. Baldaŭ, mi eniris la babilejon kaj skribis mallonge pri mi mem. Okazis kompleta rubo en la babilejo; ŝajnis, ke la organizantoj reklamis al multaj hazardaj homoj, kiuj havis nenion komunan kun IT. Multnombraj produktmanaĝeroj "ĉe la nivelo de Steve Jobs" (vera frazo de la submetaĵo de unu partoprenanto) afiŝis rakontojn pri si mem, kaj normalaj programistoj eĉ ne estis videblaj. Sed mi estis bonŝanca kaj baldaŭ aliĝis al tri spertaj JS-programistoj. Ni renkontis unu la alian jam ĉe la hakatono, kaj poste ni aldonis knabinon al la teamo por inspiro kaj solvi organizajn problemojn. Mi ne memoras kial, sed ni prenis la temon "Trejnado pri Cibersekureco" kaj enmetis ĝin en la aŭtoveturejon "Scienco kaj Edukado 2". Unuafoje mi trovis min en teamo de 4 fortaj programistoj kaj unuafoje mi sentis, kiel facile estas venki en tia komponado. Ni venis nepreparitaj kaj kverelis ĝis tagmanĝo kaj ne povis decidi, kion ni faros: poŝtelefona aplikaĵo aŭ retejo. En iu alia situacio mi estus pensinta, ke ĝi estas fiasko. La plej grava afero por ni estis kompreni kiel ni estus pli bonaj ol niaj konkurantoj, ĉar ĉirkaŭe estis multaj teamoj, kiuj tranĉis testojn, cibersekurecajn ludojn kaj similajn. Post rigardado ĉi tion kaj gugligado de trejnaj programoj kaj apoj, ni decidis, ke nia ĉefa diferencigilo estos fajraj ekzercoj. Ni elektis kelkajn funkciojn, kiujn ni trovis interesaj por efektivigi (registrado per retpoŝto kaj pasvorta konfirmo kontraŭ retpirataj datumbazoj, sendo de phishing-retmesaĝoj (en formo de leteroj de konataj bankoj), trejnado pri socia inĝenierado en babilejo). Decidinte pri tio, kion ni faras kaj komprenante kiel ni povus elstari, ni rapide verkis plenrajtan TTT-aplikaĵon, kaj mi ludis la nekutiman rolon de backend-programisto. Tiel, ni memfide gajnis nian aŭtoveturejon kaj, kiel parto de tri aliaj teamoj, kvalifikiĝis por la finalo en Kazan. Poste, en Kazan, mi eksciis, ke la elekto por la finalo estis fikcio; mi renkontis tie multajn konatajn vizaĝojn de la teamoj, kiuj ne preterpasis la elekton. Ni eĉ estis intervjuitaj de ĵurnalistoj de Kanalo 1. Tamen, en la raporto de ĝi, nia aplikaĵo estis montrita nur dum 1 sekundo.

Cifereca sukceso - kiel ĝi okazis
Neĝita teamo, kie mi gajnis la regionan etapon

Finalo (Kazan, 27-29 septembro 2019)

Sed tiam komenciĝis la fiaskoj. Ĉiuj programistoj de la Snowed-teamo ene de proksimume monato, unu post alia, raportis ke ili ne povus iri al Kazan por la finalo. Kaj mi pensis pri trovi novan teamon. Unue, mi faris alvokon en la ĝenerala babilejo de la Rusa Hack Teamo, kaj kvankam tie mi ricevis sufiĉe multajn respondojn kaj invitojn por aliĝi al teamoj, neniu el ili kaptis mian atenton. Estis malekvilibraj teamoj, kiel produkto, movebla programisto, front-end, rememoriga pri cigno, kankro kaj ezoko el fablo. Estis ankaŭ teamoj kiuj ne taŭgis por mi rilate teknologion (ekzemple, kun la disvolviĝo de poŝtelefona aplikaĵo en Flutter). Fine, en babilejo, kiun mi konsideris malpura (la sama VKontakte, kie okazis la elekto de teamoj por la regiona etapo), estis afiŝita reklamo pri la serĉado de frontisto por la teamo, kaj mi skribis pure hazarde. La uloj montriĝis diplomiĝaj studentoj ĉe Skoltech kaj tuj proponis renkontiĝi kaj konatiĝi. Mi ŝatis ĝin; teamoj kiuj preferas tuj koni unu la alian ĉe hakatono kutime alarmas min pro sia manko de instigo. Ni renkontiĝis ĉe "Rake" sur Pjatniskaja. La uloj ŝajnis inteligentaj, motivitaj, memfidaj pri si mem kaj pri venko, kaj mi faris la decidon ĝuste tie. Ni ankoraŭ ne sciis, kiaj trakoj kaj taskoj estos en la finalo, sed ni supozis, ke ni elektos ion rilatan al Maŝina Lernado. Kaj mia tasko estos skribi administranton pri ĉi tiu afero, do mi preparis ŝablonon por tio anticipe bazitan sur antd-admin.
Mi iris al Kazan senpage, koste de la organizantoj. Mi devas diri, ke en babiloj kaj blogoj jam estis esprimita multe da malkontento rilate la aĉeton de biletoj kaj, ĝenerale, la organizado de la finalo, mi ne rerakontos ĉion.

Alveninte al Kazan Expo, registriĝinte (mi havis iom da problemo akiri insignon) kaj matenmanĝinte, ni iris elekti trakon. Ni iris nur al la solena malfermo, kie funkciuloj parolis, dum ĉirkaŭ 10 minutoj.Fakte, ni jam havis niajn preferatajn spurojn, sed ni interesiĝis pri la detaloj. En la aŭtoveturejo n-ro 18 (Rostelecom), ekzemple, montriĝis, ke necesas disvolvi poŝtelefonon, kvankam ĉi tio ne estis en la mallonga priskribo. Ni faris la ĉefan elekton inter trako n-ro 8 Defectoscopy de duktoj, Gazprom Neft PJSC kaj trako n-ro 13 Perinatal-centroj, Konta Ĉambro de la Rusa Federacio. En ambaŭ kazoj, Data Science estis bezonata, kaj en ambaŭ kazoj, la reto povus estinti aldonita. En la aŭtoveturejo n-ro 13, nin haltigis la fakto, ke la tasko de Data Science tie estis sufiĉe malforta, necesis analizi Rosstat kaj ne estis klare ĉu administra panelo estas bezonata. Kaj la valoro mem de la tasko estis en dubo. Fine ni decidis, ke kiel teamo ni pli taŭgas por spuri 8, precipe ĉar la uloj jam havis sperton pri solvado de similaj problemoj. Ni komencis pripensi la scenaron en kiu nia aplikaĵo estus uzata de la fina uzanto. Montriĝis, ke ni havus du specojn de uzantoj: teknikistoj, kiuj interesiĝis pri teknikaj informoj kaj administrantoj, kiuj bezonis financajn indikilojn. Kiam aperis ideo pri la scenaro, evidentiĝis, kion fari ĉe la antaŭa fino, kion la dizajnisto devas desegni, kaj kiaj metodoj necesas ĉe la malantaŭa fino, eblis distribui taskojn. Respondecoj en la teamo estis distribuitaj jene: du homoj solvis ML kun datumoj ricevitaj de teknikaj fakuloj, unu persono skribis la backend en Python, mi skribis la frontend en React kaj Antd, la dezajnisto desegnis la interfacojn. Ni eĉ sidiĝis, por ke estu pli oportune por ni komuniki dum la solvado de niaj problemoj.

La unua tago forflugis preskaŭ nerimarkite. En komunikado kun teknikaj fakuloj, montriĝis, ke ili (Gazprom Neft) jam solvis ĉi tiun problemon, ili nur scivolis ĉu ĝi povas esti solvita pli bone. Mi ne diros, ke ĉi tio reduktis mian motivadon, sed ĝi lasis restaĵon. Mi surpriziĝis, ke nokte la sekciaj moderigantoj notis la laborteamojn (kiel ili diris por statistiko); tio kutime ne estas praktikata ĉe hakatonoj. Antaŭ la mateno ni havis prototipon de la fronto, kelkajn rudimentojn de la malantaŭo, kaj la unua ML-solvo preta. Ĝenerale, jam estis io por montri al la spertuloj. Sabate posttagmeze, la dezajnisto evidente desegnis pli da interfacoj ol mi havus tempon por kodi kaj ŝanĝis al kreado de prezento. Sabato estis rezervita por la registrado de la rekordo, kaj matene, ĉiuj laborantaj en la halo estis forpelitaj en la koridoron, tiam eniro kaj eliro el la halo estis efektivigitaj per insignoj, kaj eblis foriri por ne plu. ol unu horo tage. Mi ne diros, ke tio kaŭzis al ni gravan ĝenon; la plej grandan parton de la tago ni ankoraŭ sidis kaj laboris. La manĝaĵo, ja, estis tre magra; por tagmanĝo ni ricevis glason da buljono, torton kaj pomon, sed denove tio ne multe ĝenis nin, ni koncentriĝis pri io alia.

Ili periode disdonis ruĝan taŭron, du ladskatolojn per mano, kio estis tre helpema. La energitrinkaĵo + recepto de kafo, kiu estis longe provita ĉe hakatonoj, permesis al mi kodigi la tutan nokton kaj la sekvan tagon, estante gaja kiel glaso. En la dua tago, ni fakte simple aldonis novajn funkciojn al la aplikaĵo, kalkulis financajn indikilojn kaj komencis montri grafikaĵojn pri la statistiko de difektoj en ŝoseoj. Ne estis koda revizio kiel tia en nia aŭtoveturejo; spertuloj taksis la solvon de la problemo laŭ la stilo kaggle.com, surbaze de la precizeco de la prognozo, kaj la antaŭa finaĵo estis taksita vide. Nia ML-solvo montriĝis la plej preciza, eble ĉi tio permesis al ni fariĝi gvidantoj. Nokte de sabato ĝis dimanĉo ni laboris ĝis la 2-a matene, kaj poste dormis ĉe la loĝejo, kiun ni uzis kiel bazon. Ni dormis ĉirkaŭ 5 horojn, dimanĉe je la 9-a ni jam estis ĉe Kazan Expo. Mi haste preparis ion, sed plejparto de la tempo estis pasigita por prepari la antaŭdefendon. La antaŭdefendoj okazis en 2 fluoj, antaŭ du teamoj de fakuloj; ni estis petitaj paroli laste, ĉar ambaŭ teamoj de spertuloj volis aŭskulti nin. Ni prenis ĉi tion kiel bonan signon. La aplikaĵo estis montrita de mia tekokomputilo, de funkcianta dev-servilo; ni ne havis tempon por ĝuste disfaldi la aplikaĵon, tamen ĉiuj faris same.

Ĝenerale ĉio iris bone, ni montris punktojn en kiuj ni povus plibonigi nian aplikaĵon, kaj en la tempo antaŭ la defendo ni eĉ provis efektivigi iujn ĉi tiujn komentojn. La defendo ankaŭ iris surprize glate. Surbaze de la rezultoj de la antaŭdefendo, ni sciis, ke ni estas antaŭaj laŭ punktoj, ni estis antaŭaj laŭ solvprecizeco, ni havis bonan antaŭfinon, bonan dezajnon kaj, ĝenerale, ni havis bonan. sentoj. Alia favora signo estis, ke la knabina moderiganto de nia sekcio faris memfoton kun ni antaŭ ol eniri la koncertejon, kaj tiam mi suspektis, ke ŝi eble scias ion))). Sed ni ne sciis niajn poentarojn post la defendo, do la tempo ĝis nia teamo estis anoncita de la scenejo pasis iom streĉite. Sur la scenejo oni enmanigis kartonon kun la surskribo 500000 rubloj kaj ĉiu persono ricevis sakon kun mug kaj poŝtelefona baterio. Ni ne sukcesis ĝui la venkon kaj festi ĝin ĝuste; ni rapide vespermanĝis kaj prenis taksion al la trajno.

Cifereca sukceso - kiel ĝi okazis
Teamo WAICO venkas en la finalo

Reveninte al Moskvo, ĵurnalistoj de NTV intervjuis nin. Ni filmis dum tuta horo en la dua etaĝo de la kafejo Kvartal 44 ĉe Polyanka, sed la novaĵoj montris nur ĉirkaŭ 10 sekundojn, ja fortaj progresoj kompare kun la regiona stadio.

Se ni resumas la ĝeneralajn impresojn de la Cifereca Trarompo, ili estas kiel sekvas. Multe da mono estis elspezita por la evento; mi neniam antaŭe vidis hakatonojn de tia skalo. Sed mi ne povas diri, ke tio estas pravigita kaj ke ĝi vere pagos. Signifa parto de la partoprenantoj, kiuj venis al Kazan, estis simple festenantoj, kiuj ne sciis fari ion ajn per siaj propraj manoj, kaj kiuj estis devigitaj meti rekordon. Mi ne povas diri, ke la konkurado en la finalo estis pli alta ol en la regiona stadio. Ankaŭ, la valoro kaj utileco de la taskoj de kelkaj trakoj estas dubindaj. Kelkaj problemoj estas delonge solvitaj sur la industria nivelo. Kiel ĝi rezultis poste, kelkaj organizoj kiuj kondukis la trakojn ne interesiĝis pri solvi ilin. Kaj ĉi tiu rakonto ankoraŭ ne finiĝis, la gvidaj teamoj de ĉiu aŭtoveturejo estis elektitaj por la antaŭ-akcelilo, kaj oni supozas, ke ili rezultos esti RUPRANKAJ noventreprenoj. Sed mi ankoraŭ ne pretas skribi pri ĉi tio, ni vidos, kio venas de tio.

fonto: www.habr.com

Aldoni komenton