Бид Urban Tech Challenge хакатон дээр хэрхэн, яагаад Big Data замд түрүүлэв

Намайг Дмитрий гэдэг. Мөн би Big Data зам дээр манай баг хэрхэн Urban Tech Challenge хакатон тэмцээний финалд шалгарсан тухай ярихыг хүсч байна. Энэ бол миний оролцсон анхны хакатон биш, шагнал авсан анхных ч биш гэдгийг би шууд хэлье. Үүнтэй холбогдуулан би түүхээрээ хакатоны салбарын талаар ерөнхий ажиглалт, дүгнэлт хийж, Urban Tech Challenge дууссаны дараа шууд онлайнаар гарч ирсэн сөрөг тоймуудын эсрэг өөрийн үзэл бодлоо илэрхийлэхийг хүсч байна. жишээ энэ нь).

Тиймээс эхлээд зарим ерөнхий ажиглалтууд.

1. Цөөн тооны хүмүүс хакатон бол шилдэг кодлогчдын ялдаг спортын тэмцээн гэж гэнэнээр боддог нь гайхмаар. Энэ бол буруу. Хакатон зохион байгуулагчид өөрсдөө юу хүсч байгаагаа мэдэхгүй байх тохиолдлыг би авч үздэггүй (би үүнийг бас харсан). Гэхдээ дүрмээр бол хакатон зохион байгуулж буй компани өөрийн зорилгоо биелүүлдэг. Тэдний жагсаалт өөр байж болно: энэ нь зарим асуудлыг шийдэх техникийн шийдэл, шинэ санаа, хүмүүсийг хайх гэх мэт байж болно. Эдгээр зорилгууд нь ихэвчлэн үйл явдлын хэлбэр, цаг хугацаа, онлайн/офлайн, даалгавруудыг хэрхэн боловсруулах (мөн тэдгээрийг огт боловсруулах эсэх), хакатон дээр кодын хянан үзэх эсэх гэх мэтийг тодорхойлдог. Багууд болон тэдний хийсэн ажлыг энэ үүднээс үнэлдэг. Компанид шаардлагатай оноог хамгийн сайн гүйцэтгэсэн багууд ялж, олонх нь үнэхээр спортын тэмцээнд оролцож байна гэж бодож, санамсаргүйгээр, санамсаргүй байдлаар энэ цэгт хүрдэг. Оролцогчдыг идэвхжүүлэхийн тулд зохион байгуулагчид ядаж спортын орчин, тэгш нөхцөлийг бүрдүүлэх ёстой, эс тэгвээс дээрх тойм шиг сөрөг долгионыг хүлээж авах болно гэдгийг миний ажиглалт харуулж байна. Гэхдээ бид ухардаг.

2. Эндээс дараах дүгнэлт гарч байна. Зохион байгуулагчид хакатонд өөрсдийн бүтээлээр оролцохыг сонирхож, заримдаа энэ зорилгоор онлайн захидал харилцааны шатыг тусгайлан зохион байгуулдаг. Энэ нь илүү хүчтэй гаралтын шийдлүүдийг гаргах боломжийг олгодог. "Өөрийн ажил" гэсэн ойлголт нь маш харьцангуй ойлголт бөгөөд ямар ч туршлагатай хөгжүүлэгч анхны ажилдаа хуучин төслүүдийнхээ олон мянган мөр кодыг цуглуулж чадна. Мөн энэ нь урьдчилан бэлтгэсэн бүтээн байгуулалт болох уу? Гэхдээ ямар ч тохиолдолд би алдартай меме хэлбэрээр илэрхийлсэн дүрэм үйлчилнэ.

Бид Urban Tech Challenge хакатон дээр хэрхэн, яагаад Big Data замд түрүүлэв

