Urban Tech Challenge xakatonida Big Data trekini qanday va nima uchun yutib oldik

Mening ismim Dmitriy. Va men jamoamiz qanday qilib Big Data trekida Urban Tech Challenge hakatoni finaliga chiqqani haqida gapirmoqchiman. Darhol aytamanki, bu men qatnashgan birinchi xakaton emas va sovrinlarni qo'lga kiritgan birinchisi ham emas. Shu munosabat bilan, men o'z hikoyamda umuman xakaton sanoatiga oid ba'zi umumiy kuzatishlar va xulosalarni aytmoqchiman va Urban Tech Challenge (uchun) tugagandan so'ng darhol Internetda paydo bo'lgan salbiy sharhlardan farqli o'laroq, o'z nuqtai nazarimni bildirmoqchiman. misol bu).

Shunday qilib, avval ba'zi umumiy kuzatishlar.

1. Ajablanarlisi shundaki, juda ko'p odamlar xakatonni eng yaxshi kodlovchilar g'alaba qozonadigan sport musobaqasi deb o'ylashadi. Bu unday emas. Men hackathon tashkilotchilarining o'zlari nimani xohlashlarini bilmagan holatlarni hisobga olmayman (men buni ham ko'rganman). Ammo, qoida tariqasida, xakatonni tashkil etuvchi kompaniya o'z maqsadlariga intiladi. Ularning ro'yxati boshqacha bo'lishi mumkin: bu ba'zi muammolarning texnik echimi, yangi g'oyalar va odamlarni izlash va boshqalar bo'lishi mumkin. Ushbu maqsadlar ko'pincha tadbir formatini, uning vaqtini, onlayn/oflayn rejimini, vazifalar qanday shakllantirilishini (va ular umuman shakllantiriladimi), xakatonda kodni ko'rib chiqish bo'ladimi yoki yo'qligini va hokazolarni aniqlaydi. Jamoalar ham, qilgan ishlari ham shu nuqtai nazardan baholanadi. Va kompaniya kerakli nuqtaga eng yaxshi erishgan jamoalar g'alaba qozonadi va ko'pchilik bu nuqtaga mutlaqo ongsiz ravishda va tasodifan etib kelishadi, ular haqiqatan ham sport musobaqalarida qatnashmoqda deb o'ylashadi. Kuzatishlarim shuni ko'rsatadiki, ishtirokchilarni rag'batlantirish uchun tashkilotchilar hech bo'lmaganda sport muhiti ko'rinishini va teng sharoitlarni yaratishlari kerak, aks holda ular yuqoridagi sharhdagi kabi salbiy to'lqinni olishadi. Ammo biz chekinamiz.

2. Bundan quyidagi xulosa kelib chiqadi. Tashkilotchilar hakatonga ishtirokchilarning o'z ishlari bilan kelishidan manfaatdor, ba'zida ular buning uchun maxsus onlayn yozishmalar bosqichini tashkil qilishadi. Bu yanada kuchli chiqish echimlariga imkon beradi. "O'z ishi" tushunchasi juda nisbiydir; har qanday tajribali dasturchi o'zining birinchi topshirig'ida o'zining eski loyihalaridan minglab qator kodlarni to'plashi mumkin. Va bu oldindan tayyorlangan rivojlanish bo'ladimi? Ammo har qanday holatda, men mashhur mem shaklida ifodalagan qoida amal qiladi:

Urban Tech Challenge xakatonida Big Data trekini qanday va nima uchun yutib oldik

G'alaba qozonish uchun sizda qandaydir raqobatdosh ustunlik bo'lishi kerak: o'tmishda qilgan shunga o'xshash loyiha, ma'lum bir mavzu bo'yicha bilim va tajriba yoki xakaton boshlanishidan oldin bajarilgan tayyor ish. Ha, bu sport emas. Ha, bu sarflangan sa'y-harakatlarga arzimasligi mumkin (bu erda har kim butun jamoaga bo'lingan 3 minglik mukofot uchun kechasi 100 hafta davomida kodlash kerakmi yoki yo'qligini o'zi hal qiladi va hatto uni olmaslik xavfi bilan). Ammo, ko'pincha, bu oldinga o'tish uchun yagona imkoniyatdir.

3. Jamoani tanlash. Hackathon chatlarida ko'rganimdek, ko'pchilik bu masalaga juda beparvo yondashadi (garchi bu sizning hakatondagi natijangizni aniqlaydigan eng muhim qaror bo'lsa ham). Faoliyatning ko‘p sohalarida (sportda ham, xakatonda ham) kuchlilar kuchlilar bilan, kuchsizlar kuchsizlar bilan, aqllilar aqllilar bilan birlashishga moyil ekanligini ko‘rganman, yaxshi, umuman olganda, o‘zingiz tushunasiz... Chatlarda shunday bo'ladi: kuchliroq dasturchilar ularni darhol qo'yib yuborishadi, xakaton uchun qimmatli ko'nikmalarga ega bo'lmagan odamlar uzoq vaqt chatda osilib turishadi va jamoani tanlashadi, agar kimdir buni qabul qilsa. . Ba'zi xakatonlarda jamoalarga tasodifiy tayinlash amaliyoti qo'llaniladi va tashkilotchilarning ta'kidlashicha, tasodifiy jamoalar mavjud bo'lganlardan yomon emas. Ammo mening kuzatishlarimga ko'ra, g'ayratli odamlar, qoida tariqasida, o'zlari jamoa topadilar, agar kimdir tayinlanishi kerak bo'lsa, ko'pincha ularning ko'plari xakatonga kelmaydi.

Jamoa tarkibiga kelsak, bu juda individual va vazifaga juda bog'liq. Aytishim mumkinki, jamoaning minimal hayotiy tarkibi dizayner - front-end yoki front-end - back-end. Lekin men node.js-ga oddiy back-end qo'shgan yoki React Native-da mobil ilova yaratgan faqat front-endlardan tashkil topgan jamoalar g'alaba qozongan holatlarni ham bilaman; yoki faqat oddiy tartibni amalga oshirgan yordamchilardan. Umuman olganda, hamma narsa juda individual va vazifaga bog'liq. Hackathon uchun jamoani tanlash rejasi quyidagicha edi: men jamoa yig'ishni yoki front-end - back-end - dizayner kabi jamoaga qo'shilishni rejalashtirgan edim (men o'zim frontendman). Va tezda men python backender va bizga qo'shilish taklifini qabul qilgan dizayner bilan suhbatlasha boshladim. Biroz vaqt o'tgach, hakatonda g'alaba qozonish tajribasiga ega bo'lgan biznes-tahlilchi qiz bizga qo'shildi va bu uning bizga qo'shilish masalasini hal qildi. Qisqa uchrashuvdan so'ng biz fantastik to'rtlikka o'xshab o'zimizni U4 (URBAN 4, urban four) deb atashga qaror qildik. Va hatto telegram kanalimiz avatariga ham tegishli rasmni qo'yishdi.

4. Vazifani tanlash. Yuqorida aytib o'tganimdek, siz raqobatdosh ustunlikka ega bo'lishingiz kerak, hackathon uchun vazifa shundan kelib chiqqan holda tanlanadi. Shunga asoslanib, ko'rib chiqildi vazifalar ro'yxati va ularning murakkabligini baholab, biz ikkita vazifani hal qildik: DPiIR innovatsion korxonalari katalogi va EFKO chatboti. DPIiR topshirig'ini qo'llab-quvvatlovchi tanladi, EFKO topshirig'ini men tanladim, chunki node.js va DialogFlow da chatbotlar yozish tajribasiga ega edi. EFKO vazifasi MLni ham qamrab oldi; Menda ML bo'yicha unchalik katta bo'lmagan tajribam bor. Muammoning shartlariga ko'ra, menimcha, uni ML vositalari yordamida hal qilish dargumon edi. Urban Tech Challenge uchrashuviga borganimda bu tuyg‘u yanada kuchaydi, u yerda tashkilotchilar menga EFKO bo‘yicha ma’lumotlar to‘plamini ko‘rsatdilar, u yerda mahsulot maketlarining 100 ga yaqin fotosuratlari (turli rakurslardan olingan) va 20 ga yaqin tartib xatoliklari bor edi. Va shu bilan birga, topshiriqni buyurtma qilganlar 90% tasniflash muvaffaqiyatiga erishishni xohlashdi. Natijada, men ML holda yechim taqdimotini tayyorladim, backender katalog asosida taqdimot tayyorladi va birgalikda taqdimotlarni yakunlab, ularni Urban Tech Challenge ga yubordik. Ushbu bosqichda har bir ishtirokchining motivatsiyasi va hissasi aniqlandi. Dizaynerimiz muhokamalarda qatnashmadi, kech javob berdi va hatto taqdimotda o'zi haqidagi ma'lumotlarni so'nggi daqiqada to'ldirdi, umuman olganda, shubhalar paydo bo'ldi.

Natijada, biz DPiIR topshirig'ini topshirdik va EFKOdan o'tmaganimizdan umuman xafa bo'lmadik, chunki bu vazifa bizga, yumshoq qilib aytganda, g'alati tuyuldi.

5. Hakatonga tayyorgarlik. Nihoyat, xakatonda qatnashishimiz ma'lum bo'lgach, biz tayyorgarlikni boshladik. Va bu erda men hackathon boshlanishidan bir hafta oldin kod yozishni boshlashni qo'llab-quvvatlamayman. Hech bo'lmaganda, siz asboblarni sozlamasdan va birinchi marta xakatonda sinab ko'rishga qaror qilgan ba'zi bir lib xatolariga duch kelmasdan, darhol ishlashni boshlashingiz mumkin bo'lgan qozonga ega bo'lishingiz kerak. Men hackathonga kelgan va loyiha qurilishini o'rnatish uchun 2 kun sarflagan burchak muhandislari haqidagi hikoyani bilaman, shuning uchun hamma narsa oldindan tayyorlanishi kerak. Biz mas'uliyatni quyidagicha taqsimlashni niyat qildik: backender Internetni tekshiradigan va barcha to'plangan ma'lumotlarni ma'lumotlar bazasiga joylashtiradigan brauzerlarni yozadi, men esa node.js-da ushbu ma'lumotlar bazasiga so'rov yuboradigan va ma'lumotlarni old tomonga yuboradigan API yozaman. Shu munosabat bilan men express.js yordamida oldindan server tayyorladim va reaksiyada front-end tayyorladim. Men CRA dan foydalanmayman, men har doim veb-paketni o'zim uchun moslashtiraman va bu qanday xavf tug'dirishi mumkinligini juda yaxshi bilaman (burchak ishlab chiquvchilari haqidagi hikoyani eslang). Shu nuqtada, men nimani qo'yishim haqida tasavvurga ega bo'lish uchun dizaynerimizdan interfeys shablonlarini yoki hech bo'lmaganda maketlarni so'radim. Nazariy jihatdan, u ham o'zi tayyorgarlik ko'rishi va ularni biz bilan muvofiqlashtirishi kerak, ammo men hech qachon javob olmadim. Natijada men dizaynni eski loyihalarimdan biridan oldim. Va u tezroq ishlay boshladi, chunki ushbu loyiha uchun barcha uslublar allaqachon yozilgan. Demak, xulosa: dizayner har doim ham jamoaga kerak emas))). Biz hackathonga shu ishlanmalar bilan keldik.

