Цифрлық серпіліс - бұл қалай болды

Бұл мен жеңіп алған бірінші хакатон емес, бірінші рет емес жазу, және бұл Хабредегі «Цифрлық серпіліске» арналған бірінші жазба емес. Бірақ жазбай тұра алмадым. Мен өз тәжірибемді бөлісуге жеткілікті бірегей деп санаймын. Мен осы хакатонда әртүрлі командалардың құрамында облыстық кезең мен финалда жеңіске жеткен жалғыз адам шығармын. Мұның қалай болғанын білгіңіз келе ме? мысыққа қош келдіңіз.

Облыстық кезең (Мәскеу, 27-28 шілде 2019 ж.).

Мен алғаш рет осы жылдың наурыз-сәуір айларында «Цифрлық серпіліс» туралы жарнаманы көрдім. Әрине, мен мұндай үлкен хакатонды өткізіп жібере алмадым және веб-сайтқа тіркелдім. Онда байқаудың шарттарымен, бағдарламасымен таныстым. Хакатонға өту үшін 16 мамырда басталған онлайн сынақтан өту керек болып шықты. Мүмкін, мен бұл туралы ұмытып кеткен болар едім, өйткені мен тестілеудің басталуы туралы еске салатын хат алмадым. Айта кету керек, болашақта процессордан маған келген БАРЛЫҚ ХАТТАР дәйекті түрде спам қалтасында аяқталады. Мен әр уақытта «қарсы емес» түймесін басқаныммен. Мен олардың мұндай нәтижеге қалай қол жеткізгенін білмеймін, бұл маған MailGun-да пошта арқылы жұмыс істемеді. Ал жігіттер isnotspam.com сияқты сервистердің бар екенін мүлде білмейтін сияқты. Бірақ біз шегінеміз.

Бір жиналыста тестілеудің басталғаны есіме түсті стартап клубы, сол жерде біз команданы құру мәселесін де талқыладық. Тесттер тізімін ашып, мен алдымен Javascript тестіне отырдым. Жалпы алғанда, тапсырмалар азды-көпті сәйкес болды (мысалы, консольге 1 + «1» қоссаңыз, нәтиже қандай болады). Бірақ өз тәжірибемнен мен мұндай сынақтарды жұмысқа немесе өте үлкен резервтері бар командаға қабылдау кезінде қолданар едім. Шындығында, бағдарламашы нақты жұмыста мұндай нәрселерді сирек кездестіреді, оның кодты тез жөндеу қабілетімен - бұл білім ешқандай түрде сәйкес келмейді, және сіз сұхбаттасу үшін мұндай нәрселерге оңай дайындала аласыз (өзімнен білемін). Жалпы, мен тесттен өте тез өттім, кейбір жағдайларда консольде өзімді тексердім. Python тестінде тапсырмалар шамамен бірдей болды, мен өзімді консольде сынап көрдім және JS-ге қарағанда көбірек ұпай жинағаныма таң қалдым, бірақ мен ешқашан Python-да кәсіби түрде бағдарламалаған емеспін. Кейін қатысушылармен әңгімелесу барысында мен күшті бағдарламашылардың тестілеуден төмен балл жинағанын, кейбір адамдардан орталық процессорға іріктеу кезеңінен өтпегендігі туралы хаттар алғанын, содан кейін оларды бәрібір оған шақырғанын естідім. Бұл сынақтарды жасаушылар ештеңе естімегені анық сынақ теориясы, олардың сенімділігі мен негізділігі туралы да, оларды қалай сынау керектігі туралы да және тесттермен идея, егер біз хакатонның негізгі мақсатын ескермеген болсақ та, басынан бастап сәтсіздікке ұшыраған болар еді. Ал бұзудың негізгі мақсаты, кейінірек білгенімдей, Гиннестің рекордын орнату болды және сынақтар оған қайшы болды.

Тестілеуден өткеннен кейін олар маған қоңырау шалды, қатысатынымды сұрады, егжей-тегжейлерді түсіндірді және команданы таңдау үшін чатқа қалай кіру керектігін айтты. Көп ұзамай чатқа кіріп, өзім туралы қысқаша жаздым. Чатта қоқыс болды; ұйымдастырушылар IT-мен ешқандай қатысы жоқ көптеген кездейсоқ адамдарға жарнама жасаған сияқты. Көптеген өнім менеджерлері «Стив Джобс деңгейінде» (бір қатысушының ұсынысынан алынған нақты сөз тіркесі) өздері туралы әңгімелер жариялады, ал қалыпты әзірлеушілер тіпті көрінбеді. Бірақ менің жолым болды және көп ұзамай үш тәжірибелі JS бағдарламашысына қосылдым. Біз бір-бірімізді хакатонда кездестірдік, содан кейін шабыттану және ұйымдастыру мәселелерін шешу үшін командаға бір қызды қостық. Неге екені есімде жоқ, бірақ біз «Киберқауіпсіздік бойынша тренинг» тақырыбын алып, оны «Ғылым және білім 2» трекіне қостық. Алғаш рет өзімді 4 мықты бағдарламашыдан тұратын командада таптым және мұндай құрамда жеңіске жетудің қаншалықты оңай екенін алғаш рет сезіндім. Дайындықсыз келіп, түскі асқа дейін дауласып, не істерімізді шеше алмадық: мобильді қосымша ма, әлде веб-қосымша. Кез келген басқа жағдайда мен бұл сәтсіздік деп ойлайтын едім. Біз үшін ең маңыздысы бәсекелестерімізден қалай жақсы болатынымызды түсіну болды, өйткені айналасында сынақтарды, киберқауіпсіздік ойындарын және т.б. кесетін көптеген командалар болды. Осыны және оқу бағдарламалары мен қолданбаларын қарап шыққаннан кейін біз негізгі дифференциаторымыз өрт сөндіру жаттығулары болады деп шештік. Біз іске асыруды қызықтыратын бірқатар мүмкіндіктерді таңдадық (хакерлердің дерекқорларына қарсы электрондық пошта мен парольді тексеру арқылы тіркелу, фишингтік хаттарды жіберу (белгілі банктердің хаттары түрінде), чатта әлеуметтік инженерия бойынша оқыту). Біз не істеп жатқанымызды шешіп, қалай ерекшеленетінімізді түсінгеннен кейін, біз тез арада толыққанды веб-қосымшаны жаздық және мен бейінді әзірлеушінің ерекше рөлін ойнадым. Осылайша, біз өз жолымызды сенімді түрде жеңіп, басқа үш команданың құрамында Қазанда өтетін финалдық кезеңге жолдама алдық. Кейіннен Қазанда финалға іріктеу ойдан шығарылғанын білдім, мен іріктеуден өте алмаған командалардың көптеген таныс тұлғаларын кездестірдім. Тіпті, 1 арнаның журналистері де сұхбат берді. Алайда ондағы есепте біздің өтініш 1 секунд қана көрсетілді.

Цифрлық серпіліс - бұл қалай болды
Облыстық кезеңнен жеңімпаз атанған қарлы команда

Финал (Қазан, 27-29 қыркүйек, 2019 ж.)

Бірақ кейін сәтсіздіктер басталды. Қарлы команданың барлық бағдарламашылары бір айдың ішінде бірінен соң бірі Қазанға финалға бара алмайтындарын хабарлады. Ал мен жаңа команда табуды ойладым. Біріншіден, мен Ресейдің Hack Team командасының жалпы чатына қоңырау шалдым, сонда мен көптеген жауаптар мен командаларға қосылуға шақырулар алдым, бірақ олардың ешқайсысы назарымды аударған жоқ. Өнім, мобильді әзірлеуші, фабуладағы аққуды, шаянды және шортанды еске түсіретін фронт-энд сияқты теңгерімсіз командалар болды. Технология тұрғысынан маған сәйкес келмейтін командалар да болды (мысалы, Flutter-те мобильді қосымшаның дамуымен). Ақырында, мен қоқыс деп санаған чатта (облыстық кезеңге командаларды іріктеу өткен сол ВКонтакте) командаға фронтендер іздеу туралы хабарландыру жарияланды және мен кездейсоқ түрде жаздым. Жігіттер Сколтехтің аспиранттары болып шығып, бірден кездесіп, танысуды ұсынды. Маған ұнады; бір-бірімен хакатонда бірден танысқысы келетін командалар әдетте мотивациясының жоқтығымен алаңдатады. Біз Пятницкаядағы «Ракеде» кездестік. Жігіттер ақылды, жігерлі, өздеріне және жеңіске сенімді болып көрінді, мен шешімді сол жерде қабылдадым. Біз финалда қандай тректер мен тапсырмалар болатынын әлі білмедік, бірақ біз Machine Learning-ге қатысты нәрсені таңдаймыз деп ойладық. Ал менің міндетім осы мәселе бойынша админ жазу болады, сондықтан мен antd-admin негізінде бұл үшін шаблон дайындадым.
Ұйымдастырушылардың есебінен Қазанға тегін бардым. Айта кету керек, билеттерді сатып алуға және жалпы финалды ұйымдастыруға қатысты чаттар мен блогтарда көптеген наразылықтар айтылды, мен мұның бәрін қайталап айтпаймын.

Қазан ЭКСПО-ға келіп, тіркеліп (белгіні алуда біраз қиналдым) және таңғы ас ішіп болған соң, біз трек таңдауға кеттік. Біз шенеуніктердің сөйлеген салтанатты ашылуына бар болғаны 10 минуттай ғана бардық, шын мәнінде, бізде ұнаған тректер бар еді, бірақ егжей-тегжейлері бізді қызықтырды. Мысалы, №18 тректе (Ростелеком) мобильді қосымшаны әзірлеу қажет екені белгілі болды, бірақ бұл қысқаша сипаттамада жоқ. Біз негізгі таңдауды №8 құбырлар дефектоскопиясы, «Газпром нефть» ЖАҚ және №13 перинаталды орталықтар, Ресей Федерациясының Есеп палатасы арасында жасадық. Екі жағдайда да Data Science қажет болды және екі жағдайда да вебті қосуға болады. №13 тректе бізді Data Science тапсырмасы өте әлсіз, Rosstat талдауы қажет болды және әкімші панелінің қажет пе екені белгісіз болды. Ал тапсырманың құндылығы күмән тудырды. Соңында біз команда ретінде 8-ді бақылауға қолайлырақ деп шештік, әсіресе жігіттердің осыған ұқсас мәселелерді шешуде тәжірибесі бар болғандықтан. Біз қолданбамызды соңғы пайдаланушы қолданатын сценарий арқылы ойланудан бастадық. Бізде пайдаланушылардың екі түрі болатыны белгілі болды: техникалық ақпаратқа қызығушылық танытатын техниктер және қаржылық көрсеткіштерді қажет ететін менеджерлер. Сценарий туралы идея пайда болған кезде, алдыңғы жағында не істеу керек, дизайнер нені салу керек және артқы жағында қандай әдістер қажет екендігі белгілі болды, тапсырмаларды бөлуге болады. Командадағы міндеттер келесідей бөлінді: екі адам техникалық сарапшылардан алынған мәліметтермен ML шешті, бір адам Python-да бэкенд жазды, мен React және Antd-де фронталды жаздым, дизайнер интерфейстерді сызды. Тіпті мәселемізді шешіп жатқанда тілдесуімізге ыңғайлы болсын деп отырдық.

Бірінші күн дерлік байқалмай өтті. Техникалық сарапшылармен сөйлескенде, олар (Газпром Нефть) бұл мәселені шешіп қойғаны белгілі болды, олар мұны жақсырақ шешуге бола ма деп ойлайтын. Бұл менің мотивациямды төмендетті деп айтпаймын, бірақ ол қалдырды. Мені таң қалдырды, түнде секция модераторлары жұмыс топтарын атап өтті (статистика үшін айтқандай), бұл әдетте хакатондарда қолданылмайды. Таңертең бізде фронттың прототипі, артқы жағының кейбір рудименттері және бірінші ML шешімі дайын болды. Жалпы, сарапшыларға көрсететін нәрсе бар еді. Сенбі күні түстен кейін дизайнер менің кодтауға уақытым болғаннан гөрі көбірек интерфейстерді тартты және презентация жасауға көшті. Жазбаны тіркеу үшін сенбі белгіленді, ал таңертең залда жұмыс істейтіндердің барлығын дәлізге шығарып жіберді, содан кейін залға кіру және шығу төсбелгілер арқылы жүзеге асырылды және одан әрі кетуге болмайды. күніне бір сағаттан артық. Бұл бізге айтарлықтай қолайсыздық тудырды деп айтпаймын, біз күннің көп бөлігінде отырдық және жұмыс істедік. Тамақ, шынында да, өте аз болды; түскі асқа біз бір стақан сорпа, бәліш және алма алдық, бірақ бұл бізді қатты ренжітпеді, біз басқа нәрсеге назар аудардық.