Ялахын тулд танд ямар нэгэн зүйл, өрсөлдөөний давуу тал байх ёстой: өмнө нь хийж байсан ижил төстэй төсөл, тодорхой сэдвээр мэдлэг, туршлага эсвэл хакатон эхлэхээс өмнө бэлэн ажил хийсэн байх ёстой. Тийм ээ, энэ бол спорт биш юм. Тийм ээ, энэ нь зарцуулсан хүчин чармайлтын үнэ цэнэтэй зүйл биш байж магадгүй юм (энд 3 мянган шагналын төлөө 100 долоо хоногийн турш шөнийн цагаар кодлох нь үнэ цэнэтэй эсэхийг хүн бүр өөрөө шийддэг, бүх багт хувааж авдаг, тэр байтугай үүнийг авахгүй байх эрсдэлтэй). Гэхдээ ихэнхдээ энэ нь урагшлах цорын ганц боломж юм.

3. Багийн сонголт. Хакатон чат дээр миний анзаарсанчлан, олон хүн энэ асуудалд нэлээд хөнгөмсөг ханддаг (гэхдээ энэ нь хакатон дахь үр дүнг тодорхойлох хамгийн чухал шийдвэр юм). Үйл ажиллагааны олон салбарт (спорт, хакатон аль аль нь) хүчирхэг хүмүүс хүчтэйтэй, сул нь сул доройтой, ухаалаг нь ухаалагтай нэгдэх хандлагатай байдгийг би харсан, ер нь та ийм санааг олж авдаг ... Чат дээр ийм зүйл тохиолддог: хүч чадал багатай программистууд шууд л хагацдаг, хакатонд үнэ цэнэтэй ур чадваргүй хүмүүс чатанд удаан сууж, хэрэв хэн нэгэн үүнийг авах байсан бол гэсэн зарчмаар багаа сонгодог. . Зарим хакатонуудад багуудад санамсаргүй байдлаар хуваарилах дасгал хийдэг бөгөөд санамсаргүй багууд одоо байгаа багуудаасаа дордохгүй байна гэж зохион байгуулагчид мэдэгддэг. Гэхдээ миний ажигласнаар урам зоригтой хүмүүс дүрмээр бол өөрсдөө багаа олдог, хэрэв хэн нэгнийг томилох шаардлагатай бол ихэнх нь хакатонд ирдэггүй.

Багийн бүрэлдэхүүний хувьд энэ нь маш хувь хүн бөгөөд даалгавараас ихээхэн хамаардаг. Хамгийн бага амьдрах чадвартай багийн бүрэлдэхүүн бол дизайнер - урд эсвэл урд хэсэг - арын хэсэг гэж би хэлж чадна. Гэхдээ зөвхөн урд талын тоглогчдоос бүрдсэн багууд ялсан, node.js дээр энгийн back-end нэмсэн эсвэл React Native дээр гар утасны програм хийсэн тохиолдлуудыг би мэднэ; эсвэл зөвхөн энгийн зохион байгуулалт хийсэн арын хүмүүсээс. Ерөнхийдөө бүх зүйл маш хувь хүн бөгөөд даалгавараас хамаарна. Хакатонд оролцох багаа сонгох төлөвлөгөө маань дараах байдалтай байсан: Би баг цуглуулах юм уу front-end - back-end - дизайнер (би өөрөө урд талын хүн) гэх мэт багт элсэхээр төлөвлөж байсан. Тэгээд бидэнтэй нэгдэх урилгыг хүлээн авсан питон дэмжигч болон дизайнертай маш хурдан чатлаж эхлэв. Хэсэг хугацааны дараа хакатон тэмцээнд түрүүлж байсан туршлагатай бизнесийн шинжээч охин бидэнтэй нэгдсэн нь түүнийг бидэнтэй нэгдэх асуудлыг шийдсэн. Богинохон уулзалт хийсний дараа бид өөрсдийгөө U4 (URBAN 4, urban four) гэж гайхалтай дөрөвтэй зүйрлэхээр шийдэв. Мөн тэд манай телеграм сувгийн аватар дээр зохих зургийг тавьсан.