6. Hakatonda ishlash. Birinchi marta jamoamni jonli efirda ko'rganman, faqat Markaziy tarqatish markazida hakaton ochilishida. Biz uchrashdik, yechim va muammo ustida ishlash bosqichlarini muhokama qildik. Ochilishdan keyin Qizil Oktyabrga avtobusda borishimiz kerak bo'lsa-da, biz soat 9.00 ga yetib borishga rozi bo'lib, uxlash uchun uyga ketdik. Nega? Tashkilotchilar ishtirokchilardan maksimal darajada foydalanishni xohlashdi, shuning uchun ular shunday jadval tuzdilar. Ammo, mening tajribamga ko'ra, siz bir kecha uxlamasdan odatdagidek kodlashingiz mumkin. Ikkinchisiga kelsak, men endi ishonchim komil emas. Hakaton - bu marafon, siz o'z kuchingizni to'g'ri hisoblashingiz va rejalashtirishingiz kerak. Qolaversa, tayyorgarlik ko'rdik.

Urban Tech Challenge xakatonida Big Data trekini qanday va nima uchun yutib oldik

Shuning uchun, uxlab yotganimizdan so'ng, soat 9.00 da biz Devocracyning oltinchi qavatida o'tirdik. Shunda dizaynerimiz kutilmaganda noutbuki yo‘qligini va uyda ishlashini, telefon orqali muloqot qilishimizni ma’lum qildi. Bu oxirgi tomchi edi. Shunday qilib, biz jamoa nomini o'zgartirmagan bo'lsak-da, to'rtdan uchga o'tdik. Shunga qaramay, bu biz uchun katta zarba bo'lmadi, menda allaqachon eski loyihaning dizayni bor edi. Umuman olganda, dastlab hamma narsa muammosiz va rejaga muvofiq o'tdi. Biz ma'lumotlar bazasiga (biz neo4j-dan foydalanishga qaror qildik) tashkilotchilarning innovatsion kompaniyalari ma'lumotlar to'plamini yukladik. Men yozishni boshladim, keyin node.js-ni oldim va keyin ishlar noto'g'ri keta boshladi. Men hech qachon neo4j bilan ishlamagan edim va dastlab men ushbu ma'lumotlar bazasi uchun ishlaydigan drayverni qidirdim, keyin men so'rovni qanday yozishni tushundim va keyin bu ma'lumotlar bazasi so'ralganda, ob'ektlarni qaytarib berishini bilib hayron bo'ldim. tugun ob'ektlari massivi va ularning qirralari shakli. Bular. Men TIN bo'yicha tashkilot va undagi barcha ma'lumotlarni so'raganimda, bitta tashkilot ob'ekti o'rniga menga ushbu tashkilot va ular o'rtasidagi munosabatlar to'g'risidagi ma'lumotlarni o'z ichiga olgan uzoq ob'ektlar majmuasi qaytarildi. Men butun massivni bosib o'tgan xaritachini yozdim va barcha ob'ektlarni ularning tashkil etilishiga ko'ra bitta ob'ektga yopishtirdim. Ammo jangda, 8 ming tashkilotning ma'lumotlar bazasini so'rashda, u juda sekin, taxminan 20-30 soniya davomida bajarildi. Men optimallashtirish haqida o'ylay boshladim ... Va keyin biz o'z vaqtida to'xtadik va MongoDB ga o'tdik va bu bizga 30 daqiqa davom etdi. Neo4jda jami 5 soatga yaqin vaqt yo'qolgan.

