Ψηφιακή ανακάλυψη - πώς συνέβη

Αυτό δεν είναι το πρώτο hackathon που κερδίζω, ούτε το πρώτο για το οποίο κερδίζω Γράφω, και αυτή δεν είναι η πρώτη ανάρτηση στο Habré αφιερωμένη στο "Digital Breakthrough". Αλλά δεν μπορούσα να μην γράψω. Θεωρώ ότι η εμπειρία μου είναι αρκετά μοναδική για να την μοιραστώ. Είμαι ίσως το μόνο άτομο σε αυτό το hackathon που κέρδισε την περιφερειακή φάση και τους τελικούς ως μέρος διαφορετικών ομάδων. Θέλετε να μάθετε πώς συνέβη αυτό; Καλώς ήρθατε στο cat.

Περιφερειακή σκηνή (Μόσχα, 27 - 28 Ιουλίου 2019).

Είδα για πρώτη φορά μια διαφήμιση για το "Digital Breakthrough" κάπου τον Μάρτιο-Απρίλιο του τρέχοντος έτους. Φυσικά, δεν μπορούσα να παραλείψω ένα τόσο μεγάλο hackathon και να εγγραφώ στον ιστότοπο. Εκεί γνώρισα τους όρους και το πρόγραμμα του διαγωνισμού. Αποδείχθηκε ότι για να φτάσετε στο hackathon, έπρεπε να περάσετε ένα διαδικτυακό τεστ, το οποίο ξεκίνησε στις 16 Μαΐου. Και, ίσως, θα το είχα ξεχάσει βολικά, καθώς δεν έλαβα επιστολή που να μου υπενθυμίζει την έναρξη των δοκιμών. Και, πρέπει να πω, στο μέλλον ΟΛΑ ΤΑ ΓΡΑΜΜΑΤΑ που μου ήρθαν από την CPU κατέληγαν σταθερά στον φάκελο ανεπιθύμητης αλληλογραφίας. Παρόλο που έκανα κλικ στο κουμπί "μη απαράδεκτο" κάθε φορά. Δεν ξέρω πώς κατάφεραν να πετύχουν ένα τέτοιο αποτέλεσμα· δεν μου βγήκε με την αλληλογραφία στο MailGun. Και τα παιδιά δεν φαίνεται να γνωρίζουν καθόλου για την ύπαρξη υπηρεσιών όπως το isnotspam.com. Αλλά παρεκκλίνουμε.

Θυμήθηκα για την έναρξη των δοκιμών σε μια από τις συναντήσεις startup club, εκεί συζητήσαμε και τον σχηματισμό της ομάδας. Έχοντας ανοίξει τη λίστα των δοκιμών, κάθισα πρώτα στο τεστ Javascript. Σε γενικές γραμμές, οι εργασίες ήταν λίγο πολύ επαρκείς (όπως το αποτέλεσμα αν προσθέσετε 1 + '1' στην κονσόλα). Αλλά από την εμπειρία μου, θα χρησιμοποιούσα τέτοια τεστ όταν στρατολογούσα για μια δουλειά ή μια ομάδα με πολύ μεγάλες επιφυλάξεις. Το γεγονός είναι ότι στην πραγματική δουλειά, ένας προγραμματιστής σπάνια συναντά τέτοια πράγματα, με την ικανότητά του να διορθώνει γρήγορα τον κώδικα - αυτή η γνώση δεν συσχετίζεται με κανέναν τρόπο και μπορείτε να εκπαιδεύσετε για τέτοια πράγματα για συνεντεύξεις αρκετά εύκολα (το ξέρω από τον εαυτό μου). Γενικά, έκανα κλικ στο τεστ αρκετά γρήγορα, σε ορισμένες περιπτώσεις έλεγξα τον εαυτό μου στην κονσόλα. Στο τεστ python, οι εργασίες ήταν περίπου του ίδιου τύπου, δοκίμασα και τον εαυτό μου στην κονσόλα και με έκπληξη συγκέντρωσα περισσότερους πόντους από ό,τι στο JS, αν και δεν έχω προγραμματίσει ποτέ επαγγελματικά στην Python. Αργότερα, σε συνομιλίες με τους συμμετέχοντες, άκουσα ιστορίες για το πόσο δυνατοί προγραμματιστές σημείωσαν χαμηλή βαθμολογία σε τεστ, πώς κάποιοι έλαβαν επιστολές που έλεγαν ότι δεν πέρασαν τη διαδικασία επιλογής για τη CPU και στη συνέχεια προσκλήθηκαν σε αυτήν ούτως ή άλλως. Είναι σαφές ότι οι δημιουργοί αυτών των δοκιμών πιθανότατα δεν έχουν ακούσει τίποτα θεωρία δοκιμής, ούτε για την αξιοπιστία και την εγκυρότητά τους, ούτε για τον τρόπο δοκιμής τους, και η ιδέα με δοκιμές θα ήταν εξαρχής αποτυχημένη, ακόμα κι αν δεν λαμβάναμε υπόψη τον κύριο στόχο του hackathon. Και ο κύριος στόχος του hack, όπως έμαθα αργότερα, ήταν να τεθεί ένα ρεκόρ Γκίνες, και οι δοκιμές το αντέκρουαν.

Κάποια στιγμή αφού πέρασα τα τεστ, με πήραν τηλέφωνο, με ρώτησαν αν θα συμμετάσχω, ξεκαθάρισαν τις λεπτομέρειες και μου είπαν πώς να μπω στο chat για την επιλογή ομάδας. Σύντομα, μπήκα στο chat και έγραψα λίγα λόγια για τον εαυτό μου. Στη συνομιλία γίνονταν εντελώς σκουπίδια· φαινόταν ότι οι διοργανωτές διαφήμιζαν σε πολλούς τυχαίους ανθρώπους που δεν είχαν καμία σχέση με το IT. Πολλοί διαχειριστές προϊόντων "στο επίπεδο του Steve Jobs" (μια πραγματική φράση από την υποβολή ενός συμμετέχοντα) δημοσίευσαν ιστορίες για τον εαυτό τους και οι κανονικοί προγραμματιστές δεν ήταν καν ορατοί. Αλλά ήμουν τυχερός και σύντομα μπήκα σε τρεις έμπειρους προγραμματιστές JS. Γνωριστήκαμε ήδη στο hackathon και μετά προσθέσαμε ένα κορίτσι στην ομάδα για έμπνευση και επίλυση οργανωτικών ζητημάτων. Δεν θυμάμαι γιατί, αλλά πήραμε το θέμα «Εκπαίδευση για την ασφάλεια στον κυβερνοχώρο» και το συμπεριλάβαμε στο κομμάτι «Επιστήμη και Εκπαίδευση 2». Για πρώτη φορά βρέθηκα σε μια ομάδα 4 δυνατών προγραμματιστών και για πρώτη φορά ένιωσα πόσο εύκολο ήταν να κερδίσεις σε μια τέτοια σύνθεση. Ήρθαμε απροετοίμαστοι και μαλώσαμε μέχρι το μεσημεριανό γεύμα και δεν μπορούσαμε να αποφασίσουμε τι θα κάναμε: εφαρμογή για κινητά ή web. Σε οποιαδήποτε άλλη περίπτωση θα πίστευα ότι ήταν αποτυχία. Το πιο σημαντικό για εμάς ήταν να καταλάβουμε πώς θα ήμασταν καλύτεροι από τους ανταγωνιστές μας, επειδή υπήρχαν πολλές ομάδες γύρω που έκαναν δοκιμές, παιχνίδια κυβερνοασφάλειας και παρόμοια. Αφού εξετάσαμε αυτό και κάναμε γκουγκλάρισμα προγραμμάτων εκπαίδευσης και εφαρμογών, αποφασίσαμε ότι ο κύριος διαφοροποιητής μας θα ήταν οι ασκήσεις πυροπροστασίας. Επιλέξαμε μια σειρά από λειτουργίες που βρήκαμε ενδιαφέροντα για εφαρμογή (εγγραφή με email και επαλήθευση κωδικού πρόσβασης έναντι βάσεων δεδομένων χάκερ, αποστολή email phishing (με τη μορφή επιστολών από γνωστές τράπεζες), εκπαίδευση κοινωνικής μηχανικής στο chat). Έχοντας αποφασίσει τι κάναμε και κατανοώντας πώς θα μπορούσαμε να ξεχωρίσουμε, γράψαμε γρήγορα μια ολοκληρωμένη εφαρμογή web και έπαιξα τον ασυνήθιστο ρόλο ενός προγραμματιστή υποστήριξης. Έτσι, κερδίσαμε με σιγουριά την πίστα μας και, ως μέρος άλλων τριών ομάδων, προκριθήκαμε στον τελικό του Καζάν. Αργότερα, στο Καζάν, έμαθα ότι η επιλογή για τους τελικούς ήταν μυθοπλασία· εκεί γνώρισα πολλά γνώριμα πρόσωπα από τις ομάδες που δεν πέρασαν την επιλογή. Μας πήραν συνέντευξη ακόμη και από δημοσιογράφους του Καναλιού 1. Ωστόσο, στο ρεπορτάζ από αυτό, η εφαρμογή μας εμφανίστηκε μόνο για 1 δευτερόλεπτο.

Ψηφιακή ανακάλυψη - πώς συνέβη
Snowed team, όπου κέρδισα την περιφερειακή φάση

Τελικός (Καζάν, 27 – 29 Σεπτεμβρίου 2019)

Μετά όμως άρχισαν οι αποτυχίες. Όλοι οι προγραμματιστές της ομάδας Snowed μέσα σε περίπου ένα μήνα, ο ένας μετά τον άλλο, ανέφεραν ότι δεν θα μπορούσαν να πάνε στο Καζάν για τους τελικούς. Και σκέφτηκα να βρω μια νέα ομάδα. Πρώτα, έκανα μια κλήση στο γενικό chat της Russian Hack Team, και παρόλο που εκεί έλαβα πολλές απαντήσεις και προσκλήσεις να συμμετάσχω σε ομάδες, καμία από αυτές δεν τράβηξε την προσοχή μου. Υπήρχαν μη ισορροπημένες ομάδες, όπως προϊόν, προγραμματιστής κινητών, front-end, που θυμίζουν κύκνο, καραβίδες και λούτσοι από μύθο. Υπήρχαν επίσης ομάδες που δεν ήταν κατάλληλες για μένα από άποψη τεχνολογίας (για παράδειγμα, με την ανάπτυξη μιας εφαρμογής για κινητά στο Flutter). Τέλος, σε μια συνομιλία που θεώρησα σκουπίδια (το ίδιο VKontakte όπου γινόταν η επιλογή των ομάδων για την περιφερειακή φάση), αναρτήθηκε μια αγγελία για την αναζήτηση ενός frontender για την ομάδα και έγραψα καθαρά τυχαία. Τα παιδιά αποδείχτηκαν μεταπτυχιακοί φοιτητές στο Skoltech και προσφέρθηκαν αμέσως να συναντηθούν και να γνωριστούν. Μου άρεσε· οι ομάδες που προτιμούν να γνωριστούν αμέσως σε ένα hackathon συνήθως με ανησυχούν για την έλλειψη κινήτρων τους. Συναντηθήκαμε στο "Rake" στην Pyatnitskaya. Τα παιδιά έδειχναν έξυπνα, με κίνητρο, σίγουροι για τον εαυτό τους και για τη νίκη, και πήρα την απόφαση εκεί. Δεν ξέραμε ακόμη ποια κομμάτια και εργασίες θα ήταν στον τελικό, αλλά υποθέσαμε ότι θα επιλέξαμε κάτι σχετικό με τη Μηχανική Μάθηση. Και το καθήκον μου θα είναι να γράψω έναν διαχειριστή για αυτό το θέμα, γι 'αυτό ετοίμασα ένα πρότυπο για αυτό εκ των προτέρων με βάση το antd-admin.
Πήγα στο Καζάν δωρεάν, με έξοδα των διοργανωτών. Πρέπει να πω ότι έχει ήδη εκφραστεί μεγάλη δυσαρέσκεια σε chat και blogs σχετικά με την αγορά εισιτηρίων και γενικότερα τη διοργάνωση του τελικού, δεν θα τα ξαναπώ όλα.

Έχοντας φτάσει στο Kazan Expo, εγγραφήκαμε (δυσκολεύτηκα λίγο να πάρω ένα σήμα) και πήραμε πρωινό, πήγαμε να επιλέξουμε μια πίστα. Πήγαμε μόνο στα εγκαίνια, όπου μίλησαν οι επίσημοι, για περίπου 10 λεπτά.Στην πραγματικότητα, είχαμε ήδη τα κομμάτια που προτιμούσαμε, αλλά μας ενδιέφεραν οι λεπτομέρειες. Στο κομμάτι Νο. 18 (Rostelecom), για παράδειγμα, αποδείχθηκε ότι ήταν απαραίτητο να αναπτυχθεί μια εφαρμογή για κινητά, αν και αυτό δεν ήταν στη σύντομη περιγραφή. Κάναμε την κύρια επιλογή μεταξύ της διαδρομής Νο. 8 Defectoscopy of pipelines, Gazprom Neft PJSC και της διαδρομής No. 13 Perinatal Centers, Accounts Chamber of the Russian Federation. Και στις δύο περιπτώσεις χρειαζόταν η Επιστήμη των Δεδομένων και στις δύο περιπτώσεις θα μπορούσε να είχε προστεθεί ο Ιστός. Στο κομμάτι Νο. 13, μας σταμάτησε το γεγονός ότι η εργασία Data Science εκεί ήταν αρκετά αδύναμη, ήταν απαραίτητο να αναλύσουμε το Rosstat και δεν ήταν ξεκάθαρο αν χρειαζόταν ένας πίνακας διαχείρισης. Και η ίδια η αξία του έργου ήταν αμφίβολη. Στο τέλος, αποφασίσαμε ότι ως ομάδα ήμασταν πιο κατάλληλοι για το track 8, ειδικά επειδή τα παιδιά είχαν ήδη εμπειρία στην επίλυση παρόμοιων προβλημάτων. Ξεκινήσαμε σκεπτόμενοι το σενάριο στο οποίο θα χρησιμοποιηθεί η εφαρμογή μας από τον τελικό χρήστη. Αποδείχθηκε ότι θα είχαμε δύο τύπους χρηστών: τεχνικούς που ενδιαφέρονται για τεχνικές πληροφορίες και διευθυντές που χρειάζονταν οικονομικούς δείκτες. Όταν προέκυψε μια ιδέα για το σενάριο, έγινε σαφές τι να κάνει στο μπροστινό μέρος, τι έπρεπε να σχεδιάσει ο σχεδιαστής και ποιες μέθοδοι χρειάζονταν στο πίσω μέρος, κατέστη δυνατή η διανομή εργασιών. Οι ευθύνες στην ομάδα κατανεμήθηκαν ως εξής: δύο άτομα έλυσαν ML με δεδομένα που έλαβαν από τεχνικούς εμπειρογνώμονες, ένα άτομο έγραψε το backend στην Python, έγραψα το front end στο React και στο Antd, ο σχεδιαστής σχεδίασε τις διεπαφές. Καθίσαμε μάλιστα για να μας βολεύει περισσότερο να επικοινωνούμε λύνοντας τα προβλήματά μας.

Η πρώτη μέρα πέρασε σχεδόν απαρατήρητη. Σε επικοινωνία με τεχνικούς εμπειρογνώμονες, αποδείχθηκε ότι αυτοί (η Gazprom Neft) είχαν ήδη λύσει αυτό το πρόβλημα, απλώς αναρωτιόντουσαν αν θα μπορούσε να λυθεί καλύτερα. Δεν θα πω ότι αυτό μείωσε το κίνητρό μου, αλλά άφησε κατάλοιπα. Με εξέπληξε το γεγονός ότι τη νύχτα οι συντονιστές του τμήματος σημείωναν τις ομάδες εργασίας (όπως είπαν για τα στατιστικά), αυτό συνήθως δεν εφαρμόζεται στα hackathons. Μέχρι το πρωί είχαμε ένα πρωτότυπο του μπροστινού μέρους, μερικά βασικά στοιχεία του πίσω μέρους και την πρώτη λύση ML έτοιμη. Γενικά, υπήρχε ήδη κάτι να δείξουν στους ειδικούς. Το απόγευμα του Σαββάτου, ο σχεδιαστής προφανώς σχεδίασε περισσότερες διεπαφές από ό,τι θα είχα χρόνο να κωδικοποιήσω και άλλαξε στη δημιουργία μιας παρουσίασης. Το Σάββατο είχε προβλεφθεί για την εγγραφή του ρεκόρ και το πρωί, όλοι οι εργαζόμενοι στην αίθουσα εκδιώχθηκαν στο διάδρομο, στη συνέχεια η είσοδος και η έξοδος από την αίθουσα πραγματοποιήθηκαν με χρήση σημάτων και δεν ήταν δυνατή η αναχώρηση για άλλο από μια ώρα την ημέρα. Δεν θα πω ότι αυτό μας προκάλεσε κάποια σημαντική ταλαιπωρία· το μεγαλύτερο μέρος της ημέρας ακόμα καθόμασταν και δουλεύαμε. Το φαγητό, πράγματι, ήταν πολύ πενιχρό· για μεσημεριανό λάβαμε ένα ποτήρι ζωμό, μια πίτα και ένα μήλο, αλλά και πάλι αυτό δεν μας στεναχώρησε πολύ, ήμασταν συγκεντρωμένοι σε κάτι άλλο.

Έδιναν ανά τακτά χρονικά διαστήματα red bull, δύο κουτάκια ανά χέρι, κάτι που ήταν πολύ χρήσιμο. Η συνταγή για ενεργειακό ποτό + καφέ, που είχε δοκιμαστεί εδώ και καιρό σε hackathons, μου επέτρεψε να κωδικοποιήσω όλη τη νύχτα και την επόμενη μέρα, όντας χαρούμενη σαν ένα ποτήρι. Τη δεύτερη μέρα, στην πραγματικότητα, απλώς προσθέσαμε νέες δυνατότητες στην εφαρμογή, υπολογίσαμε οικονομικούς δείκτες και αρχίσαμε να εμφανίζουμε γραφήματα σχετικά με τα στατιστικά στοιχεία των ελαττωμάτων σε αυτοκινητόδρομους. Δεν υπήρχε έλεγχος κώδικα καθαυτή στο κομμάτι μας· οι ειδικοί αξιολόγησαν τη λύση του προβλήματος στο στυλ kaggle.com, με βάση την ακρίβεια της πρόβλεψης, και το μπροστινό μέρος αξιολογήθηκε οπτικά. Η λύση ML μας αποδείχθηκε η πιο ακριβής, ίσως αυτό μας επέτρεψε να γίνουμε ηγέτες. Το βράδυ από το Σάββατο προς την Κυριακή δουλεύαμε μέχρι τις 2 τα ξημερώματα και μετά πήγαμε για ύπνο στο διαμέρισμα που χρησιμοποιούσαμε ως βάση. Κοιμηθήκαμε περίπου 5 ώρες, την Κυριακή στις 9 το πρωί ήμασταν ήδη στο Kazan Expo. Ετοίμασα βιαστικά κάτι, αλλά τον περισσότερο χρόνο αφιέρωσα στην προετοιμασία για την προ-άμυνα. Οι προάμυνες έγιναν σε 2 ροές, μπροστά σε δύο ομάδες ειδικών· μας ζητήθηκε να μιλήσουμε τελευταίοι, αφού και οι δύο ομάδες ειδικών ήθελαν να μας ακούσουν. Το πήραμε ως καλό σημάδι. Η εφαρμογή εμφανίστηκε από το φορητό υπολογιστή μου, από έναν διακομιστή προγραμματιστή που εκτελείται, δεν είχαμε χρόνο να αναπτύξουμε σωστά την εφαρμογή, ωστόσο, όλοι έκαναν το ίδιο.

