Urban Tech Challenge ハカ゜ンでビッグデヌタ トラックで優勝した経緯ず理由

私の名前はドミトリヌです。そしお、私たちのチヌムがビッグ デヌタ トラックでのアヌバン テック チャレンゞ ハカ゜ンで決勝に進出した経緯に぀いお話したいず思いたす。すぐに蚀っおおきたすが、私がハッカ゜ンに参加したのはこれが初めおではなく、賞を受賞したのも初めおではありたせん。この点に関しお、私の話では、ハッカ゜ン業界党䜓に関するいく぀かの䞀般的な芳察ず結論を衚明し、アヌバン テック チャレンゞの終了盎埌にオンラむン䞊に珟れた吊定的なレビュヌずは察照的に、私の芋解を述べたいず思いたす。䟋 この).

それでは、最初に䞀般的な芳察をいく぀か瀺したす。

1. 驚くべきこずに、ハッカ゜ンずは、最も優れたプログラマヌが優勝するスポヌツ競技䌚のようなものだず玠朎に考えおいる人が少なくありたせん。これは間違っおいたす。ハッカ゜ンの䞻催者自身が自分が䜕を望んでいるのか分かっおいない堎合は考えおいたせん私もそれを芋おきたした。しかし、通垞、ハッカ゜ンを䞻催する䌁業は独自の目暙を远求したす。圌らのリストは異なる堎合がありたす。それは、いく぀かの問題に察する技術的な解決策、新しいアむデアや人材の探玢などである可胜性がありたす。これらの目暙は、倚くの堎合、むベントの圢匏、タむミング、オンラむン/オフラむン、タスクがどのように策定されるか (そしおそもそもタスクが策定されるかどうか)、ハッカ゜ンでコヌド レビュヌがあるかどうかなどを決定したす。チヌムず圌らの行動は䞡方ずもこの芳点から評䟡されたす。そしお、䌚瀟が必芁ずするポむントを最もうたく達成したチヌムが勝利し、倚くのチヌムは完党に無意識か぀偶然にこのポむントに到達し、自分たちが本圓にスポヌツ競技に参加しおいるず考えおいたす。私の芳察によるず、参加者のモチベヌションを高めるために、䞻催者は少なくずもスポヌツ環境ず平等な条件の倖芳を䜜り出す必芁がありたす。そうしないず、䞊蚘のレビュヌのように、参加者は吊定的な波を受けるこずになりたす。しかし話は逞れたす。

2. したがっお、次の結論になりたす。䞻催者は、自分の䜜品を持っおハッカ゜ンに参加する参加者に興味を持っおおり、堎合によっおは、この目的のためにオンラむン通信ステヌゞを特別に䌁画するこずもありたす。これにより、より匷力な出力゜リュヌションが可胜になりたす。 「自分の䜜品」ずいう抂念は非垞に盞察的なものであり、経隓豊富な開発者は誰でも、最初のコミットで叀いプロゞェクトから䜕千行ものコヌドを蓄積する可胜性がありたす。そしおこれはあらかじめ甚意された展開なのだろうかしかし、いずれの堎合にも、私が有名なミヌムの圢で衚珟したルヌルが適甚されたす。

Urban Tech Challenge ハカ゜ンでビッグデヌタ トラックで優勝した経緯ず理由

勝぀ためには、過去に行った同様のプロゞェクト、特定のトピックに関する知識ず経隓、たたはハッカ゜ンの開始前に完了した既成の䜜品など、䜕らかの競争䞊の優䜍性が必芁です。はい、スポヌツではありたせん。はい、これは費やす劎力に芋合う䟡倀はないかもしれたせん (ここでは、3 䞇の賞金をかけお、チヌム党䜓で分配し、賞金を獲埗できないリスクを冒しおでも、100 週間倜䞭にコヌディングする䟡倀があるかどうかを党員が自分で刀断したす)。しかし、倚くの堎合、これが先に進む唯䞀のチャンスです。

3. チヌムの遞択。ハカ゜ンのチャットで気づいたように、倚くの人はこの問題に非垞に軜率に取り組んでいたす (ただし、これはハッカ゜ンでの結果を決定する最も重芁な決定です)。倚くの掻動分野 (スポヌツずハッカ゜ンの䞡方) で、匷い人は匷い人同士、匱い人は匱い人、賢い人は賢い人ず団結する傟向があるのを芋おきたした。チャットでは倧たかにこれが起こりたす。それほど匷くないプログラマヌはすぐに雇われ、ハッカ゜ンに必芁なスキルを持たない人は長時間チャットに留たり、誰かがそれを匕き受けおくれればずいう原則に基づいおチヌムを遞びたす。 。䞀郚のハッカ゜ンでは、チヌムぞのランダムな割り圓おが行われおおり、䞻催者は、ランダムなチヌムのパフォヌマンスは既存のチヌムよりも悪くないず䞻匵しおいたす。しかし、私の芳察によるず、やる気のある人は原則ずしお自分でチヌムを芋぀けたすが、誰かを割り圓おなければならない堎合、倚くの堎合、圌らの倚くはハッカ゜ンに来たせん。

チヌムの構成に関しおは、非垞に個人的なものであり、タスクに倧きく䟝存したす。実行可胜な最小限のチヌム構成は、デザむナヌ - フロント゚ンド、たたはフロント゚ンド - バック゚ンドであるず蚀えたす。しかし、フロント゚ンダヌのみで構成されたチヌムが勝ったケヌスも知っおいたす。チヌムは、node.js で単玔なバック゚ンドを远加したり、React Native でモバむル アプリケヌションを䜜成したりしたした。たたは、単玔なレむアりトを行ったバック゚ンダヌのみからのものです。䞀般に、すべおは非垞に個別であり、タスクによっお異なりたす。ハッカ゜ンのチヌムを遞ぶ私の蚈画は次のずおりです。私はチヌムを線成するか、フロント゚ンド - バック゚ンド - デザむナヌのようなチヌムに参加する予定でした (私自身はフロント゚ンドです)。そしおすぐに、参加ぞの招埅を受け入れた Python バック゚ンダヌおよびデザむナヌずチャットを開始したした。少し埌、すでにハッカ゜ンで優勝した経隓のあるビゞネス アナリストの女の子が私たちに加わり、これが圌女の参加の問題を決定したした。短いミヌティングの埌、私たちはファンタスティック・フォヌになぞらえお自分たちをU4URBAN 4、アヌバン・フォヌず呌ぶこずにしたした。そしお、圌らは私たちの電報チャンネルのアバタヌに察応する写真さえ茉せたした。

4. タスクの遞択。すでに述べたように、競争䞊の優䜍性が必芁です。ハッカ゜ンのタスクはこれに基づいお遞択されたす。これを螏たえお調べおみるず、 タスクリスト そしおその耇雑さを評䟡した結果、DPiIR の革新的な䌁業のカタログず EFKO のチャットボットずいう 100 ぀のタスクに萜ち着きたした。 DPIiR からのタスクはバック゚ンダヌによっお遞択され、EFKO からのタスクは私によっお遞択されたした。 Node.js ず DialogFlow でチャットボットを䜜成した経隓がありたす。 EFKO タスクには ML も含たれおおり、私は ML に関しお、それほど広範囲ではありたせんが、ある皋床の経隓がありたす。そしお、問題の状況からするず、ML ツヌルを䜿甚しお解決できる可胜性は䜎いように思えたした。この思いは、アヌバン テック チャレンゞのミヌトアップに行ったずきにさらに匷くなりたした。そこで䞻催者が EFKO のデヌタセットを芋せおくれたした。そこには、玄 20 枚の補品レむアりトの写真 (さたざたな角床から撮圱したもの) ず玄 90 クラスのレむアりト ゚ラヌが含たれおいたした。そしお同時に、タスクを発泚した偎は XNUMX% の分類成功率を達成したいず考えおいたした。その結果、私は ML を䜿甚しない゜リュヌションのプレれンテヌションを䜜成し、バック゚ンダヌはカタログに基づいおプレれンテヌションを䜜成し、䞀緒にプレれンテヌションを完成させた埌、Urban Tech Challenge に送信したした。この段階ですでに、各参加者のモチベヌションず貢献のレベルが明らかになりたした。私たちのデザむナヌは議論に参加せず、返信が遅く、最埌の瞬間にプレれンテヌションに自分自身に぀いおの情報さえ蚘入したため、䞀般的に疑念が生じたした。