Esingizda bo'lsin, hech qachon texnologiyani sizga tanish bo'lmagan xakatonga olib bormang, kutilmagan hodisalar bo'lishi mumkin. Ammo, umuman olganda, bu muvaffaqiyatsizlikdan tashqari, hamma narsa reja bo'yicha ketdi. Va 9 dekabr kuni ertalab bizda to'liq ishlaydigan ariza bor edi. Kunning qolgan qismida biz unga qo'shimcha funktsiyalar qo'shishni rejalashtirdik. Kelajakda men uchun hamma narsa nisbatan muammosiz o'tdi, ammo backender qidiruv tizimlarida, yuridik shaxslar agregatorlarining spamlarida o'z skanerlarini taqiqlash bilan bog'liq ko'plab muammolarga duch keldi, ular so'rov paytida qidiruv natijalarining birinchi joylarida paydo bo'ldi. har bir aniq kompaniya uchun. Ammo bu haqda uning o'zi aytib bergani ma'qul. Men qo'shgan birinchi qo'shimcha xususiyat to'liq ism bo'yicha qidirish edi. VKontakte bosh direktori. Bir necha soat davom etdi.

Shunday qilib, bizning ilovamizdagi kompaniya sahifasida bosh direktorning avatarlari, uning VKontakte sahifasiga havola va boshqa ma'lumotlar paydo bo'ldi. Bu bizga g'alaba keltirmagan bo'lishi mumkin bo'lsa-da, kekdagi yoqimli olcha edi. Keyin men ba'zi tahlillarni o'tkazmoqchi edim. Ammo variantlarni uzoq vaqt qidirishdan so'ng (UI bilan juda ko'p nuanslar bor edi), men iqtisodiy faoliyat kodi bo'yicha tashkilotlarning eng oddiy yig'ilishiga qaror qildim. Kechqurun, so'nggi soatlarda men innovatsion mahsulotlarni namoyish qilish uchun shablonni tayyorladim (bizning ilovamizda "Mahsulotlar va xizmatlar" bo'limi bo'lishi kerak edi), garchi backend bunga tayyor emas edi. Shu bilan birga, ma'lumotlar bazasi sakrash va chegaralar bilan shishib ketdi, skanerlar ishlashni davom ettirdi, innovatsion matnlarni innovatsion bo'lmaganlardan ajratish uchun backender NLP bilan tajriba o'tkazdi))). Ammo yakuniy taqdimot vaqti allaqachon yaqinlashib qolgan edi.

7. Taqdimot. O'z tajribamdan shuni aytishim mumkinki, siz taqdimotni muddatidan 3-4 soat oldin tayyorlashga o'tishingiz kerak. Ayniqsa, agar u video bilan bog'liq bo'lsa, uni suratga olish va tahrirlash juda ko'p vaqtni oladi. Bizda video bo'lishi kerak edi. Bizda bu bilan shug'ullanadigan va boshqa bir qator tashkiliy masalalarni hal qilgan maxsus odam bor edi. Shu munosabat bilan biz oxirgi daqiqagacha o'zimizni kodlashdan chalg'itmadik.

8. Pitch. Taqdimotlar va finallar alohida ish kunida (dushanba) o‘tkazilgani menga yoqmadi. Bu erda, katta ehtimol bilan, tashkilotchilarning ishtirokchilarni maksimal darajada siqib chiqarish siyosati davom etdi. Men ishdan ta'til olishni rejalashtirmagandim, faqat finalga kelishni xohlardim, garchi jamoamning qolgan a'zolari dam olishgan. Biroq, hakatonga bo'lgan hissiy sho'ng'in allaqachon shu qadar yuqori ediki, ertalab soat 8 da men o'z jamoamning chatida (hakaton jamoasi emas, balki ishchi jamoasi) kunni o'z mablag'imga o'tkazayotganimni yozdim va markazga bordim. maydonchalar uchun ofis. Bizning muammomizda juda ko'p sof ma'lumotlar olimlari bor edi va bu muammoni hal qilish yondashuviga katta ta'sir ko'rsatdi. Ko'pchilik yaxshi DSga ega edi, lekin hech kimning ishlaydigan prototipi yo'q edi, ko'pchilik qidiruv tizimlarida o'z brauzerlarining taqiqlarini aylanib o'tolmadi. Biz ishlaydigan prototipga ega yagona jamoa edik. Va biz muammoni qanday hal qilishni bildik. Oxir-oqibat, biz eng kam raqobatbardosh vazifani tanlaganimizdan juda baxtiyor bo'lsak ham, trekda g'alaba qozondik. Boshqa treklardagi maydonlarga qarab, u erda hech qanday imkoniyat yo'qligini angladik. Yana shuni aytmoqchimanki, hakamlar hay'ati bizga juda omadli keldi, ular kodni sinchkovlik bilan tekshirishdi. Va sharhlarga ko'ra, bu hamma treklarda sodir bo'lmadi.

9. Final. Kodni ko'rib chiqish uchun bir necha bor hakamlar hay'atiga chaqirilganimizdan so'ng, biz nihoyat barcha muammolarni hal qildik, deb o'ylab, Burger Kingga tushlik qilish uchun bordik. U erda tashkilotchilar bizga yana qo'ng'iroq qilishdi, biz tezda buyurtmalarimizni yig'ib, orqaga qaytishimiz kerak edi.

Tashkilotchi bizga qaysi xonaga kirishimiz kerakligini ko'rsatdi va kirganimizdan so'ng biz g'olib jamoalar uchun notiqlik bo'yicha trening mashg'ulotida bo'ldik. Sahnada chiqishi kerak bo'lgan yigitlar yaxshi zaryadlangan, hamma haqiqiy shoumenlardek chiqishgan.

Tan olishim kerakki, finalda boshqa yo'nalishlarning eng kuchli jamoalari fonida biz rangpar ko'rindik; davlat buyurtmachisi nominatsiyasida g'alaba ko'chmas mulk texnologik treki jamoasiga munosib bo'ldi. O'ylaymanki, bizning trekdagi g'alabamizga hissa qo'shgan asosiy omillar: tayyor blankaning mavjudligi, buning natijasida biz tezda prototip yasashga muvaffaq bo'ldik, prototipda "e'tiborga sazovor joylar" ning mavjudligi (bosh direktorlarni qidirish). ijtimoiy tarmoqlarda) va bizning qo'llab-quvvatlovchimizning NLP qobiliyatlari , bu ham hakamlar hay'atini juda qiziqtirdi.

Urban Tech Challenge xakatonida Big Data trekini qanday va nima uchun yutib oldik

Xulosa qilib aytganda, bizni qo'llab-quvvatlagan barchaga, trekimiz hakamlar hay'atiga, Evgeniy Evgrafievga (hakatonda biz hal qilgan muammo muallifi) va albatta xakaton tashkilotchilariga an'anaviy rahmat. Bu, ehtimol, men ishtirok etgan eng katta va eng zo'r xakaton bo'ldi, men faqat yigitlarga kelajakda ham shunday yuqori standartlarni saqlab qolishlarini tilayman!

Manba: www.habr.com

a Izoh qo'shish