Πώς και γιατί κερδίσαμε το κομμάτι Big Data στο hackathon Urban Tech Challenge

Με λένε Ντμίτρι. Και θέλω να μιλήσω για το πώς η ομάδα μας έφτασε στον τελικό του hackathon Urban Tech Challenge στην πίστα Big Data. Θα πω αμέσως ότι αυτό δεν είναι το πρώτο hackathon στο οποίο συμμετείχα, ούτε το πρώτο στο οποίο πήρα βραβεία. Από αυτή την άποψη, στην ιστορία μου θέλω να εκφράσω ορισμένες γενικές παρατηρήσεις και συμπεράσματα σχετικά με τη βιομηχανία του hackathon στο σύνολό της και να δώσω την άποψή μου σε αντίθεση με τις αρνητικές κριτικές που εμφανίστηκαν στο διαδίκτυο αμέσως μετά το τέλος του Urban Tech Challenge (για παράδειγμα αυτό).

Πρώτα λοιπόν μερικές γενικές παρατηρήσεις.

1. Είναι εκπληκτικό το γεγονός ότι αρκετοί άνθρωποι πιστεύουν αφελώς ότι ένα hackathon είναι κάποιο είδος αθλητικού διαγωνισμού όπου κερδίζουν οι καλύτεροι κωδικοποιητές. Αυτό είναι λάθος. Δεν θεωρώ περιπτώσεις που οι ίδιοι οι διοργανωτές του hackathon δεν ξέρουν τι θέλουν (το έχω δει κι εγώ). Όμως, κατά κανόνα, η εταιρεία που διοργανώνει ένα hackathon επιδιώκει τους δικούς της στόχους. Η λίστα τους μπορεί να είναι διαφορετική: θα μπορούσε να είναι μια τεχνική λύση σε κάποια προβλήματα, μια αναζήτηση νέων ιδεών και ανθρώπων κ.λπ. Αυτοί οι στόχοι συχνά καθορίζουν τη μορφή της εκδήλωσης, το χρονοδιάγραμμά της, online/offline, πώς θα διαμορφωθούν οι εργασίες (και αν θα διατυπωθούν καθόλου), αν θα υπάρξει αναθεώρηση κώδικα στο hackathon κ.λπ. Και οι δύο ομάδες και το τι έκαναν αξιολογούνται από αυτή την άποψη. Και εκείνες οι ομάδες που πέτυχαν καλύτερα στο σημείο που χρειάζεται η εταιρεία κερδίζουν, και πολλές φτάνουν σε αυτό το σημείο εντελώς ασυνείδητα και τυχαία, νομίζοντας ότι πραγματικά συμμετέχουν σε έναν αθλητικό αγώνα. Οι παρατηρήσεις μου δείχνουν ότι για να παρακινήσουν τους συμμετέχοντες, οι διοργανωτές θα πρέπει να δημιουργήσουν τουλάχιστον την εμφάνιση ενός αθλητικού περιβάλλοντος και ίσων συνθηκών, διαφορετικά θα λάβουν ένα κύμα αρνητικότητας, όπως στην παραπάνω κριτική. Αλλά παρεκκλίνουμε.

2. Εξ ου και το ακόλουθο συμπέρασμα. Οι διοργανωτές ενδιαφέρονται να έρθουν οι συμμετέχοντες στο hackathon με τη δική τους δουλειά, μερικές φορές μάλιστα οργανώνουν ειδικά ένα στάδιο ηλεκτρονικής αλληλογραφίας για το σκοπό αυτό. Αυτό επιτρέπει ισχυρότερες λύσεις εξόδου. Η έννοια της «δικής του εργασίας» είναι πολύ σχετική. Και θα είναι αυτή μια προπαρασκευασμένη εξέλιξη; Αλλά σε κάθε περίπτωση, ισχύει ο κανόνας, τον οποίο εξέφρασα με τη μορφή ενός διάσημου μιμιδίου:

Πώς και γιατί κερδίσαμε το κομμάτι Big Data στο hackathon Urban Tech Challenge

Για να κερδίσετε, πρέπει να έχετε κάτι, κάποιου είδους ανταγωνιστικό πλεονέκτημα: ένα παρόμοιο έργο που κάνατε στο παρελθόν, γνώση και εμπειρία σε ένα συγκεκριμένο θέμα ή μια έτοιμη δουλειά πριν την έναρξη του hackathon. Ναι, δεν είναι αθλητικό. Ναι, αυτό μπορεί να μην αξίζει την προσπάθεια που καταβλήθηκε (εδώ, ο καθένας αποφασίζει μόνος του αν αξίζει να κωδικοποιήσετε για 3 εβδομάδες τη νύχτα για ένα έπαθλο 100 χιλιάδων, μοιρασμένο σε ολόκληρη την ομάδα, ακόμη και με τον κίνδυνο να μην το λάβετε). Αλλά, συχνά, αυτή είναι η μόνη ευκαιρία να προχωρήσετε.

3. Επιλογή ομάδας. Όπως παρατήρησα στις συνομιλίες hackathon, πολλοί προσεγγίζουν αυτό το θέμα αρκετά επιπόλαια (αν και αυτή είναι η πιο σημαντική απόφαση που θα καθορίσει το αποτέλεσμά σας στο hackathon). Σε πολλούς τομείς δραστηριότητας (τόσο στον αθλητισμό όσο και στα hackathons) έχω δει ότι οι δυνατοί άνθρωποι τείνουν να ενώνονται με τους δυνατούς, οι αδύναμοι με τους αδύναμους, οι έξυπνοι με τους έξυπνους, γενικά, καταλαβαίνετε... Αυτό συμβαίνει κατά προσέγγιση στις συνομιλίες: λιγότερο δυνατοί προγραμματιστές ξηλώνονται αμέσως, άνθρωποι που δεν έχουν πολύτιμες δεξιότητες για ένα hackathon μένουν στη συνομιλία για μεγάλο χρονικό διάστημα και επιλέγουν μια ομάδα με βάση την αρχή ότι αν κάποιος την έπαιρνε . Σε ορισμένα hackathons, ασκείται τυχαία ανάθεση σε ομάδες και οι διοργανωτές ισχυρίζονται ότι οι τυχαίες ομάδες δεν έχουν χειρότερη απόδοση από τις υπάρχουσες. Αλλά σύμφωνα με τις παρατηρήσεις μου, οι άνθρωποι με κίνητρα, κατά κανόνα, βρίσκουν μια ομάδα μόνοι τους, εάν κάποιος πρέπει να ανατεθεί, τότε, συχνά, πολλοί από αυτούς δεν έρχονται στο hackathon.

Όσο για τη σύνθεση της ομάδας, αυτή είναι πολύ ατομική και εξαρτάται σε μεγάλο βαθμό από την αποστολή. Θα μπορούσα να πω ότι η ελάχιστη βιώσιμη σύνθεση ομάδας είναι σχεδιαστής - front-end ή front-end - back-end. Αλλά γνωρίζω επίσης περιπτώσεις όπου κέρδισαν ομάδες που αποτελούνται μόνο από front-enders, οι οποίοι πρόσθεσαν ένα απλό back-end στο node.js ή έκαναν μια εφαρμογή για κινητά στο React Native. ή μόνο από backender που έκαναν απλή διάταξη. Γενικά, όλα είναι πολύ ατομικά και εξαρτώνται από την εργασία. Το σχέδιό μου για την επιλογή μιας ομάδας για το hackathon ήταν το εξής: Σχεδίαζα να συγκεντρώσω μια ομάδα ή να συμμετάσχω σε μια ομάδα όπως front-end - back-end - designer (είμαι και ο ίδιος front-end). Και πολύ γρήγορα άρχισα να συνομιλώ με έναν python backender και έναν σχεδιαστή που αποδέχτηκε την πρόσκληση να έρθει μαζί μας. Λίγο αργότερα, μια κοπέλα, αναλυτής επιχειρήσεων, που είχε ήδη εμπειρία να κερδίσει ένα hackathon, ήρθε μαζί μας και αυτό έκρινε το θέμα της ένταξής της μαζί μας. Μετά από μια σύντομη συνάντηση, αποφασίσαμε να ονομαζόμαστε U4 (URBAN 4, urban four) κατ' αναλογία με το φανταστικό τέσσερα. Και μάλιστα έβαλαν αντίστοιχη εικόνα στο avatar του καναλιού μας στο τηλεγράφημα.

4. Επιλογή εργασίας. Όπως είπα ήδη, πρέπει να έχετε ανταγωνιστικό πλεονέκτημα, η εργασία για το hackathon επιλέγεται με βάση αυτό. Με βάση αυτό, έχοντας κοιτάξει λίστα εργασιών και αξιολογώντας την πολυπλοκότητά τους, καταλήξαμε σε δύο καθήκοντα: έναν κατάλογο καινοτόμων επιχειρήσεων από το DPiIR και ένα chatbot από τον EFKO. Την εργασία από το DPIiR την επέλεξε ο backender, την εργασία από τον ΕΦΚΟ την επέλεξα εγώ, γιατί είχε εμπειρία στη σύνταξη chatbot στο node.js και στο DialogFlow. Το έργο του EFKO περιελάμβανε επίσης ML. Έχω κάποια, όχι πολύ μεγάλη, εμπειρία στο ML. Και σύμφωνα με τις συνθήκες του προβλήματος, μου φάνηκε ότι ήταν απίθανο να λυθεί χρησιμοποιώντας εργαλεία ML. Αυτό το συναίσθημα ενισχύθηκε όταν πήγα στο Urban Tech Challenge meetup, όπου οι διοργανωτές μου έδειξαν ένα σύνολο δεδομένων για τον EFKO, όπου υπήρχαν περίπου 100 φωτογραφίες διάταξης προϊόντων (τραβηγμένες από διαφορετικές οπτικές γωνίες) και περίπου 20 κατηγορίες σφαλμάτων διάταξης. Και, ταυτόχρονα, όσοι παρήγγειλαν την εργασία ήθελαν να επιτύχουν ποσοστό επιτυχίας κατάταξης 90%. Ως αποτέλεσμα, ετοίμασα μια παρουσίαση της λύσης χωρίς ML, ο backender ετοίμασε μια παρουσίαση με βάση τον κατάλογο και μαζί, αφού ολοκληρώσαμε τις παρουσιάσεις, τις στείλαμε στο Urban Tech Challenge. Ήδη σε αυτό το στάδιο, αποκαλύφθηκε το επίπεδο κινήτρων και συνεισφοράς κάθε συμμετέχοντα. Ο σχεδιαστής μας δεν συμμετείχε στις συζητήσεις, απάντησε αργά και μάλιστα συμπλήρωσε πληροφορίες για τον εαυτό του στην παρουσίαση την τελευταία στιγμή, γενικά, προέκυψαν αμφιβολίες.

Ως αποτέλεσμα, περάσαμε το έργο από το DPiIR, και δεν στεναχωρηθήκαμε καθόλου που δεν περάσαμε τον ΕΦΚΟ, αφού το έργο μας φαινόταν περίεργο, για να το θέσω ήπια.

5. Προετοιμασία για το hackathon. Όταν τελικά έγινε γνωστό ότι προκριθήκαμε στο hackathon, αρχίσαμε να προετοιμάζουμε την προετοιμασία. Και εδώ δεν υποστηρίζω να αρχίσουμε να γράφουμε κώδικα μια εβδομάδα πριν την έναρξη του hackathon. Τουλάχιστον, θα πρέπει να έχετε έτοιμο ένα boilerplate, με το οποίο μπορείτε να ξεκινήσετε αμέσως να εργάζεστε, χωρίς να χρειάζεται να διαμορφώσετε εργαλεία και χωρίς να προσκρούσετε σε σφάλματα κάποιου lib που αποφασίσατε να δοκιμάσετε για πρώτη φορά σε ένα hackathon. Ξέρω μια ιστορία για angular engineers που ήρθαν σε ένα hackathon και πέρασαν 2 ημέρες για να ρυθμίσουν την κατασκευή του έργου, επομένως όλα πρέπει να προετοιμαστούν εκ των προτέρων. Σκοπεύαμε να κατανείμουμε τις ευθύνες ως εξής: το backender γράφει προγράμματα ανίχνευσης που σαρώνουν το Διαδίκτυο και τοποθετούν όλες τις συλλεγμένες πληροφορίες στη βάση δεδομένων, ενώ εγώ γράφω ένα API στο node.js που υποβάλλει ερωτήματα σε αυτήν τη βάση δεδομένων και στέλνει τα δεδομένα στο μπροστινό μέρος. Από αυτή την άποψη, ετοίμασα έναν διακομιστή εκ των προτέρων χρησιμοποιώντας το express.js και ετοίμασα ένα front-end στο react. Δεν χρησιμοποιώ το CRA, προσαρμόζω πάντα το webpack για τον εαυτό μου και γνωρίζω πολύ καλά τους κινδύνους που μπορεί να εγκυμονεί αυτό (θυμηθείτε την ιστορία για τους γωνιακούς προγραμματιστές). Σε αυτό το σημείο, ζήτησα πρότυπα διεπαφής ή τουλάχιστον μακέτες από τον σχεδιαστή μας για να έχω μια ιδέα για το τι θα έβαζα. Θεωρητικά θα έπρεπε να κάνει και τις δικές του προετοιμασίες και να τις συντονίσει μαζί μας, αλλά απάντηση δεν πήρα ποτέ. Ως αποτέλεσμα, δανείστηκα το σχέδιο από ένα από τα παλιά μου έργα. Και άρχισε να λειτουργεί ακόμα πιο γρήγορα, αφού όλα τα στυλ για αυτό το έργο είχαν ήδη γραφτεί. Εξ ου και το συμπέρασμα: ένας σχεδιαστής δεν χρειάζεται πάντα σε μια ομάδα))). Ήρθαμε στο hackathon με αυτές τις εξελίξεις.

6. Εργασία στο hackathon. Η πρώτη φορά που είδα την ομάδα μου ζωντανά ήταν μόνο στα εγκαίνια του hackathon στο Κεντρικό Κέντρο Διανομής. Συναντηθήκαμε, συζητήσαμε τη λύση και τα στάδια εργασίας για το πρόβλημα. Και παρόλο που μετά το άνοιγμα έπρεπε να πάμε με το λεωφορείο για τον Κόκκινο Οκτώβριο, πήγαμε σπίτι για ύπνο, συμφωνώντας να φτάσουμε στο μέρος μέχρι τις 9.00. Γιατί; Οι διοργανωτές προφανώς ήθελαν να αξιοποιήσουν στο έπακρο τους συμμετέχοντες, οπότε κανόνισαν ένα τέτοιο πρόγραμμα. Αλλά, από την εμπειρία μου, μπορείτε να κωδικοποιήσετε κανονικά χωρίς να κοιμηθείτε για ένα βράδυ. Όσο για το δεύτερο, δεν είμαι πλέον σίγουρος. Ένα hackathon είναι ένας μαραθώνιος που πρέπει να υπολογίσετε και να σχεδιάσετε επαρκώς τη δύναμή σας. Επιπλέον, είχαμε προετοιμασίες.

Πώς και γιατί κερδίσαμε το κομμάτι Big Data στο hackathon Urban Tech Challenge

Επομένως, αφού κοιμηθήκαμε, στις 9.00 καθόμασταν στον έκτο όροφο του Dewocracy. Τότε ο σχεδιαστής μας απροσδόκητα ανακοίνωσε ότι δεν είχε φορητό υπολογιστή και ότι θα δούλευε από το σπίτι και θα επικοινωνούσαμε τηλεφωνικά. Αυτή ήταν η σταγόνα που ξεχείλισε το ποτήρι. Και έτσι γυρίσαμε από τέσσερα σε τρία, αν και δεν αλλάξαμε το όνομα της ομάδας. Και πάλι, αυτό δεν ήταν μεγάλο πλήγμα για εμάς, είχα ήδη το σχέδιο από το παλιό έργο. Σε γενικές γραμμές, στην αρχή όλα πήγαν αρκετά ομαλά και σύμφωνα με το σχέδιο. Φορτώσαμε στη βάση δεδομένων (αποφασίσαμε να χρησιμοποιήσουμε το neo4j) ένα σύνολο δεδομένων καινοτόμων εταιρειών από τους διοργανωτές. Άρχισα να στοιχειοθετώ, μετά ανέλαβα το node.js και μετά τα πράγματα άρχισαν να ελαττώνονται. Δεν είχα ξαναδουλέψει με το neo4j και στην αρχή έψαχνα για ένα λειτουργικό πρόγραμμα οδήγησης για αυτήν τη βάση δεδομένων, μετά κατάλαβα πώς να γράψω ένα ερώτημα και μετά με έκπληξη ανακάλυψα ότι αυτή η βάση δεδομένων, όταν ρωτήθηκε, επιστρέφει οντότητες στο μορφή μιας διάταξης αντικειμένων κόμβων και των άκρων τους. Εκείνοι. όταν ζήτησα έναν οργανισμό και όλα τα δεδομένα σε αυτόν μέσω TIN, αντί για ένα αντικείμενο οργανισμού, μου επεστράφη μια μεγάλη σειρά αντικειμένων που περιείχαν δεδομένα για αυτόν τον οργανισμό και τις σχέσεις μεταξύ τους. Έγραψα έναν χαρτογράφο που πέρασε από όλη τη συστοιχία και κόλλησα όλα τα αντικείμενα ανάλογα με την οργάνωσή τους σε ένα αντικείμενο. Αλλά στη μάχη, όταν ζητήθηκε μια βάση δεδομένων με 8 χιλιάδες οργανισμούς, εκτελέστηκε εξαιρετικά αργά, περίπου 20 - 30 δευτερόλεπτα. Άρχισα να σκέφτομαι τη βελτιστοποίηση... Και μετά σταματήσαμε εγκαίρως και μεταβήκαμε στο MongoDB, και μας πήρε περίπου 30 λεπτά. Συνολικά χάθηκαν περίπου 4 ώρες στο neo5j.

Θυμηθείτε, μην πηγαίνετε ποτέ την τεχνολογία σε ένα hackathon με το οποίο δεν είστε εξοικειωμένοι, μπορεί να υπάρξουν εκπλήξεις. Όμως, σε γενικές γραμμές, εκτός από αυτή την αποτυχία, όλα πήγαν σύμφωνα με το σχέδιο. Και ήδη το πρωί της 9ης Δεκεμβρίου, είχαμε μια πλήρως λειτουργική εφαρμογή. Για το υπόλοιπο της ημέρας προγραμματίσαμε να προσθέσουμε επιπλέον λειτουργίες σε αυτό. Στο μέλλον, όλα πήγαν σχετικά ομαλά για μένα, αλλά ο backender είχε ένα σωρό προβλήματα με την απαγόρευση των ανιχνευτών του στις μηχανές αναζήτησης, στο spam των aggregators νομικών οντοτήτων, που ήρθαν στις πρώτες θέσεις των αποτελεσμάτων αναζήτησης όταν ζητούσαν για κάθε συγκεκριμένη εταιρεία. Αλλά είναι καλύτερα να το πει μόνος του. Η πρώτη πρόσθετη δυνατότητα που πρόσθεσα ήταν η αναζήτηση με πλήρες όνομα. Γενικός Διευθυντής της VKontakte. Χρειάστηκαν αρκετές ώρες.

Έτσι, στη σελίδα της εταιρείας στην εφαρμογή μας, εμφανίστηκε ένα avatar του γενικού διευθυντή, ένας σύνδεσμος στη σελίδα του VKontakte και ορισμένα άλλα δεδομένα. Ήταν ένα ωραίο κεράσι στην τούρτα, αν και μπορεί να μην μας χάρισε τη νίκη. Στη συνέχεια, ήθελα να εκτελέσω κάποια αναλυτικά στοιχεία. Αλλά μετά από μια μακρά αναζήτηση επιλογών (υπήρχαν πολλές αποχρώσεις με τη διεπαφή χρήστη), συμφώνησα με την απλούστερη συνάθροιση οργανισμών ανά κωδικό οικονομικής δραστηριότητας. Ήδη το βράδυ, τις τελευταίες ώρες, έβαζα ένα πρότυπο για την εμφάνιση καινοτόμων προϊόντων (στην εφαρμογή μας υποτίθεται ότι υπάρχει μια ενότητα Προϊόντα και Υπηρεσίες), αν και το backend δεν ήταν έτοιμο για αυτό. Ταυτόχρονα, η βάση δεδομένων διογκωνόταν με άλματα, οι ανιχνευτές συνέχισαν να εργάζονται, το backender πειραματίστηκε με το NLP για να διακρίνει τα καινοτόμα κείμενα από τα μη καινοτόμα))). Όμως η ώρα της τελικής παρουσίασης πλησίαζε ήδη.

7. Παρουσίαση. Από τη δική μου εμπειρία, μπορώ να πω ότι θα πρέπει να μεταβείτε στην προετοιμασία μιας παρουσίασης περίπου 3 έως 4 ώρες πριν από την ημερομηνία λήξης της. Ειδικά αν περιλαμβάνει βίντεο, η λήψη και η επεξεργασία του απαιτεί αρκετό χρόνο. Υποτίθεται ότι είχαμε ένα βίντεο. Και είχαμε ένα ειδικό άτομο που ασχολήθηκε με αυτό, και επίσης έλυσε μια σειρά από άλλα οργανωτικά ζητήματα. Από αυτή την άποψη, δεν αποσπάσαμε την προσοχή μας από την κωδικοποίηση μέχρι την τελευταία στιγμή.

8. Βήμα. Δεν μου άρεσε που οι παρουσιάσεις και οι τελικοί πραγματοποιήθηκαν σε ξεχωριστή ημέρα της εβδομάδας (Δευτέρα). Εδώ, πιθανότατα, συνεχίστηκε η πολιτική των διοργανωτών να αποσπάσουν το μέγιστο από τους συμμετέχοντες. Δεν σχεδίαζα να πάρω άδεια από τη δουλειά, ήθελα μόνο να έρθω στους τελικούς, αν και η υπόλοιπη ομάδα μου πήρε το Σαββατοκύριακο. Ωστόσο, η συναισθηματική βύθιση στο hackathon ήταν ήδη τόσο υψηλή που στις 8 το πρωί έγραψα στο chat της ομάδας μου (της ομάδας εργασίας, όχι της ομάδας hackathon) ότι έπαιρνα τη μέρα με δικά μου έξοδα και πήγα στο κεντρικό γραφείο για γήπεδα. Το πρόβλημά μας αποδείχθηκε ότι είχε πολλούς επιστήμονες καθαρών δεδομένων και αυτό επηρέασε σε μεγάλο βαθμό την προσέγγιση για την επίλυση του προβλήματος. Πολλοί είχαν ένα καλό DS, αλλά κανείς δεν είχε ένα λειτουργικό πρωτότυπο, πολλοί δεν μπορούσαν να ξεπεράσουν τις απαγορεύσεις των ανιχνευτών τους στις μηχανές αναζήτησης. Ήμασταν η μόνη ομάδα με λειτουργικό πρωτότυπο. Και ξέραμε πώς να λύσουμε το πρόβλημα. Τελικά κερδίσαμε τον στίβο, αν και ήμασταν πολύ τυχεροί που επιλέξαμε το λιγότερο ανταγωνιστικό έργο. Κοιτάζοντας τα γήπεδα σε άλλες πίστες, καταλάβαμε ότι δεν θα είχαμε καμία πιθανότητα εκεί. Θέλω επίσης να πω ότι ήμασταν πολύ τυχεροί με την κριτική επιτροπή που έλεγξαν σχολαστικά τον κωδικό. Και, αν κρίνουμε από τις κριτικές, αυτό δεν συνέβη σε όλα τα κομμάτια.

9. Τελικός. Αφού κληθήκαμε πολλές φορές στην κριτική επιτροπή για αναθεώρηση κώδικα, νομίζοντας ότι επιτέλους είχαμε λύσει όλα τα θέματα, πήγαμε να γευματίσουμε στο Burger King. Εκεί μας κάλεσαν ξανά οι διοργανωτές, έπρεπε να ετοιμάσουμε γρήγορα τις παραγγελίες μας και να επιστρέψουμε.

Ο διοργανωτής μας έδειξε σε ποιο δωμάτιο έπρεπε να πάμε και μπαίνοντας, βρεθήκαμε σε μια προπόνηση δημόσιας ομιλίας για τις νικήτριες ομάδες. Τα παιδιά που έπρεπε να παίξουν στη σκηνή ήταν καλά φορτισμένα, όλοι βγήκαν σαν αληθινοί σόουμεν.

Και οφείλω να ομολογήσω, στον τελικό, με φόντο τις πιο δυνατές ομάδες από άλλες πίστες, μοιάσαμε χλωμή η νίκη στην υποψηφιότητα για κυβερνητικούς πελάτες επάξια πήγε στην ομάδα από την πίστα τεχνολογίας ακινήτων. Νομίζω ότι οι βασικοί παράγοντες που συνέβαλαν στη νίκη μας στην πίστα ήταν: η διαθεσιμότητα ενός έτοιμου blank, λόγω του οποίου καταφέραμε να φτιάξουμε γρήγορα ένα πρωτότυπο, η παρουσία "highlights" στο πρωτότυπο (αναζήτηση CEOs στα κοινωνικά δίκτυα) και τις δεξιότητες NLP του backender μας, που ενδιέφεραν επίσης πολύ την κριτική επιτροπή.

Πώς και γιατί κερδίσαμε το κομμάτι Big Data στο hackathon Urban Tech Challenge

Και εν κατακλείδι, παραδοσιακές ευχαριστίες σε όλους όσους μας στήριξαν, την κριτική επιτροπή του κομματιού μας, τον Evgeniy Evgrafiev (ο συγγραφέας του προβλήματος που λύσαμε στο hackathon) και φυσικά τους διοργανωτές του hackathon. Αυτό ήταν ίσως το μεγαλύτερο και πιο cool hackathon στο οποίο έχω συμμετάσχει ποτέ, δεν μπορώ παρά να ευχηθώ στα παιδιά να διατηρήσουν τόσο υψηλά πρότυπα στο μέλλον!

Πηγή: www.habr.com

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