Percée numérique - comment c'est arrivé

Ce n'est pas le premier hackathon que je gagne, ni le premier sur l'écriture, et ce n’est pas le premier article sur Habré consacré à la « percée numérique ». Mais je n’ai pas pu m’empêcher d’écrire. Je considère mon expérience suffisamment unique pour être partagée. Je suis probablement la seule personne à ce hackathon à avoir remporté l'étape régionale et la finale au sein de différentes équipes. Vous voulez savoir comment cela s'est produit ? Bienvenue au chat.

Scène régionale (Moscou, 27 et 28 juillet 2019).

J'ai vu pour la première fois une publicité pour « Digital Breakthrough » quelque part en mars-avril de cette année. Naturellement, je ne pouvais pas laisser passer un hackathon d’une telle envergure et je me suis inscrit sur le site Web. Là, j'ai 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, je l'aurais facilement oublié, puisque je n'ai pas reçu de lettre me rappelant le début des tests. Et je dois dire qu'à l'avenir, TOUTES LES LETTRES qui me parvenaient du processeur se retrouvaient systématiquement dans le dossier spam. Même si j’ai cliqué à chaque fois sur le bouton « non répréhensible ». Je ne sais pas comment ils ont réussi à obtenir un tel résultat, cela n'a pas fonctionné pour moi avec le mailing sur MailGun. Et les gars ne semblent pas du tout connaître l’existence de services comme isnotspam.com. Mais nous nous éloignons.

On m'a rappelé le début des tests lors d'une des réunions club de startups, là nous avons également discuté de la formation de l'équipe. Après avoir ouvert la liste des tests, je me suis d'abord assis au test Javascript. En général, les tâches étaient plus ou moins adéquates (comme ce que sera le résultat si vous ajoutez 1 + '1' dans la console). Mais d'après mon expérience, j'utiliserais de tels tests lors du recrutement pour un poste ou une équipe avec de très grosses réserves. Le fait est que dans le travail réel, un programmeur rencontre rarement de telles choses, avec sa capacité à déboguer rapidement le code - ces connaissances ne sont en aucune façon corrélées, et vous pouvez vous entraîner assez facilement à de telles choses pour des entretiens (je le sais par moi-même). En général, j'ai cliqué sur le test assez rapidement, dans certains cas je me suis vérifié moi-même dans la console. Dans le test python, les tâches étaient à peu près du même type, je me suis également testé dans la console, et j'ai été surpris de marquer plus de points qu'en JS, même si je n'ai jamais programmé professionnellement en Python. Plus tard, lors de conversations avec les participants, j'ai entendu des histoires sur la façon dont des programmeurs forts obtenaient de mauvais résultats aux tests, sur la façon dont certaines personnes recevaient des lettres disant qu'elles n'avaient pas réussi le processus de sélection pour le CPU, puis y étaient quand même invitées. Il est clair que les créateurs de ces tests n'ont probablement pas entendu parler de théorie des tests, ni sur leur fiabilité et leur validité, ni sur la manière de les tester, et l'idée des tests aurait été un échec dès le début, même si nous n'avions pas pris en compte l'objectif principal du hackathon. Et l'objectif principal du hack, comme je l'ai appris plus tard, était d'établir un record Guinness, et les tests l'ont contredit.

À un moment donné, après avoir réussi les tests, ils m'ont appelé, m'ont demandé si je voulais participer, ont clarifié les détails et m'ont indiqué comment accéder au chat pour sélectionner une équipe. Bientôt, je suis entré dans le chat et j'ai écrit brièvement sur moi. Il y avait beaucoup de conneries dans le chat ; il semblait que les organisateurs faisaient de la publicité à un grand nombre de personnes aléatoires qui n'avaient rien à voir avec l'informatique. De nombreux chefs de produit « au niveau de Steve Jobs » (une vraie expression tirée de la soumission d'un participant) ont publié des histoires sur eux-mêmes, et les développeurs normaux n'étaient même pas visibles. Mais j'ai eu de la chance et j'ai rapidement rejoint trois programmeurs JS expérimentés. Nous nous sommes déjà rencontrés au hackathon, puis nous avons ajouté une fille à l'équipe pour nous inspirer et résoudre les problèmes d'organisation. Je ne me souviens pas pourquoi, mais nous avons pris le sujet « Formation à la cybersécurité » et l'avons inclus dans le volet « Science et éducation 2 ». Pour la première fois, je me suis retrouvé dans une équipe de 4 programmeurs forts et pour la première fois j'ai senti à quel point il était facile de gagner dans une telle composition. Nous sommes arrivés au dépourvu et nous nous sommes disputés jusqu'au déjeuner sans pouvoir décider de ce que nous ferions : une application mobile ou une application Web. Dans n’importe quelle autre situation, j’aurais pensé que c’était un échec. La chose la plus importante pour nous était de comprendre en quoi nous serions meilleurs que nos concurrents, car il y avait beaucoup d'équipes autour qui effectuaient des tests, des jeux de cybersécurité, etc. Après avoir examiné cela et recherché des programmes et des applications de formation sur Google, nous avons décidé que notre principal différenciateur serait les exercices d'incendie. Nous avons sélectionné un certain nombre de fonctionnalités qui nous ont semblé intéressantes à mettre en œuvre (inscription avec vérification de l'email et du mot de passe auprès des bases de données de pirates, envoi d'e-mails de phishing (sous forme de lettres de banques connues), formation à l'ingénierie sociale en chat). Après avoir décidé de ce que nous faisions et compris comment nous pourrions nous démarquer, nous avons rapidement écrit une application Web à part entière et j'ai joué le rôle inhabituel de développeur backend. Ainsi, nous avons remporté notre piste avec confiance et, avec trois autres équipes, nous sommes qualifiés pour la finale à Kazan. Plus tard, à Kazan, j'ai appris que la sélection pour la finale était une fiction, j'y ai rencontré de nombreux visages familiers des équipes qui n'avaient pas réussi la sélection. Nous avons même été interviewés par des journalistes de la Première Chaîne. Cependant, dans le rapport, notre application n'a été affichée que pendant 1 seconde.

Percée numérique - comment c'est arrivé
Equipe enneigée, où j'ai gagné l'étape régionale

Finale (Kazan, 27 – 29 septembre 2019)

Mais ensuite les échecs ont commencé. Tous les programmeurs de l'équipe Snowed ont signalé, un mois après l'autre, qu'ils ne pourraient pas se rendre à Kazan pour la finale. Et j'ai pensé à trouver une nouvelle équipe. Tout d'abord, j'ai passé un appel dans le chat général de la Russian Hack Team, et bien que j'y ai reçu beaucoup de réponses et d'invitations à rejoindre des équipes, aucune d'entre elles n'a attiré mon attention. Il y avait des équipes déséquilibrées, comme le produit, le développeur mobile, le front-end, qui rappelaient un cygne, une écrevisse et un brochet d'une fable. Il y avait aussi des équipes qui ne me convenaient pas en termes de technologie (par exemple, avec le développement d'une application mobile dans Flutter). Enfin, dans un chat que j'ai considéré comme trash (le même VKontakte où s'est déroulée la sélection des équipes pour la scène régionale), une annonce a été postée sur la recherche d'un frontender pour l'équipe, et j'ai écrit au hasard. Les gars se sont avérés être des étudiants diplômés de Skoltech et ont immédiatement proposé de se rencontrer et de faire connaissance. J'ai bien aimé : les équipes qui préfèrent faire connaissance tout de suite lors d'un hackathon m'alarment généralement par leur manque de motivation. Nous nous sommes rencontrés au « Rake » sur Pyatnitskaya. Les gars semblaient intelligents, motivés, confiants en eux-mêmes et en la victoire, et j'ai pris la décision sur-le-champ. Nous ne savions pas encore quelles seraient les pistes et les tâches en finale, mais nous pensions que nous choisirions quelque chose en rapport avec le Machine Learning. Et ma tâche sera d'écrire un administrateur à ce sujet, j'ai donc préparé à l'avance un modèle pour cela basé sur antd-admin.
Je suis allé à Kazan gratuitement, aux frais des organisateurs. Je dois dire que beaucoup d'insatisfactions ont déjà été exprimées dans les chats et blogs concernant l'achat de billets et, en général, l'organisation de la finale, je ne vais pas tout raconter.

Arrivés à Kazan Expo, inscrits (j'ai eu un peu de mal à obtenir un badge) et pris le petit déjeuner, nous sommes allés choisir une piste. Nous ne sommes allés à l'inauguration officielle, où les officiels ont parlé, que pendant environ 10 minutes. En fait, nous avions déjà nos morceaux préférés, mais nous étions intéressés par les détails. Dans la piste n°18 (Rostelecom), par exemple, il s'est avéré qu'il était nécessaire de développer une application mobile, même si cela ne figurait pas dans la brève description. Nous avons fait le choix principal entre la piste n° 8 Défectoscopie des pipelines, Gazprom Neft PJSC et la piste n° 13 Centres périnatals, Chambre des comptes de la Fédération de Russie. Dans les deux cas, la Data Science était nécessaire, et dans les deux cas, le Web aurait pu être ajouté. Dans la piste n°13, nous avons été arrêtés par le fait que la tâche Data Science y était assez faible, il fallait analyser Rosstat et il n'était pas clair si un panneau d'administration était nécessaire. Et la valeur même de la tâche était mise en doute. En fin de compte, nous avons décidé qu'en tant qu'équipe, nous étions plus adaptés à la piste 8, d'autant plus que les gars avaient déjà de l'expérience dans la résolution de problèmes similaires. Nous avons commencé par réfléchir au scénario dans lequel notre application serait utilisée par l'utilisateur final. Il s'est avéré que nous aurions deux types d'utilisateurs : des techniciens intéressés par les informations techniques et des managers qui avaient besoin d'indicateurs financiers. Lorsqu'une idée du scénario a émergé, il est devenu clair quoi faire sur le front-end, ce que le concepteur devait dessiner et quelles méthodes étaient nécessaires sur le back-end, il est devenu possible de répartir les tâches. Les responsabilités dans l'équipe étaient réparties comme suit : deux personnes ont résolu le ML avec les données reçues d'experts techniques, une personne a écrit le backend en Python, j'ai écrit le front-end en React et Antd, le concepteur a dessiné les interfaces. Nous nous sommes même assis pour qu'il soit plus pratique pour nous de communiquer tout en résolvant nos problèmes.

Le premier jour est passé presque inaperçu. Lors d'une communication avec des experts techniques, il s'est avéré qu'ils (Gazprom Neft) avaient déjà résolu ce problème, ils se demandaient simplement s'il était possible de le résoudre mieux. Je ne dirai pas que cela a réduit ma motivation, mais cela a laissé un résidu. J'ai été surpris que la nuit, les modérateurs de la section notent les équipes de travail (comme ils le disaient pour les statistiques), ce qui n'est généralement pas pratiqué lors des hackathons. Au matin, nous avions un prototype de l'avant, quelques rudiments de l'arrière et la première solution ML prête. En général, il y avait déjà quelque chose à montrer aux experts. Le samedi après-midi, le concepteur a évidemment dessiné plus d'interfaces que je n'aurais le temps de coder et est passé à la création d'une présentation. Le samedi était réservé à l'enregistrement du dossier, et le matin, toutes les personnes travaillant dans la salle étaient expulsées dans le couloir, puis l'entrée et la sortie de la salle s'effectuaient à l'aide de badges, et il n'était plus possible de sortir qu'une heure par jour. Je ne dirai pas que cela nous a causé de gros désagréments : nous restions assis et travaillions la majeure partie de la journée. La nourriture, en effet, était très maigre ; pour le déjeuner nous avons reçu un verre de bouillon, une tarte et une pomme, mais encore une fois cela ne nous a pas beaucoup dérangés, nous étions concentrés sur autre chose.

Ils distribuaient périodiquement du Red Bull, deux canettes par main, ce qui était très utile. La recette boisson énergisante + café, testée depuis longtemps lors de hackathons, m'a permis de coder toute la nuit et le lendemain, en étant joyeux comme un verre. Le deuxième jour, nous avons simplement ajouté de nouvelles fonctionnalités à l'application, calculé des indicateurs financiers et commencé à afficher des graphiques sur les statistiques de défauts sur les autoroutes. Il n'y a pas eu de révision de code en tant que telle dans notre piste ; les experts ont évalué la solution au problème dans le style kaggle.com, sur la base de l'exactitude des prévisions, et le front-end a été évalué visuellement. Notre solution ML s'est avérée la plus précise, c'est peut-être ce qui nous a permis de devenir leaders. Dans la nuit du samedi au dimanche, nous avons travaillé jusqu'à 2 heures du matin, puis nous sommes allés dormir dans l'appartement qui nous servait de base. Nous avons dormi environ 5 heures, dimanche à 9 heures nous étions déjà à Kazan Expo. J'ai préparé quelque chose à la hâte, mais la plupart du temps a été consacré à préparer la pré-défense. Les pré-défenses se sont déroulées en 2 volets, devant deux équipes d'experts ; il nous a été demandé de parler en dernier, car les deux équipes d'experts voulaient nous écouter. Nous avons pris cela comme un bon signe. L'application a été affichée depuis mon ordinateur portable, depuis un serveur de développement en cours d'exécution ; nous n'avons pas eu le temps de déployer correctement l'application, cependant, tout le monde a fait de même.

En général, tout s'est bien passé, on nous a signalé des points sur lesquels nous pouvions améliorer notre candidature et, avant la soutenance, nous avons même essayé de mettre en œuvre certains de ces commentaires. La défense s’est également déroulée étonnamment bien. Sur la base des résultats de la pré-défense, nous savions que nous étions en avance en termes de points, nous étions en tête en termes de précision de la solution, nous avions un bon front-end, une bonne conception et, en général, nous avions un bon sentiments. Un autre signe favorable était que la modératrice de notre section avait pris un selfie avec nous avant d'entrer dans la salle de concert, et j'ai alors soupçonné qu'elle savait peut-être quelque chose))). Mais nous ne connaissions pas nos scores après la défense, donc le temps jusqu'à l'annonce de notre équipe depuis la scène était un peu tendu. Sur scène, ils ont remis un carton avec l'inscription 500000 XNUMX roubles et chacun a reçu un sac contenant une tasse et une batterie de téléphone portable. Nous n’avons pas réussi à profiter de la victoire et à la célébrer comme il se doit ; nous avons rapidement dîné et pris un taxi jusqu’au train.

Percée numérique - comment c'est arrivé
L'équipe WAICO remporte la finale

De retour à Moscou, les journalistes de NTV nous ont interviewés. Nous avons filmé pendant une heure entière au deuxième étage du café Kvartal 44 à Polyanka, mais les informations n'ont montré qu'une dizaine de secondes, après tout, un progrès important par rapport à la scène régionale.

Si nous résumons les impressions générales de la percée numérique, elles sont les suivantes. Beaucoup d'argent a été dépensé pour l'événement, je n'ai jamais vu de hackathons d'une telle ampleur auparavant. Mais je ne peux pas dire que cela soit justifié et que cela sera vraiment payant. Une partie importante des participants venus à Kazan étaient simplement des fêtards qui ne savaient rien faire de leurs propres mains et qui étaient obligés d'établir un record. Je ne peux pas dire que la compétition en finale était plus élevée qu’au niveau régional. En outre, la valeur et l'utilité des tâches de certaines pistes sont discutables. Certains problèmes sont résolus depuis longtemps au niveau industriel. Comme il s’est avéré plus tard, certaines organisations qui ont mené les recherches n’étaient pas intéressées à les résoudre. Et cette histoire n'est pas encore terminée, les équipes dirigeantes de chaque piste ont été sélectionnées pour le pré-accélérateur, et on suppose qu'elles se révéleront être des startups PERCÉES. Mais je ne suis pas encore prêt à écrire à ce sujet, nous verrons ce qui en résultera.

Source: habr.com

Ajouter un commentaire