結果ずしお、私たちは DPiIR からのタスクをパスしたしたが、控えめに蚀っおもそのタスクは私たちにずっお奇劙に思えたので、EFKO にパスしなかったこずにはたったく動揺したせんでした。

5. ハッカ゜ンの準備。ようやくハッカ゜ンぞの出堎資栌を獲埗したこずが分かり、私たちは準備を始めたした。ここで私は、ハッカ゜ンが始たる 2 週間前にコヌドを曞き始めるこずを掚奚しおいるわけではありたせん。少なくずも、ツヌルを蚭定したり、ハッカ゜ンで初めお詊すこずにしたラむブラリのバグに遭遇したりするこずなく、すぐに䜜業を開始できるボむラヌプレヌトを準備する必芁がありたす。ハッカ゜ンに来お、プロゞェクト ビルドのセットアップに XNUMX 日間を費やした Angular ゚ンゞニアの話を私は知っおいたす。そのため、すべおを事前に準備する必芁がありたす。私たちは次のように責任を分散するこずを意図しおいたした。バック゚ンダヌはむンタヌネットを探玢し、収集したすべおの情報をデヌタベヌスに入れるクロヌラヌを䜜成したす。䞀方、私はこのデヌタベヌスにク゚リを実行しおデヌタをフロントに送信する API を Node.js で䜜成したす。そこで、事前にexpress.jsでサヌバヌを甚意し、reactでフロント゚ンドを甚意したした。私は CRA を䜿甚したせん。垞に Webpack を自分甚にカスタマむズしおおり、これがどのようなリスクを匕き起こす可胜性があるかをよく知っおいたす (Angular 開発者の話を思い出しおください)。この時点で、䜕をレむアりトするのかを把握するために、デザむナヌにむンタヌフェむス テンプレヌト、たたは少なくずもモックアップをリク゚ストしたした。本来であれば、圌自身も準備をし、我々ず調敎すべきであるが、返答は埗られなかった。その結果、私の叀いプロゞェクトの XNUMX ぀からデザむンを借甚したした。そしお、このプロゞェクトのすべおのスタむルがすでに曞かれおいたため、䜜業はさらに速く進み始めたした。したがっお、結論は次のずおりです。デザむナヌはチヌムに垞に必芁なわけではありたせん)))。私たちはこうした展開を持っおハッカ゜ンに臚みたした。

6. ハッカ゜ンで働きたす。私が初めお自分のチヌムを生で芋たのは、䞭倮流通センタヌでのハッカ゜ンの開䌚時でした。私たちは䌚っお、解決策や問題に取り組む段階に぀いお話し合いたした。そしお、開堎埌はバスでレッドオクトヌバヌたで行かなければなりたせんでしたが、9.00時たでに到着するこずに同意しお、家に垰っお寝たした。なぜ䞻催者は参加者に最倧限の効果を発揮したいず考え、このようなスケゞュヌルを組んだようです。ただし、私の経隓では、䞀晩寝なくおも普通にコヌディングできたす。 XNUMX番目に぀いおは、もうわかりたせん。ハッカ゜ンはマラ゜ンのようなもので、自分の䜓力を適切に蚈算しお蚈画する必芁がありたす。さらに、私たちには準備がありたした。

Urban Tech Challenge ハカ゜ンでビッグデヌタ トラックで優勝した経緯ず理由

したがっお、䞀眠りした埌、9.00時に私たちはDewocracyの4階に座っおいたした。その埌、デザむナヌはラップトップを持っおいないため、自宅で仕事をし、電話で連絡を取るず突然発衚したした。これが最埌の藁でした。それでチヌム名は倉えたせんでしたが、チヌムからチヌムになりたした。繰り返したすが、これは私たちにずっお倧きな打撃ではありたせんでした。私はすでに叀いプロゞェクトからデザむンを持っおいたからです。䞀般に、最初はすべおが非垞にスムヌズに、蚈画どおりに進みたした。私たちは䞻催者から提䟛された革新的な䌁業のデヌタセットをデヌタベヌスにロヌドしたした (neo4j を䜿甚するこずにしたした)。私は怍字を開始し、その埌、node.js を始めたしたが、その埌、物事がうたくいきたせんでした。私はこれたで neo8j を䜿甚したこずがありたせんでした。最初はこのデヌタベヌス甚に動䜜するドラむバヌを探しおいたした。次にク゚リの曞き方を芋぀けたした。その埌、このデヌタベヌスがク゚リされるず゚ンティティを返すこずを発芋しお驚きたした。ノヌド オブゞェクトずその゚ッゞの配列の圢匏。それらの。 TIN によっお組織ずそのすべおのデヌタをリク゚ストするず、20 ぀の組織オブゞェクトではなく、この組織に関するデヌタず組織間の関係を含むオブゞェクトの長い配列が返されたした。私は配列党䜓を調べ、すべおのオブゞェクトを構成に埓っお 30 ぀のオブゞェクトに結合するマッパヌを䜜成したした。しかし、戊闘䞭、30組織のデヌタベヌスをリク゚ストするず、実行が非垞に遅くなり、玄45秒かかりたした。最適化に぀いお考え始めたした...そしお時間内に停止しお MongoDB に切り替えたした。所芁時間は玄 XNUMX 分でした。 neoXNUMXj では合蚈で玄 XNUMX 時間が無駄になりたした。

芚えおおいおください、ハッカ゜ンに慣れおいないテクノロゞヌを決しお持ち蟌たないでください。驚くようなこずが起こる可胜性がありたす。しかし、この倱敗を陀けば、党䜓的にはすべお蚈画通りに進みたした。そしお 9 月 XNUMX 日の朝には、すでに完党に動䜜するアプリケヌションが完成しおいたした。その日の残りの時間は、機胜を远加する予定でした。将来的には、すべおが比范的スムヌズに進みたしたが、バック゚ンダヌは、怜玢゚ンゞンでのクロヌラヌの犁止や、リク゚スト時に怜玢結果の最初の堎所に衚瀺される法人のアグリゲヌタヌのスパムなど、倚くの問題を抱えおいたした。特定の䌁業ごずに。しかし、それに぀いおは圌自身が話したほうが良いでしょう。私が远加した最初の远加機胜はフルネヌムによる怜玢でした。 VKontakteのれネラルディレクタヌ。数時間かかりたした。

そのため、私たちのアプリケヌションの䌚瀟のペヌゞには、れネラルディレクタヌのアバタヌ、圌のVKontakteペヌゞぞのリンク、およびその他のデヌタが衚瀺されたした。勝利には結び぀かなかったかもしれないが、玠晎らしい収穫だった。次に、いく぀かの分析を実行したいず思いたした。しかし、オプションを長い間怜蚎した結果 (UI には倚くの埮劙な違いがありたした)、私は経枈掻動コヌドによる最も単玔な組織の集玄に萜ち着きたした。すでに倕方、最埌の数時間で、バック゚ンドの準備ができおいたせんでしたが、革新的な補品を衚瀺するためのテンプレヌト (アプリケヌションには補品ずサヌビスのセクションがあるはずです) をレむアりトしおいたした。同時に、デヌタベヌスは飛躍的に膚匵し、クロヌラヌは動䜜し続け、バック゚ンダヌは革新的なテキストず非革新的なテキストを区別するために NLP を実隓したした)))。しかし、すでに最終プレれンテヌションの時間が近づいおいたした。

7. プレれンテヌション。私自身の経隓から蚀えば、期限の玄 3  4 時間前にはプレれンテヌションの準備に切り替える必芁がありたす。特に動画の堎合は撮圱や線集にかなりの時間がかかりたす。ビデオがあるはずだった。そしお、私たちにはこれに察凊し、他の倚くの組織䞊の問題も解決する特別な担圓者がいたした。この点で、私たちは最埌の瞬間たでコヌディングから気をそらすこずはありたせんでした。

8. ピッチ。プレれンテヌションず決勝が別の平日月曜日に行われたのが気に入らなかった。おそらくここでも、参加者から最倧限の利益を絞り出すずいう䞻催者の方針が継続したのだろう。私は仕事を䌑む぀もりはなく、チヌムの他のメンバヌが䌑みを取ったにもかかわらず、決勝戊に行きたかっただけでした。しかし、ハッカ゜ンぞの感情的な没入感はすでに非垞に高たっおいたため、午前 8 時にチヌム (ハッカ゜ン チヌムではなく䜜業チヌム) のチャットにその日は自費で参加する旚を曞き、䞭倮センタヌに行きたした。ピッチ甚のオフィス。私たちの問題には玔粋なデヌタ サむ゚ンティストが倚数関䞎しおいるこずが刀明し、これが問題解決のアプロヌチに倧きな圱響を䞎えたした。倚くの人は優れた DS を持っおいたしたが、誰も動䜜するプロトタむプを持っおおらず、倚くの人は怜玢゚ンゞンでのクロヌラヌの犁止を回避できたせんでした。私たちは、動䜜するプロトタむプを持っおいる唯䞀のチヌムでした。そしお私たちは問題を解決する方法を知っおいたした。最終的に、私たちはこのトラックで優勝したしたが、最も競争力の䜎いタスクを遞択したのは非垞に幞運でした。他のトラックのピッチを芋お、そこにはチャンスがないこずがわかりたした。たた、私たちは陪審員たちにも非垞に幞運だったず蚀いたいのですが、圌らはコヌドを泚意深くチェックしおくれたした。そしお、レビュヌから刀断するず、これはすべおのトラックで起こったわけではありたせん。

9. ファむナル。コヌドレビュヌのために䜕床か陪審に呌ばれた埌、私たちは぀いにすべおの問題を解決したず思い、バヌガヌキングに昌食をずりに行きたした。そこで䞻催者から再び電話があり、急いで泚文品をたずめお戻らなければなりたせんでした。

䞻催者は私たちにどの郚屋に入るべきかを案内し、䞭に入るず、そこは優勝チヌムのためのスピヌチの緎習セッションでした。ステヌゞでパフォヌマンスするはずだった人たちは十分な準備を敎えおいお、誰もが本物のショヌマンのように出おきたした。

そしお、決勝戊では、他の分野の最匷チヌムを背景に、私たちは青ざめおいたこずを認めざるを埗たせんが、政府の顧客指名での勝利は、圓然のこずながら、䞍動産テック分野のチヌムが勝ち取りたした。トラックでの勝利に貢献した䞻な芁因は、既補のブランクが入手できたこず、そのおかげでプロトタむプをすぐに䜜成できたこず、プロトタむプに「ハむラむト」が存圚したこずCEO を怜玢゜ヌシャル ネットワヌク䞊) ずバック゚ンダヌの NLP スキルも審査員の倧きな関心を集めたした。

Urban Tech Challenge ハカ゜ンでビッグデヌタ トラックで優勝した経緯ず理由

最埌に、私たちをサポヌトしおくれたすべおの人々、私たちのトラックの審査員、゚フゲニヌ・゚フグラフィ゚フハッカ゜ンで私たちが解決した問題の䜜者、そしおもちろんハッカ゜ンの䞻催者に䌝統的に感謝したす。これはおそらく私がこれたで参加したハッカ゜ンの䞭で最倧芏暡で最も玠晎らしいものでした。今埌もこのような高い氎準を維持しおくれるこずを願うばかりです。

出所 habr.com

コメントを远加したす