Олар мезгіл-мезгіл қызыл бұқа берді, әр қолға екі банка, бұл өте пайдалы болды. Хакатондарда бұрыннан сыналған энергетикалық сусын + кофе рецепті маған стакандай көңілді бола отырып, түні бойы және келесі күні кодтауға мүмкіндік берді. Екінші күні біз, шын мәнінде, қосымшаға жай ғана жаңа мүмкіндіктер қостық, қаржылық көрсеткіштерді есептедік және автомобиль жолдарындағы ақаулар статистикасы бойынша графиктерді көрсете бастадық. Біздің трегімізде мұндай кодты шолу болған жоқ; сарапшылар болжамның дәлдігіне негізделген kaggle.com стилінде мәселенің шешімін бағалады, ал алдыңғы жағы көрнекі түрде бағаланды. Біздің ML шешіміміз ең дәл болып шықты, мүмкін бұл бізге көшбасшы болуға мүмкіндік берді. Сенбіден жексенбіге қараған түні біз түнгі сағат 2-ге дейін жұмыс істедік, содан кейін база ретінде пайдаланған пәтерде ұйықтадық. Біз 5 сағаттай ұйықтадық, жексенбі күні таңғы сағат 9-да біз Kazan Expo-да болдық. Мен асығыс бірдеңе дайындадым, бірақ көп уақыт алдын ала қорғанысқа дайындалумен өтті. Алдын ала қорғаныс 2 ағында, екі сарапшылар тобының алдында өтті, бізден соңғы сөз сөйлеуді сұрады, өйткені екі сарапшы тобы да бізді тыңдағысы келді. Біз мұны жақсы белгі ретінде қабылдадық. Қолданба менің ноутбугымнан, жұмыс істеп тұрған әзірлеуші ​​серверден көрсетілді; бізде қолданбаны дұрыс орналастыруға уақыт болмады, бірақ бәрі бірдей жасады.

Жалпы, бәрі ойдағыдай өтті, бізге өтінішімізді жақсартуға болатын тұстар көрсетілді, ал қорғауға дейінгі уақытта біз осы ескертулердің кейбірін жүзеге асыруға тырыстық. Қорғаныс та таңқаларлықтай тегіс өтті. Алдын ала қорғаныс нәтижелері бойынша біз ұпай саны бойынша алда екенімізді білдік, шешімнің дәлдігі бойынша біз алдыңғы қатардамыз, бізде жақсы фронт-энд, жақсы дизайн және жалпы алғанда, бізде жақсы болды. сезімдер. Тағы бір жағымды белгі, біздің секциядағы модератор қыз концерт залына кірер алдында бізбен бірге селфиге түсті, сосын бірдеңе білуі мүмкін деп күдіктендім))). Бірақ қорғаныстан кейін ұпайларымызды білмедік, сондықтан командамызды сахнадан жариялағанға дейінгі уақыт аздап шиеленісіп өтті. Сахнада олар 500000 XNUMX рубль жазылған картон тапсырып, әр адамға кружка мен ұялы телефон батареясы салынған сөмке берілді. Жеңістен ләззат алып, оны дұрыс тойлай алмадық, тез кешкі ас ішіп, пойызға таксиге отырдық.

Цифрлық серпіліс - бұл қалай болды
WAICO командасы финалда жеңіске жетті

Мәскеуге оралған соң НТВ журналистері бізден сұхбат алды. Полянкадағы «Квартал 44» дәмханасының екінші қабатында бір сағат бойы түсірілім жасадық, бірақ жаңалық 10 секундтай ғана көрсетілді.Өйткені, облыстық кезеңмен салыстырғанда үлкен ілгерілеушілік бар.

Сандық серпілістің жалпы әсерлерін қорытындылайтын болсақ, олар төмендегідей. Шараға қыруар қаржы жұмсалды, мен мұндай ауқымдағы хакатондарды бұрын-соңды көрмедім. Бірақ бұл орынды деп айта алмаймын және бұл шынымен де өз жемісін береді. Қазанға келген қатысушылардың айтарлықтай бөлігі өз қолдарымен ештеңе жасауды білмейтін, рекорд орнатуға мәжбүр болған жай ғана кешке келушілер болды. Финалдағы бәсеке облыстық кезеңге қарағанда жоғары болды деп айта алмаймын. Сондай-ақ, кейбір тректердің тапсырмаларының құндылығы мен пайдалылығы күмәнді. Кейбір мәселелер индустриялық деңгейде әлдеқашан шешілген. Кейін белгілі болғандай, тректерді жүргізген кейбір ұйымдар оларды шешуге мүдделі емес. Ал бұл оқиға әлі біткен жоқ, алдын ала акселераторға әр тректен жетекші командалар таңдалды және олар ЖЕРЛІК стартаптар болып шығады деп болжануда. Бірақ мен бұл туралы жазуға әлі дайын емеспін, одан не шығатынын көреміз.

Ақпарат көзі: www.habr.com

пікір қалдыру