Percée numérique : comment cela s'est produit

Ce n'est pas le premier hackathon que je gagne, ni le premier dont je parle, et ce n'est certainement pas le premier article sur Habr consacré au « Projet numérique ». Mais je ne pouvais pas m'empêcher d'écrire. Je considère que mon expérience est suffisamment unique pour la partager. Il se peut que je sois la seule personne de ce hackathon à avoir remporté la phase régionale et la finale avec différentes équipes. Vous voulez savoir comment cela s'est passé ? Bienvenue sous le capot.

Phase régionale (Moscou, 27 - 28 juillet 2019).

J'ai vu la publicité pour le « Projet numérique » pour la première fois quelque part en mars-avril de cette année. Évidemment, je ne pouvais pas passer à côté d'un hackathon aussi important et je me suis inscrit sur le site. J'y ai également pris connaissance des conditions et du programme du concours. Il s'est avéré que pour participer au hackathon, il fallait passer un test en ligne qui a débuté le 16 mai. Et peut-être que j'aurais oublié cela sans encombre, car je n'ai pas reçu de courriel de rappel pour le début du test. Il faut dire que par la suite, TOUS LES COURRIELS que j'ai reçus du CP atterrissaient systématiquement dans le dossier spam. Même si je cliquais chaque fois sur le bouton « n'est pas un spam ». Je ne sais pas comment ils ont réussi un tel résultat, ça ne m'est pas arrivé avec ma campagne sur MailGun. Et il semble que les gars ne savent pas du tout qu'il existe des services comme isnotspam.com. Mais revenons à nos moutons.

On m'a rappelé le début du test lors d'une des réunions du club de startups, nous avons également discuté de la formation de l'équipe. En ouvrant la liste des tests, je me suis tout de suite penché sur le test Javascript. En général, les questions étaient plus ou moins adéquates (par exemple, quel est le résultat de 1 + '1' dans la console). Mais d'après mon expérience, je m'avérerais très prudent à utiliser de tels tests lors du recrutement ou de la constitution d'une équipe. En réalité, un programmeur est rarement confronté à ce genre de choses au travail, et sa capacité à coder rapidement — ces connaissances ne correspondent pas vraiment, et s'entraîner sur de tels sujets pour des entretiens est assez facile (je le sais pour ma part). En gros, j'ai répondu au test assez vite, et dans certains cas, je me suis vérifié dans la console. Pour le test Python, les tâches étaient de type similaire, j'ai également vérifié dans la console et, à ma surprise, j'ai obtenu un meilleur score qu'en JS, bien que je n'aie jamais programmé professionnellement en Python. Plus tard, lors des discussions avec d'autres participants, j'ai entendu des histoires de programmeurs compétents qui avaient obtenu de faibles scores à ces tests, de personnes ayant reçu des emails leur annonçant qu'elles n'avaient pas réussi la présélection pour le CP, mais qui étaient ensuite quand même invitées. Il est évident que les créateurs de ces tests n'avaient probablement aucune idée de la théorie des tests, ni de leur fiabilité et validité, ni de la manière de les tester, et l'idée même de ces tests était vouée à l'échec, même sans prendre en compte l'objectif principal du hackathon. Et l'objectif principal du hack, comme je l'ai appris plus tard, était de battre le record Guinness, et les tests lui étaient contre-intuitifs.

À un moment donné après les tests, j'ai reçu un appel, on m'a demandé si je souhaitais participer, on a précisé les détails et on m'a expliqué comment rejoindre le chat pour former une équipe. Peu après, je suis entré dans le chat et j'ai brièvement parlé de moi. C'était un véritable chaos dans le chat, on avait l'impression que les organisateurs avaient attiré beaucoup de personnes au hasard avec de la publicité, qui n'avaient aucun lien avec l'informatique. De nombreux chefs de produit « niveau Steve Jobs » (une vraie phrase d'une présentation d'un participant) publiaient des récits sur eux-mêmes, tandis que de bons développeurs étaient quasiment invisibles. Mais j'ai eu de la chance et j'ai rapidement rejoint trois développeurs JS expérimentés. Nous nous sommes rencontrés lors du hackathon, et ce jour-là, nous avons ajouté une fille à l'équipe pour être inspirés et résoudre des questions organisationnelles. Je ne me souviens plus pourquoi, mais nous avons choisi le thème « Apprentissage de la cybersécurité » et avons été placés dans le parcours « Science et éducation 2 ». C'était ma première fois dans une équipe de quatre programmeurs talentueux et j'ai ressenti pour la première fois à quel point il est facile de gagner avec une telle composition. Nous sommes arrivés non préparés et avons discuté jusqu'à l'heure du déjeuner sans parvenir à nous décider sur notre projet : une application mobile ou un site Web. Dans n'importe quelle autre situation, je penserais que c'était un échec. Pour nous, le plus important était de comprendre en quoi nous serions meilleurs que nos concurrents, car il y avait beaucoup d'équipes qui faisaient des tests, des jeux sur la cybersécurité et des choses similaires. En observant cela et en recherchant des programmes et des applications éducatifs, nous avons décidé que notre principal atout serait des entraînements basés sur le principe de l'alerte incendie. Nous avons sélectionné une série de fonctionnalités que nous avons trouvées intéressantes à réaliser (inscription avec vérification par e-mail et mot de passe via des bases de données de hackers, envoi de courriels de phishing (sous forme de courriers de banques connues), entraînements sur l'ingénierie sociale dans le chat). Une fois que nous avons défini ce que nous allions faire et compris comment nous pouvions nous démarquer, nous avons rapidement écrit une application web complète, et j'ai joué un rôle de développeur backend qui ne m'était pas habituel. Ainsi, nous avons remporté notre parcours avec confiance et, avec trois autres équipes, nous avons été sélectionnés pour la finale à Kazan. Plus tard, à Kazan, j'ai découvert que la sélection pour la finale était une farce ; j'ai rencontré de nombreux visages familiers d'équipes qui n'avaient pas réussi ce processus de sélection. Même des journalistes de la première chaîne nous ont interviewés. Cependant, dans le reportage, notre application n'a été montrée que pendant une seconde.

Percée numérique : comment cela s'est produit
L'équipe Snowed, avec laquelle j'ai remporté la phase régionale

Finale (Kazan, 27 – 29 septembre 2019)

Mais ensuite, les déceptions ont commencé. Tous les programmeurs de l'équipe Snowed ont, pendant environ un mois, annoncé un à un qu'ils ne pourraient pas se rendre à Kazan pour la finale. J'ai donc commencé à chercher une nouvelle équipe. Au début, j'ai lancé un appel dans le chat général de l'équipe russe de hackers, et bien que j'aie reçu pas mal de réponses et d'invitations à rejoindre des équipes, aucune ne m'a vraiment attiré. Il y avait des équipes déséquilibrées, comme celle d'un product manager, d'un développeur mobile et d'un frontend, ça ressemblait au conte du cygne, du crabe et du brochet. Il y avait aussi des équipes qui ne me convenaient pas d'un point de vue technologique (par exemple, celles développant une application mobile avec Flutter). Enfin, dans un chat que je considérais comme peu sérieux (celui-là même sur VKontakte où se faisait la sélection des équipes pour la phase régionale), une annonce cherchant un frontend pour une équipe a été publiée, et j'ai écrit au hasard. Les gars étaient des doctorants de Skoltech et ont tout de suite proposé de se rencontrer. Cela m'a plu, les équipes qui préfèrent se rencontrer directement lors d'un hackathon me mettent généralement mal à l'aise par leur manque de motivation. Nous avons rencontré à « Grably » sur Piotriskaya. Les gars m'ont semblé compétents, motivés, confiants en eux et en la victoire, et j'ai pris ma décision sur-le-champ. Nous ne savions pas encore quels seraient les sujets et les problèmes à résoudre en finale, mais nous supposions que nous choisirions quelque chose en rapport avec le Machine Learning. Ma tâche serait de rédiger une interface d'administration pour cela, donc j'avais déjà préparé une base à partir d'antd-admin.
Je suis allé à Kazan gratuitement, à l'initiative des organisateurs. Il faut dire qu'il y avait déjà eu beaucoup de mécontentement exprimé dans les chats et les blogs au sujet de l'achat des billets et, d'une manière générale, de l'organisation de la finale, je ne vais pas tout répéter.

Après être arrivé au Kazan Expo, m'être enregistré (j'ai eu quelques problèmes pour obtenir mon badge) et avoir pris mon petit-déjeuner, nous sommes allés choisir une piste. Nous avons seulement assisté à l'ouverture officielle, où des personnalités ont pris la parole, pendant environ 10 minutes. En réalité, nous avions déjà des pistes préférées, mais nous étions intéressés par les détails. Par exemple, dans la piste n° 18 (Rostelecom), il s'est avéré qu'il fallait développer une application mobile, alors que cela n'était pas mentionné dans la description succincte. Notre choix principal se faisait entre la piste n° 8, Détection des défauts des pipelines, PJSC Gazprom Neft, et la piste n° 13, Centres périnataux, Chambre des comptes de la Fédération de Russie. Dans les deux cas, il fallait du Data Science, et on aurait également pu intégrer du web. Dans la piste n° 13, ce qui nous a arrêtés, c'est que la tâche de Data Science était assez faible, nous devions parser les données de Rosstat et il n'était pas clair si une interface administrateur était nécessaire. De plus, la valeur même de la tâche suscitait des doutes. Au final, nous avons décidé qu'en tant qu'équipe, nous étions davantage orientés vers la piste 8, surtout que les gars avaient déjà une expérience dans la résolution de tâches similaires. Nous avons commencé par réfléchir au scénario selon lequel notre application sera utilisée par l'utilisateur final. Il s'est avéré que nous aurions deux types d'utilisateurs : les techniciens, qui s'intéressent aux informations techniques, et les managers, qui ont besoin de données financières. Une fois le scénario établi, il est devenu clair ce qu'il fallait faire côté front, ce que le designer devait créer, et quels outils étaient nécessaires côté backend, ce qui a permis de répartir les tâches. Les responsabilités dans l'équipe étaient réparties comme suit : deux personnes s'occupaient du ML avec les données fournies par les experts techniques, une personne écrivait le backend en Python, je travaillais sur le front avec React et Ant Design, et le designer concevait les interfaces. Nous nous sommes même assis de manière à faciliter la communication tout en résolvant nos tâches.

Les premières 24 heures se sont écoulées presque sans que nous ne les remarquions. Dans nos échanges avec les experts techniques, il s'est avéré que cette tâche avait déjà été accomplie par eux (« Gazprom Neft »), ils étaient simplement curieux de savoir s'il était possible de le faire mieux. Je ne dirais pas que cela a réduit la motivation, mais une petite amertume est restée. Ce qui m'a surpris, c'est que pendant la nuit, les modérateurs des sections notaient les équipes à l'œuvre (comme ils l'appelaient pour des statistiques), ce qui n'est généralement pas une pratique courante lors des hackathons. Le matin, nous avions déjà un prototype du front-end, quelques ébauches du back-end et la première solution en ML. En gros, nous avions déjà quelque chose à montrer aux experts. Dans l'après-midi du samedi, le designer avait dessiné plus d'interfaces que je n'aurais eu le temps de coder et est passé à la création de la présentation. Le samedi était consacré à l'enregistrement du record, et dès le matin, tous ceux qui travaillaient dans la salle ont été expulsés dans le couloir, puis l'entrée et la sortie de la salle se faisaient par badge, avec la restriction de ne pas pouvoir sortir plus d'une heure dans la journée. Je ne dirais pas que cela nous a causé beaucoup d'inconvénients, car nous étions de toute façon assis et travaillions la majeure partie de la journée. La nourriture était en effet très limitée, pour le déjeuner, nous avions un petit verre de bouillon, un beignet et une pomme, mais encore une fois, cela ne nous a pas vraiment dérangés, nous étions concentrés sur autre chose.

Nous avons périodiquement reçu des canettes de red bull, deux par personne, ce qui était très utile. Le mélange éprouvé d'énergie + café lors des hackathons nous permettait de coder toute la nuit et le jour suivant, restant frais comme un gardon. Le deuxième jour, nous ajoutions essentiellement de nouvelles fonctionnalités à l'application, calculions les indicateurs financiers et commencions à présenter des graphiques sur les statistiques de défauts dans les circuits. Il n'y avait pas vraiment de revue de code dans notre parc, les experts évaluaient la solution au style kaggle.com, en fonction de la précision des prévisions, tandis que le frontend était évalué visuellement. Notre solution en ML s'est avérée la plus précise, c'est peut-être ce qui nous a permis de nous hisser en tête. Dans la nuit de samedi à dimanche, nous avons travaillé jusqu'à 2 heures du matin, puis nous sommes allés dormir dans l'appartement que nous utilisions comme base. Nous avons dormi environ 5 heures, et dimanche à 9 heures du matin, nous étions déjà à Kazan Expo. J'étais en train de peaufiner rapidement, mais la majeure partie du temps était consacrée à la préparation de la pré-défense. Les pré-défenses se déroulaient en deux sessions, devant deux équipes d'experts, nous avons demandé à intervenir en dernier, car les deux équipes voulaient nous écouter. Nous avons pris cela comme un bon signe. L'application était présentée depuis mon ordinateur portable, avec le serveur de développement en cours d'exécution, nous n'avons pas eu le temps de déployer l'application correctement, mais c'était le cas de tout le monde.

Dans l'ensemble, tout s'est bien passé, nous avons été informés des points sur lesquels nous pouvions améliorer notre application, et dans le temps avant la défense, nous avons même essayé de mettre en œuvre certaines de ces remarques. La défense s'est également déroulée étonnamment sans accroc. À l'issue de la pré-défense, nous savions que nous étions en tête au score, nous étions premiers en termes de précision de la solution, nous avions un bon frontend, un bon design et, dans l'ensemble, nous avions de bonnes pressentiments. Un autre signe favorable fut que la modératrice de notre section a pris un selfie avec nous avant d'entrer dans la salle de concert, à ce moment-là, j'ai commencé à suspecter qu'elle savait peut-être quelque chose))). Mais nous ne connaissions pas nos scores après la défense, donc le temps avant l'annonce de notre équipe depuis la scène était un peu tendu. Sur scène, un carton avec l'inscription 500000 roubles a été remis, et à chacun un sachet avec une tasse et un chargeur de téléphone. Nous n'avons pas pu pleinement profiter de la victoire et la célébrer normalement, nous avons rapidement dîné et avons pris un taxi pour le train.

Percée numérique : comment cela s'est produit
L'équipe WAICO remporte la finale.

À notre retour à Moscou, des journalistes d'NTV nous ont interviewés. Ils ont filmé pendant une heure au deuxième étage du café «Kvartal 44» à Polyanka, mais dans les informations, ils n'ont montré que dix secondes. C'est tout de même un grand progrès par rapport à l'étape régionale.

En résumé, les impressions générales du Digital Break sont les suivantes. Des sommes considérables ont été dépensées pour cet événement, je n'ai jamais vu d'hackathons d'une telle ampleur. Mais je ne peux pas dire que cela en valait vraiment la peine et que l'investissement sera rentabilisé. Une part significative des participants venus à Kazan étaient simplement des fêtards, qui ne savaient rien faire de leurs mains, et qui ont été rassemblés pour établir un record. Je ne peux pas dire que la concurrence en finale était plus forte qu'à l'étape régionale. De plus, la valeur et l'utilité des tâches de certains tracks sont douteuses. Certaines tâches avaient déjà été résolues à un niveau industriel. Comme il s'est avéré plus tard, certaines organisations qui géraient les tracks n'étaient pas vraiment intéressées à leur solution. Et cette histoire n'est pas encore terminée, les équipes leaders de chaque track ont été sélectionnées pour le préaccélérateur, et il est supposé que ce seront des startups RÉVOLUTIONNAIRES. Mais je ne suis pas encore prêt à écrire à ce sujet, voyons ce que cela donnera.

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster