پیشرفت دیجیتال - چگونه اتفاق افتاد

این اولین هکاتونی نیست که من برنده می شوم، نه اولین هکاتونی در مورد آن نوشتنو این اولین پست در هابره نیست که به «پیشرفت دیجیتالی» اختصاص داده شده است. اما نتونستم ننویسم من تجربه خود را به اندازه کافی منحصر به فرد برای به اشتراک گذاشتن می دانم. من احتمالا تنها فردی در این هکاتون هستم که در مرحله منطقه ای و فینال ها به عنوان بخشی از تیم های مختلف برنده شدم. می خواهید بدانید چگونه این اتفاق افتاد؟ به گربه خوش آمدید

مرحله منطقه ای (مسکو، 27 تا 28 ژوئیه 2019).

من برای اولین بار تبلیغی را برای "پیشرفت دیجیتالی" در جایی در ماه مارس تا آوریل امسال دیدم. طبیعتاً من نتوانستم از چنین هکاتون بزرگی بگذرم و در سایت ثبت نام کنم. در آنجا با شرایط و برنامه مسابقه آشنا شدم. معلوم شد که برای رسیدن به هکاتون باید یک آزمون آنلاین را پشت سر بگذارید که از 16 می آغاز شد. و، شاید، به راحتی آن را فراموش می کردم، زیرا نامه ای دریافت نکردم که در مورد شروع آزمایش به من یادآوری کند. و، باید بگویم، در آینده، همه نامه هایی که از CPU به من می رسید، به طور مداوم در پوشه هرزنامه قرار می گیرند. حتی اگر من هر بار روی دکمه "غیر قابل اعتراض" کلیک کردم. نمی‌دانم چگونه آنها توانستند به چنین نتیجه‌ای دست یابند؛ با ارسال پستی در MailGun برای من کارساز نبود. و به نظر می رسد که بچه ها اصلاً از وجود خدماتی مانند isnotspam.com اطلاعی ندارند. اما منحرف می شویم.

در یکی از جلسات به یاد شروع آزمون افتادم باشگاه استارتاپ، در آنجا درباره تشکیل تیم هم بحث کردیم. با باز کردن لیست تست ها، ابتدا به سراغ تست جاوا اسکریپت رفتم. به طور کلی، وظایف کم و بیش کافی بودند (مانند اینکه اگر 1 + '1' را در کنسول اضافه کنید، نتیجه چه می شود). اما با توجه به تجربه من، هنگام استخدام برای یک کار یا تیمی با رزرو بسیار زیاد، از چنین تست هایی استفاده می کنم. واقعیت این است که در کار واقعی، یک برنامه نویس به ندرت با چنین چیزهایی روبرو می شود، با توانایی اش در اشکال زدایی سریع کد - این دانش به هیچ وجه با هم ارتباطی ندارد و شما می توانید به راحتی برای چنین چیزهایی برای مصاحبه آموزش دهید (من از خودم می دانم). به طور کلی، من تست را خیلی سریع انجام دادم، در برخی موارد خودم را در کنسول بررسی کردم. در تست پایتون، وظایف تقریباً یکسان بود، من هم خودم را در کنسول تست کردم و از اینکه امتیاز بیشتری نسبت به JS کسب کردم، شگفت زده شدم، اگرچه هرگز به طور حرفه ای در پایتون برنامه نویسی نکرده ام. بعداً، در گفتگو با شرکت کنندگان، داستان هایی شنیدم که چگونه برنامه نویسان قوی در آزمون ها نمره پایینی کسب کردند، چگونه برخی از افراد نامه هایی دریافت کردند مبنی بر اینکه آنها مراحل انتخاب برای CPU را قبول نکردند و سپس به هر حال به آن دعوت شدند. واضح است که سازندگان این تست ها به احتمال زیاد چیزی در مورد آن نشنیده اند نظریه آزمون، نه در مورد پایایی و اعتبار آنها و نه در مورد نحوه آزمایش آنها، و ایده با تست ها از همان ابتدا با شکست مواجه می شد، حتی اگر هدف اصلی هکاتون را در نظر نمی گرفتیم. و هدف اصلی هک، همانطور که بعداً فهمیدم، ثبت رکورد گینس بود، و آزمایشات با آن در تضاد بود.

در مقطعی پس از قبولی در آزمون ها، آنها با من تماس گرفتند، پرسیدند که آیا شرکت می کنم، جزئیات را روشن کردند و به من گفتند که چگونه برای انتخاب تیم وارد چت شوم. خیلی زود وارد چت شدم و مختصری از خودم نوشتم. آشغال‌های کاملی در چت در جریان بود؛ به نظر می‌رسید که سازمان‌دهندگان برای افراد تصادفی زیادی که هیچ ارتباطی با فناوری اطلاعات نداشتند، تبلیغ می‌کردند. تعداد زیادی از مدیران محصول «در سطح استیو جابز» (یک عبارت واقعی از ارسال یک شرکت‌کننده) داستان‌هایی درباره خودشان ارسال کردند و توسعه‌دهندگان عادی حتی قابل مشاهده نبودند. اما من خوش شانس بودم و خیلی زود به سه برنامه نویس با تجربه JS پیوستم. ما قبلاً همدیگر را در هکاتون ملاقات کردیم و سپس یک دختر را برای الهام گرفتن و حل مسائل سازمانی به تیم اضافه کردیم. یادم نیست چرا، اما موضوع "آموزش امنیت سایبری" را گرفتیم و آن را در آهنگ "علم و آموزش 2" قرار دادیم. برای اولین بار خودم را در تیمی متشکل از 4 برنامه نویس قوی یافتم و برای اولین بار احساس کردم که در چنین ترکیبی چقدر برنده شدن آسان است. ما ناآماده آمدیم و تا ناهار با هم بحث کردیم و نتوانستیم تصمیم بگیریم چه کنیم: اپلیکیشن موبایل یا وب. در هر موقعیت دیگری فکر می کردم که یک شکست است. مهمترین چیز برای ما این بود که بفهمیم چگونه از رقبای خود بهتر خواهیم بود، زیرا تیم های زیادی در اطراف وجود داشتند که تست ها، بازی های امنیت سایبری و موارد مشابه را انجام می دادند. پس از بررسی این و برنامه ها و برنامه های آموزشی در گوگل، به این نتیجه رسیدیم که متمایز کننده اصلی ما تمرینات آتش نشانی باشد. ما تعدادی ویژگی را انتخاب کردیم که برای پیاده‌سازی آن‌ها جالب بود (ثبت‌نام با ایمیل و تأیید رمز عبور در برابر پایگاه‌های اطلاعاتی هکرها، ارسال ایمیل‌های فیشینگ (به شکل نامه از بانک‌های معروف)، آموزش مهندسی اجتماعی در چت). پس از تصمیم گیری در مورد کاری که انجام می دهیم و درک اینکه چگونه می توانیم متمایز شویم، به سرعت یک برنامه وب تمام عیار نوشتیم و من نقش غیرمعمول یک توسعه دهنده باطن را بازی کردم. بنابراین ما با اطمینان پیست خود را بردیم و به عنوان بخشی از سه تیم دیگر به فینال کازان راه یافتیم. بعداً در کازان فهمیدم که انتخاب برای فینال یک داستان تخیلی است؛ در آنجا با چهره‌های آشنای زیادی از تیم‌هایی که از انتخابی عبور نکرده‌اند ملاقات کردم. حتی با خبرنگاران شبکه 1 مصاحبه شدیم. با این حال، در گزارش از آن، برنامه ما تنها برای 1 ثانیه نشان داده شد.

پیشرفت دیجیتال - چگونه اتفاق افتاد
تیم برفی که در آن مرحله منطقه ای را بردم

فینال (کازان، 27 تا 29 سپتامبر 2019)

اما بعد از آن شکست ها شروع شد. همه برنامه نویسان تیم Snowed طی حدود یک ماه، یکی پس از دیگری گزارش دادند که نمی توانند برای فینال به کازان بروند. و به فکر پیدا کردن یک تیم جدید افتادم. ابتدا در چت عمومی تیم هک روسیه تماس گرفتم و اگرچه در آنجا پاسخ ها و دعوت نامه های زیادی برای پیوستن به تیم ها دریافت کردم، اما هیچ کدام توجه من را جلب نکرد. تیم‌های نامتعادلی مانند محصول، توسعه‌دهنده موبایل، جلویی، یادآور قو، خرچنگ و پیک از یک افسانه وجود داشتند. تیم هایی هم بودند که از نظر فنی برای من مناسب نبودند (مثلا با توسعه اپلیکیشن موبایل در فلاتر). در نهایت، در یک چتی که من آن را بی ارزش می دانستم (همان VKontakte که در آن انتخاب تیم ها برای مرحله منطقه ای انجام شد)، تبلیغی در مورد جستجوی یک پیشرو برای تیم ارسال شد و من کاملاً تصادفی نوشتم. معلوم شد که بچه ها دانشجوی کارشناسی ارشد Skoltech هستند و بلافاصله پیشنهاد ملاقات و آشنایی را دادند. من آن را دوست داشتم؛ تیم هایی که ترجیح می دهند فوراً در یک هکاتون با یکدیگر آشنا شوند، معمولاً من را از بی انگیزگی خود نگران می کنند. ما در "Rake" در Pyatnitskaya ملاقات کردیم. بچه ها باهوش، باانگیزه، به خودشان و پیروزی مطمئن به نظر می رسیدند و من همان جا تصمیم گرفتم. ما هنوز نمی‌دانستیم چه مسیرها و وظایفی در فینال خواهد بود، اما فرض می‌کردیم که چیزی مرتبط با یادگیری ماشین را انتخاب می‌کنیم. و وظیفه من نوشتن یک ادمین برای این موضوع خواهد بود، بنابراین من از قبل یک قالب برای این کار بر اساس antd-admin آماده کردم.
من با هزینه برگزارکنندگان به طور رایگان به کازان رفتم. باید بگویم که قبلا در چت ها و وبلاگ ها نارضایتی های زیادی در خصوص خرید بلیت و در کل برگزاری فینال بیان شده است، همه را بازگو نمی کنم.

با رسیدن به کازان اکسپو، ثبت نام (در گرفتن نشان کمی مشکل داشتم) و صبحانه خوردیم، برای انتخاب مسیر رفتیم. ما فقط برای 10 دقیقه به افتتاحیه بزرگ رفتیم، جایی که مسئولان صحبت کردند، در واقع ما از قبل آهنگ های مورد علاقه خود را داشتیم، اما به جزئیات علاقه مند بودیم. به عنوان مثال، در مسیر شماره 18 (Rostelecom)، مشخص شد که نیاز به توسعه یک برنامه تلفن همراه است، اگرچه این در توضیح مختصر نبود. ما انتخاب اصلی را بین مسیر شماره 8 نقص سنجی خطوط لوله، گازپروم نفت PJSC و مسیر شماره 13 مراکز پری ناتال، اتاق حساب های فدراسیون روسیه انجام دادیم. در هر دو مورد، Data Science مورد نیاز بود و در هر دو مورد، وب می‌توانست اضافه شود. در آهنگ شماره 13، ما با این واقعیت متوقف شدیم که وظیفه علم داده در آنجا کاملاً ضعیف بود، لازم بود Rosstat را تجزیه کنیم و مشخص نبود که آیا به پنل مدیریت نیاز است یا خیر. و ارزش این کار مورد تردید بود. در پایان، تصمیم گرفتیم که به عنوان یک تیم برای پیگیری 8 مناسب تر باشیم، به خصوص که بچه ها قبلاً در حل مشکلات مشابه تجربه داشتند. ما با فکر کردن در مورد سناریویی که در آن برنامه ما توسط کاربر نهایی استفاده می شود، شروع کردیم. معلوم شد که ما دو نوع کاربر خواهیم داشت: فناورانی که به اطلاعات فنی علاقه مند بودند و مدیرانی که به شاخص های مالی نیاز داشتند. هنگامی که ایده ای از سناریو پدیدار شد، مشخص شد که در قسمت جلویی چه کاری باید انجام شود، طراح باید چه چیزی را ترسیم کند و چه روش هایی در قسمت پشتی مورد نیاز است، توزیع وظایف ممکن شد. مسئولیت ها در تیم به شرح زیر توزیع شد: دو نفر ML را با داده های دریافت شده از کارشناسان فنی حل کردند، یک نفر باطن را در پایتون نوشت، من قسمت جلویی را در React و Antd نوشتم، طراح رابط ها را ترسیم کرد. حتی نشستیم تا در حین حل مشکلات راحت تر با هم ارتباط برقرار کنیم.

روز اول تقریبا بدون توجه پرواز کرد. در ارتباط با کارشناسان فنی، معلوم شد که آنها (گازپروم نفت) قبلاً این مشکل را حل کرده اند، آنها فقط در این فکر بودند که آیا می توان آن را بهتر حل کرد. نمی گویم که این باعث کاهش انگیزه من شد، اما اثری باقی ماند. من تعجب کردم که در شب مدیران بخش تیم های کاری را یادداشت کردند (همانطور که برای آمار گفتند)؛ این معمولاً در هکاتون ها انجام نمی شود. تا صبح یک نمونه اولیه از جلو، برخی از قسمت های اولیه پشتی و اولین راه حل ML آماده بود. به طور کلی، از قبل چیزی برای نشان دادن کارشناسان وجود داشت. بعدازظهر شنبه، طراح به وضوح بیشتر از زمانی که برای کدنویسی داشتم، رابط‌های بیشتری ترسیم کرد و به ایجاد یک ارائه روی آورد. روز شنبه برای ثبت رکورد در نظر گرفته شد و صبح تمام افرادی که در سالن کار می کردند به داخل راهرو بیرون رانده شدند، سپس ورود و خروج از سالن با استفاده از نشان ها انجام شد و امکان خروج بیشتر از این وجود نداشت. بیش از یک ساعت در روز من نمی گویم که این باعث ناراحتی قابل توجهی برای ما شد؛ بیشتر روز همچنان می نشستیم و کار می کردیم. غذا، در واقع، بسیار ناچیز بود؛ برای ناهار یک لیوان آبگوشت، یک پای و یک سیب دریافت کردیم، اما باز هم این خیلی ما را ناراحت نکرد، ما روی چیز دیگری تمرکز کردیم.

آنها به طور دوره ای ردبول، دو قوطی در هر دست، که بسیار مفید بود، می دادند. دستور نوشیدنی انرژی‌زا + قهوه، که مدت‌ها در هکاتون‌ها آزمایش شده بود، به من این امکان را داد که تمام شب و روز بعد را کدنویسی کنم و به اندازه یک لیوان شاد باشم. در روز دوم، ما در واقع به سادگی ویژگی های جدیدی را به برنامه اضافه کردیم، شاخص های مالی را محاسبه کردیم و شروع به نمایش نمودارهای آمار نقص در بزرگراه ها کردیم. هیچ بازبینی کدی در مسیر ما وجود نداشت؛ کارشناسان راه حل مشکل را در سبک kaggle.com بر اساس دقت پیش بینی ارزیابی کردند و قسمت جلویی به صورت بصری ارزیابی شد. راه حل ML ما دقیق ترین بود، شاید این همان چیزی است که به ما اجازه می دهد رهبر شویم. شب شنبه تا یکشنبه تا ساعت 2 بامداد کار می کردیم و سپس در آپارتمانی که به عنوان پایگاه استفاده می کردیم، می خوابیم. ما حدود 5 ساعت خوابیدیم، یکشنبه ساعت 9 صبح قبلاً در نمایشگاه کازان بودیم. من با عجله چیزی آماده کردم، اما بیشتر وقت صرف آماده سازی برای پیش دفاع شد. دفاع پیش در 2 جریان و در مقابل دو تیم متخصص انجام شد؛ از ما خواسته شد که آخرین صحبت را انجام دهیم، زیرا هر دو تیم کارشناسان می خواستند به حرف ما گوش دهند. ما این را نشانه خوبی در نظر گرفتیم. برنامه از لپ‌تاپ من، از یک سرور توسعه‌دهنده در حال اجرا نشان داده شد؛ ما وقت نداشتیم برنامه را به درستی اجرا کنیم، با این حال، همه همین کار را کردند.

در کل همه چیز خوب پیش رفت، نکاتی به ما اشاره شد که می‌توانستیم اپلیکیشن خود را بهبود ببخشیم و در زمان قبل از دفاع حتی سعی کردیم برخی از این نظرات را اجرا کنیم. دفاع نیز به طرز شگفت انگیزی آرام پیش رفت. با توجه به نتایج پیش دفاع می دانستیم که از نظر امتیازی جلوتر هستیم، از نظر دقت راه حل پیشتاز هستیم، جلوبندی خوب، طراحی خوب و در کل خوب داریم. احساسات یکی دیگر از نشانه های مطلوب این بود که دختر مجری بخش ما قبل از ورود به سالن کنسرت با ما سلفی گرفت و بعد شک کردم که او ممکن است چیزی بداند))). اما امتیازات خود را بعد از دفاع نمی دانستیم، بنابراین زمان اعلام شدن تیم ما از روی صحنه کمی با تنش گذشت. آنها روی صحنه یک مقوا با کتیبه 500000 روبل تحویل دادند و به هر نفر یک کیسه با یک لیوان و یک باتری تلفن همراه داده شد. ما نتوانستیم از پیروزی لذت ببریم و آن را به درستی جشن بگیریم؛ سریع شام خوردیم و با تاکسی به سمت قطار رفتیم.

پیشرفت دیجیتال - چگونه اتفاق افتاد
تیم WAICO برنده فینال است

پس از بازگشت به مسکو، خبرنگاران NTV با ما مصاحبه کردند. ما یک ساعت کامل در طبقه دوم کافه Kvartal 44 در Polyanka فیلمبرداری کردیم، اما اخبار فقط حدود 10 ثانیه را نشان داد. بالاخره پیشرفت قوی نسبت به مرحله منطقه ای.

اگر برداشت های کلی از پیشرفت دیجیتال را خلاصه کنیم، آنها به شرح زیر هستند. پول زیادی برای این رویداد خرج شد؛ من تا به حال هکاتون هایی در این مقیاس ندیده بودم. اما من نمی توانم بگویم که این توجیه دارد و واقعاً نتیجه خواهد داد. بخش قابل توجهی از شرکت کنندگانی که به کازان آمده بودند صرفاً مهماندارانی بودند که نمی دانستند چگونه با دست خود کاری انجام دهند و مجبور به ثبت رکورد شدند. نمی توانم بگویم که رقابت در فینال بالاتر از مرحله منطقه ای بود. همچنین ارزش و مفید بودن وظایف برخی از تراک ها مورد تردید است. برخی از مشکلات مدت هاست که در سطح صنعتی حل شده است. همانطور که بعداً مشخص شد، برخی از سازمان‌هایی که این مسیرها را انجام می‌دادند علاقه‌ای به حل آنها نداشتند. و این داستان هنوز به پایان نرسیده است، تیم های پیشرو از هر مسیر برای پیش شتاب دهنده انتخاب شدند و فرض بر این است که آنها استارت آپ های BREAKTHROUGH خواهند بود. اما من هنوز آماده نوشتن در این مورد نیستم، خواهیم دید که چه نتیجه ای حاصل می شود.

منبع: www.habr.com

اضافه کردن نظر