4. Даалгавар сонгох. Би аль хэдийн хэлсэнчлэн, та өрсөлдөх давуу талтай байх ёстой, хакатон даалгаврыг үүн дээр үндэслэн сонгосон. Үүн дээр үндэслэн харлаа ажлын жагсаалт Тэдний нарийн төвөгтэй байдлыг үнэлж үзээд бид DPiIR-ийн шинэлэг аж ахуйн нэгжүүдийн каталог, EFKO-ийн чатбот гэсэн хоёр ажлыг шийдсэн. DPIiR-ийн даалгаврыг дэмжигч сонгосон, EFKO-ийн даалгаврыг би сонгосон, учир нь node.js болон DialogFlow дээр чатбот бичиж байсан туршлагатай. EFKO-ийн даалгаварт мөн ML-д хамрагдсан; Надад ML-ийн талаар тийм ч өргөн биш туршлага бий. Асуудлын нөхцлөөс харахад ML хэрэгслийг ашиглан үүнийг шийдэх боломжгүй юм шиг надад санагдсан. Энэ мэдрэмж намайг Urban Tech Challenge уулзалтад очиход илүү хүчтэй болсон бөгөөд тэнд зохион байгуулагчид надад EFKO-ийн мэдээллийн багцыг үзүүлсэн бөгөөд тэнд бүтээгдэхүүний зохион байгуулалтын 100 орчим зураг (өөр өнцгөөс авсан) болон 20 орчим төрлийн бүдүүвчийн алдаа байсан. Үүний зэрэгцээ даалгаврыг захиалсан хүмүүс ангиллын амжилтыг 90% -д хүргэхийг хүсчээ. Үүний үр дүнд би ML-гүй шийдлийн танилцуулгыг бэлтгэж, ивээн тэтгэгч нь каталог дээр тулгуурлан илтгэл бэлдэж, илтгэлүүдийг дуусгасны дараа бид Urban Tech Challenge-д илгээсэн. Энэ үе шатанд оролцогч бүрийн урам зориг, оруулсан хувь нэмэр аль хэдийн илэрсэн. Манай дизайнер хэлэлцүүлэгт оролцоогүй, оройтож хариулсан, тэр ч байтугай эцсийн мөчид өөрийнхөө тухай мэдээллийг бөглөсөн, ерөнхийдөө эргэлзээ төрж байсан.

Үүний үр дүнд бид DPiIR-ийн даалгаврыг давсан бөгөөд EFKO-д тэнцээгүйдээ огтхон ч сэтгэл дундуур байсангүй, учир нь энэ даалгавар нь бидэнд хачирхалтай санагдаж байсан.

5. Хакатон тэмцээнд бэлдэж байна. Эцэст нь хакатонд тэнцсэн нь тодорхой болоход бид бэлтгэлээ базааж эхэлсэн. Энд би хакатон эхлэхээс долоо хоногийн өмнө код бичиж эхлэхийг зөвлөдөггүй. Наад зах нь та багаж хэрэгслийг тохируулах шаардлагагүй, хакатон дээр анх удаа оролдохоор шийдсэн зарим програмын алдаатай тулгарахгүйгээр шууд ажиллаж эхлэх боломжтой зуухтай байх ёстой. Би хакатонд ирж, төслийн бүтээн байгуулалтад 2 хоног зарцуулсан өнцгийн инженерүүдийн түүхийг мэддэг тул бүх зүйлийг урьдчилан бэлтгэх хэрэгтэй. Бид хариуцлагыг дараах байдлаар хуваарилахыг зорьсон: backender нь интернетээр хайдаг мөлхөгчдийг бичиж, цуглуулсан бүх мэдээллийг мэдээллийн санд оруулдаг бол би node.js дээр API бичиж, энэ мэдээллийн сангаас асууж, өгөгдлийг урд тал руу илгээдэг. Үүнтэй холбогдуулан би экспресс.js ашиглан серверийг урьдчилан бэлтгэж, хариу үйлдэл хийх фронтыг бэлтгэсэн. Би CRA ашигладаггүй, би үргэлж вэб багцыг өөртөө тохируулдаг бөгөөд энэ нь ямар эрсдэл учруулж болохыг маш сайн мэддэг (өнцгийн хөгжүүлэгчдийн тухай түүхийг санаарай). Энэ үед би юу хийхээ ойлгохын тулд интерфэйсийн загвар эсвэл ядаж загвар зохион бүтээгчээсээ хүссэн юм. Онолын хувьд тэр өөрөө бэлтгэлээ хийж, бидэнтэй зохицуулах ёстой, гэхдээ би хэзээ ч хариулт аваагүй. Үүний үр дүнд би хуучин төслүүдийнхээ нэг загварыг зээлсэн. Энэ төслийн бүх хэв маягийг аль хэдийн бичсэн байсан тул энэ нь бүр ч хурдан ажиллаж эхлэв. Эндээс дүгнэлт: дизайнер нь багт үргэлж хэрэггүй байдаг))). Бид хакатонд эдгээр бүтээн байгуулалттай ирсэн.

6. Хакатон дээр ажиллах. Анх Төв Түгээх Төвд болсон хакатон тэмцээний нээлтийн үеэр л багаа шууд харсан. Бид уулзаж, асуудлыг шийдвэрлэх арга зам, ямар үе шаттай ажиллах талаар ярилцлаа. Нээлтийн дараа бид Улаан аравдугаар сар руу автобусаар явах ёстой байсан ч 9.00 цагт очихыг зөвшөөрч гэртээ унтлаа. Яагаад? Зохион байгуулагчид оролцогчдоос хамгийн их ашиг хүртэхийг хүссэн бололтой яг ийм хуваарь гаргажээ. Гэхдээ миний туршлагаас харахад та нэг шөнө унтахгүйгээр энгийн кодлох боломжтой. Хоёрдахь зүйлийн хувьд би итгэлтэй байхаа больсон. Хакатон бол марафон бөгөөд та хүч чадлаа зөв тооцоолж, төлөвлөх хэрэгтэй. Түүнээс гадна бид бэлтгэлтэй байсан.

Бид Urban Tech Challenge хакатон дээр хэрхэн, яагаад Big Data замд түрүүлэв

Тиймээс бид унтаад 9.00 цагийн үед Dewocracy-ийн 4 давхарт сууж байсан. Тэгтэл манай дизайнер санаанд оромгүй байдлаар зөөврийн компьютергүй, гэрээсээ ажиллана гэж мэдэгдээд бид утсаар холбогдоно. Энэ бол сүүлчийн дусал байсан. Ингээд бид багийн нэрийг өөрчлөөгүй ч дөрвөөс гурав руу шилжсэн. Дахин хэлэхэд, энэ нь бидний хувьд тийм ч том цохилт биш байсан, би хуучин төслийн загвартай байсан. Ерөнхийдөө бүх зүйл эхэндээ маш жигд, төлөвлөгөөний дагуу явагдсан. Бид мэдээллийн санд (бид neo4j ашиглахаар шийдсэн) зохион байгуулагчдын шинэлэг компаниудын мэдээллийн багцыг ачаалсан. Би бичвэр бичиж эхэлсэн, дараа нь node.js-г авсны дараа бүх зүйл буруу ажиллаж эхэлсэн. Би өмнө нь хэзээ ч neo8j-тэй ажиллаж байгаагүй бөгөөд эхлээд энэ мэдээллийн санд ажиллах драйвер хайж байсан, дараа нь би асуулга хэрхэн бичихээ олж мэдсэн бөгөөд дараа нь энэ мэдээллийн сан нь асуулгад тухайн өгөгдлийн санд байгаа объектуудыг буцаадаг болохыг олж мэдээд гайхсан. зангилааны объектуудын массив хэлбэр ба тэдгээрийн ирмэгүүд. Тэдгээр. Би нэг байгууллагын объектын оронд TIN-ээр байгууллага болон түүн дээрх бүх өгөгдлийг хүсэх үед надад энэ байгууллагын мэдээлэл болон тэдгээрийн хоорондын харилцааг агуулсан урт массивыг буцааж өгсөн. Би бүх массивыг дамжиж, бүх объектыг зохион байгуулалтын дагуу нэг объект болгон наасан зураглагчийг бичсэн. Гэвч тулалдаанд 20 мянган байгууллагын мэдээллийн санд хүсэлт гаргахад маш удаан буюу 30-30 секундын хугацаанд гүйцэтгэсэн. Би оновчлолын талаар бодож эхэлсэн ... Тэгээд бид цаг тухайд нь зогсоож, MongoDB руу шилжихэд 4 орчим минут зарцуулсан. Нийтдээ neo5j дээр XNUMX цаг орчим хугацаа алдсан.