Γενικά όλα πήγαν καλά, μας επισημάνθηκαν σημεία στα οποία μπορούσαμε να βελτιώσουμε την εφαρμογή μας και στο διάστημα πριν την άμυνα προσπαθήσαμε να εφαρμόσουμε κάποια από αυτά τα σχόλια. Η άμυνα κύλησε επίσης εκπληκτικά ομαλά. Με βάση τα αποτελέσματα της προ-άμυνας, ξέραμε ότι προηγούμασταν βαθμολογικά, ήμασταν πρωτοπόροι σε ακρίβεια λύσης, είχαμε καλό front-end, καλή σχεδίαση και, γενικά, είχαμε καλή συναισθήματα. Ένα άλλο ευνοϊκό σημάδι ήταν ότι η κοπέλα συντονιστής από το τμήμα μας έβγαλε μια selfie μαζί μας πριν μπει στην αίθουσα συναυλιών και μετά υποψιαζόμουν ότι μπορεί να ήξερε κάτι))). Αλλά δεν ξέραμε τα σκορ μας μετά την άμυνα, οπότε ο χρόνος μέχρι να ανακοινωθεί η ομάδα μας από τη σκηνή πέρασε λίγο τεταμένα. Στη σκηνή έδωσαν ένα χαρτόνι με την επιγραφή 500000 ρούβλια και σε κάθε άτομο δόθηκε μια τσάντα με μια κούπα και μια μπαταρία κινητού τηλεφώνου. Δεν καταφέραμε να απολαύσουμε τη νίκη και να τη γιορτάσουμε σωστά· δειπνήσαμε γρήγορα και πήραμε ταξί για το τρένο.

Ψηφιακή ανακάλυψη - πώς συνέβη
Η ομάδα WAICO κερδίζει τον τελικό

Κατά την επιστροφή στη Μόσχα, δημοσιογράφοι του NTV μας πήραν συνέντευξη. Γυρίσαμε για μια ολόκληρη ώρα στον δεύτερο όροφο του καφέ Kvartal 44 στην Polyanka, αλλά οι ειδήσεις έδειχναν μόνο περίπου 10 δευτερόλεπτα. Άλλωστε, ισχυρή πρόοδος σε σύγκριση με την περιφερειακή σκηνή.

Αν συνοψίσουμε τις γενικές εντυπώσεις από το Digital Breakthrough, είναι οι εξής. Ξοδεύτηκαν πολλά χρήματα για την εκδήλωση· δεν έχω ξαναδεί hackathon τέτοιας κλίμακας. Αλλά δεν μπορώ να πω ότι αυτό είναι δικαιολογημένο και ότι θα αποδώσει πραγματικά. Ένα σημαντικό μέρος των συμμετεχόντων που ήρθαν στο Καζάν ήταν απλώς πάρτι που δεν ήξεραν πώς να κάνουν τίποτα με τα χέρια τους και που αναγκάστηκαν να κάνουν ρεκόρ. Δεν μπορώ να πω ότι ο ανταγωνισμός στους τελικούς ήταν υψηλότερος από ό,τι στο περιφερειακό στάδιο. Επίσης, αμφισβητείται η αξία και η χρησιμότητα των εργασιών ορισμένων κομματιών. Ορισμένα προβλήματα έχουν λυθεί εδώ και καιρό σε βιομηχανικό επίπεδο. Όπως αποδείχθηκε αργότερα, ορισμένοι οργανισμοί που διεξήγαγαν τα κομμάτια δεν ενδιαφέρθηκαν να τα λύσουν. Και αυτή η ιστορία δεν έχει τελειώσει ακόμα, οι κορυφαίες ομάδες από κάθε κομμάτι επιλέχθηκαν για το pre-accelerator και υποτίθεται ότι θα αποδειχθούν BREAKTHROUG startups. Αλλά δεν είμαι έτοιμος να γράψω για αυτό ακόμα, θα δούμε τι θα βγει από αυτό.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο