Suite à sa participation à un Hackathon chez son client, notre ossian Lyes nous partage son retour d'expérience.
Bonjour Lyes! Merci d’avoir pris le temps de faire cette interview. Récemment tu as participé à un hackathon chez ton client.
Ton équipe a fini dans le top 3, félicitations.
Peux-tu nous raconter brièvement en quoi consistait le hackathon et quel était l'objectif principal de ton équipe ?
Bonjour Eléonore. Avec plaisir, le hackathon était une compétition qui a duré une journée pendant laquelle participaient plusieurs équipes de développeurs. Le but était de proposer une solution informatique portant sur un sujet choisi par chaque équipe pour fournir de la valeur ajoutée à notre client. Nous avons choisi de mettre au point un prototype d’application de monitoring des dépendances et d'utilisations des APIs.
Quelles étaient les principales fonctionnalités de l’application ?
L’application qu’on a choisie de développer peut potentiellement proposer un large éventail de fonctionnalités servant à cataloguer et gérer les APIs utilisées et développées chez notre client, parmi ces features on peut citer :
Quelles étaient les principales étapes de développement de celle-ci ?
Étant donné que nous n’avions que très peu de temps pour mettre au point un prototype fonctionnel, nous avons plus ou moins “rushé” les étapes de développement de l'application.
On a commencé par une séance “whiteboard” durant laquelle on a réfléchi et fait des propositions pour d’une liste de fonctionnalités minimales qu’on pouvait développer en une journée, nous avons ensuite dressé un schéma de l’architecture de l’application et mis au point un wireframe simplifiée pour l’interface graphique du prototype.
On a ensuite partagé les différentes tâches de travail comme la récupération des données nécessaires au fonctionnement du prototype, le développement de l’interface graphique et la réalisation des slides de présentation du projet.
Quelles technos, API ou services avez-vous utilisés dans votre projet, et pourquoi les avez-vous choisis ?
Nous avons utilisé le langage Python pour récupérer les données et les exposer sous forme d’une REST API pouvant être appelée par le client.
On a mis en place une interface graphique en utilisant le langage Typescript et le framework front end Angular.
Nous avons privilégié ces outils/APIs car les membres de notre équipe étaient familiers avec ces derniers, cela nous a évité pas mal de bugs potentiels et nous a fait gagner du temps ce qui est très important dans ce genre de compétition.
Quels ont été les défis techniques auxquels ton équipe a dû faire face pendant le hackathon ?
Nous avons rencontré quelques difficultés pour récupérer, agréger et filtrer une quantité de données brutes acceptable pour présenter le prototype. Nous avons ensuite dû adapter ces données et les reconstruire sous un format spécifique afin de les afficher et les synthétiser sous forme d’une interface graphique facile à visualiser ce qui était un challenge étant donnée la durée de ce dernier.
Comment avez-vous géré la planification et la répartition des tâches au sein de ton équipe pendant la compétition ?
Nous avons catégorisé les tâches selon leurs priorités “principales” et “secondaires”.
Nous nous sommes répartis les tâches après le whiteboard, des approches techniques ont été proposées pour réaliser les objectifs fixés et les membres de l’équipe qui avaient une idée précise pour implémenter une feature coopéraient entre eux. Des membres plus expérimentés étaient présents en renfort pour suggérer des approches plus adaptées, superviser et coordonner les développeurs qui implémentaient les fonctionnalités de l’application.
Peux-tu nous donner un aperçu de la conception de votre application et des choix de conception que vous avez fait pour améliorer l'expérience utilisateur ?
Par manque de temps, on s’est contenté de quelques diagrammes dessinés sur le whiteboard pour illustrer au mieux les objectifs à atteindre et l’architecture de l’application. L’application est découpé en deux parties:
Le principal choix de conception pour contribuer à améliorer l’expérience utilisateur était d’afficher ces données sous forme d’un graphe de dépendance qui peut être visualisé plus facilement par un utilisateur humain. Nous avions aussi pour idée de proposer de filtrer les données du graphes selon différents critères sélectionnés par l’utilisateur.
Comment avez-vous assuré la sécurité des données dans l’application ?
Il n’était pas vraiment question de se focaliser sur l’aspect sécurité de l’application à ce stade du développement au vu de la durée de la compétition ainsi que l'effectif réduit de l’équipe, notre objectif principal était de présenter un prototype pour illustrer la valeur ajoutée que pouvait apporter une telle application à l’entreprise.
As-tu eu des retours de la part des juges du hackathon ? Si oui, quels étaient-ils ?
On a fait une brève présentation du prototype aux juges du hackathon, ils ont trouvé l'idée pertinente au vu du large éventail des cas d’utilisations de l’application et son potentiel à suivre les flux d’informations des nombreuses applications développées chez le client. Le prototype a notamment donné un aperçu du potentiel qu’offrait l’application de pouvoir visualiser ces flux de manière détaillée.
Quels enseignements as-tu tiré de cette expérience de hackathon ?
Toujours éviter l’optimisation prématurée lors de la phase de développement, les fonctionnalités d’une application sont amenées à évoluer, il vaut mieux attendre une certaine maturité de celles-ci avant de les optimiser
Il faut donner une grande importance au temps imparti dans la gestion d’un projet de développement, il est très facile de sous-estimer les tâches de développement lors de la phase de conception ce qui peut nous amener à mal juger le temps à leur octroyer et à se fixer des deadlines inatteignables
Si vous aviez plus de temps ou de ressources, quelles améliorations aimerais-tu apporter à l’application ?
Avec du temps et des ressources supplémentaires on peut par exemple :
Enfin, comment décrirais-tu l'expérience globale du hackathon et quelles leçons en as-tu tiré en tant que développeur ?
Ce fut une expérience mémorable et très enrichissante. Le fait de travailler en groupe, d’échanger des idées et de bénéficier de l'expérience et du point de vue des différents membres de l'équipe en temps réel est très stimulant pour toute l’équipe. Cela nous a permis de nous motiver pour atteindre notre objectif à très court terme.
La quantité de travail fourni n’est pas le seul facteur déterminant pour la réussite d’un projet. La méthode de travail et la gestion du moral de l’équipe sont des facteurs tout aussi importants.
Merci beaucoup pour ce retour complet Lyes! Nous avons hâte de suivre tes prochains défis techniques.
Découvrez les bases du parcours de data engineer dans cet article.