Танихгүй хакатон тэмцээнд хэзээ ч технологийг бүү ав, гэнэтийн зүйл тохиолдож магадгүй гэдгийг санаарай. Гэхдээ ерөнхийдөө энэ бүтэлгүйтлээс гадна бүх зүйл төлөвлөгөөний дагуу явагдсан. 9-р сарын XNUMX-ний өглөө бид бүрэн ажиллаж байгаа програмтай болсон. Өдрийн үлдсэн хугацаанд бид түүнд нэмэлт функцуудыг нэмэхээр төлөвлөж байсан. Ирээдүйд миний хувьд бүх зүйл харьцангуй жигд болсон боловч арын ажилтан хайлтын системд өөрийн мөлхөгчдийг хориглох, хуулийн этгээдийн нэгтгэгчийн спам зэрэг олон асуудалтай тулгарсан бөгөөд энэ нь хайлтын үр дүнгийн эхний байранд орж ирсэн. тодорхой компани бүрийн хувьд. Гэхдээ тэр өөрөө энэ тухай хэлсэн нь дээр. Миний нэмсэн анхны нэмэлт функц бол бүтэн нэрээр хайх явдал байв. ВКонтакте компанийн ерөнхий захирал. Хэдэн цаг зарцуулсан.

Тиймээс манай програмын компанийн хуудсан дээр ерөнхий захирлын аватар, түүний ВКонтакте хуудасны холбоос болон бусад мэдээлэл гарч ирэв. Хэдийгээр энэ нь бидэнд ялалтыг өгөөгүй ч гэсэн бялуу дээр сайхан интоор байсан. Дараа нь би зарим аналитик ажиллуулахыг хүссэн. Гэхдээ сонголтуудыг удаан хайсны дараа (UI-тай холбоотой олон нюансууд байсан) би байгууллагуудыг эдийн засгийн үйл ажиллагааны кодоор хамгийн энгийн нэгтгэх талаар шийдсэн. Орой нь, сүүлийн хэдэн цагт би шинэлэг бүтээгдэхүүнийг харуулах загвар гаргаж байсан (манай програмд ​​Бүтээгдэхүүн, үйлчилгээний хэсэг байх ёстой), гэхдээ арын хэсэг нь үүнд бэлэн биш байсан. Үүний зэрэгцээ мэдээллийн сан хурдацтай хөгжиж, мөлхөгчид үргэлжлүүлэн ажиллаж, ивээн тэтгэгч нь шинэлэг текстийг шинэлэг бус текстээс ялгахын тулд NLP-ийг туршиж үзсэн))). Гэвч эцсийн илтгэл тавих цаг аль хэдийн ойртож байв.

7. Илтгэл. Өөрийнхөө туршлагаас харахад та танилцуулга хийх хугацаа болохоос 3-4 цагийн өмнө бэлдэх хэрэгтэй гэж хэлж болно. Ялангуяа энэ нь видеотой холбоотой бол зураг авалт, засварлахад маш их цаг зарцуулдаг. Бид видео бичлэгтэй байх ёстой байсан. Бидэнд энэ асуудлыг хариуцаж, зохион байгуулалтын бусад олон асуудлыг шийдсэн тусгай хүн байсан. Үүнтэй холбогдуулан бид эцсийн мөч хүртэл кодлохоос сатаарсангүй.

8. Дуу чимээ. Илтгэл болон эцсийн шатны шалгаруулалтыг ажлын өдөр (Даваа гариг) тус тусад нь зохион байгуулсан нь надад таалагдаагүй. Эндээс хамгийн их оролцогчдыг шахах зохион байгуулагчдын бодлого үргэлжилсэн байх. Би ажлаасаа чөлөө авахаар төлөвлөөгүй, зөвхөн шигшээ тоглолтод оролцохыг хүссэн ч манай багийн бусад гишүүд амарсан. Гэсэн хэдий ч хакатон дахь сэтгэл хөдлөл нь аль хэдийн маш өндөр байсан тул би өглөөний 8 цагт багийнхаа чат руу (хакатон биш ажлын баг) өөрийн зардлаар өдрийг өнгөрөөж байна гэж бичээд төв рүү явлаа. талбайн оффис. Бидний асуудал олон тооны цэвэр өгөгдөл судлаачидтай болсон бөгөөд энэ нь асуудлыг шийдвэрлэх арга барилд ихээхэн нөлөөлсөн. Олонхи нь сайн DS-тэй байсан ч хэн ч ажиллаж байгаа прототипгүй байсан тул олон нь хайлтын систем дэх мөлхөгчдийн хоригийг тойрч гарч чадахгүй байв. Бид ажиллаж байгаа прототиптэй цорын ганц баг байсан. Мөн бид асуудлыг хэрхэн шийдвэрлэхээ мэддэг байсан. Эцэст нь бид хамгийн бага өрсөлдөөнтэй даалгаврыг сонгосондоо маш азтай байсан ч энэ замд түрүүлэв. Бусад замуудын талбайг хараад бид тэнд ямар ч боломж байхгүй гэдгийг ойлгосон. Бид тангарагтны бүрэлдэхүүнд маш азтай байсан гэдгийг хэлмээр байна, тэд кодыг сайтар шалгаж үзсэн. Шүүмжээс харахад энэ нь бүх замд тохиолдоогүй.

9. Төгсгөл. Бид хэд хэдэн удаа тангарагтны бүрэлдэхүүнд дуудаж, кодыг шалгахаар дуудагдсаны дараа бид бүх асуудлаа шийдсэн гэж бодоод Burger King-д үдийн хоол идэхээр явлаа. Тэнд зохион байгуулагчид биднийг дахин дуудсан тул бид захиалгаа хурдан баглаад буцах хэрэгтэй болсон.

Зохион байгуулагч бидэнд аль өрөөнд орох шаардлагатайг зааж өгсөн бөгөөд бид ороход ялагч багуудад илтгэх урлагын сургалтанд суулаа. Тайзан дээр гарах ёстой байсан залуус маань гайгүй, бүгд жинхэнэ шоучин шиг гарч ирсэн.

Финалын тоглолтод бусад уралдааны хамгийн хүчирхэг багуудын дунд бид цонхийсон харагдаж байсныг би хүлээн зөвшөөрөх ёстой; засгийн газрын үйлчлүүлэгчид нэр дэвшихэд үл хөдлөх хөрөнгийн технологийн багийнхан ялалт байгууллаа. Бидний зам дээр ялалт байгуулахад нөлөөлсөн гол хүчин зүйлүүд нь: бэлэн хоосон зай байгаа бөгөөд үүний ачаар бид прототипийг хурдан хийж чадсан, прототипт "онцлох үйл явдлууд" байгаа нь (Гүйцэтгэх захирлуудыг хайх) байсан гэж би бодож байна. нийгмийн сүлжээн дэх) болон манай ивээн тэтгэгчийн NLP ур чадварууд нь тангарагтныхныг ихэд сонирхдог.

Бид Urban Tech Challenge хакатон дээр хэрхэн, яагаад Big Data замд түрүүлэв

Эцэст нь хэлэхэд, биднийг дэмжсэн бүх хүмүүст, манай уралдааны шүүгчид, Евгений Евграфиев (хакатон дээр шийдсэн асуудлын зохиогч) болон мэдээж хакатон зохион байгуулагчдад уламжлалт талархал илэрхийлье. Энэ бол миний оролцож байсан хамгийн том, хамгийн гайхалтай хакатон байсан байх, би залуусаа ирээдүйд ийм өндөр стандарттай байгаасай гэж хүсэж байна!

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх