EDUKID
Description
Contrairement aux autres projets présentés dans ce portfolio, EDUKID n'a pas été entièrement conçu par notre équipe. Il s'agit d'une application mobile développée par des étudiants des promotions précédentes. Conçue en Java, EDUKID a une vocation pédagogique : elle permet aux enfants d'apprendre les chiffres et les lettres de manière ludique et interactive, en sollicitant à la fois leurs capacités visuelles et auditives.
L'application propose plusieurs fonctionnalités, à commencer par un système de profils permettant à plusieurs enfants de l'utiliser, accompagné d'un suivi statistique pour mesurer leur progression. Elle comprend également quatre mini-jeux répartis en deux catégories (chiffres et lettres) : Memory, Écoute, Dessine et Mot à trou. Dans ce contexte, notre objectif était d'améliorer l'existant en corrigeant les anomalies, en enrichissant les fonctionnalités et en optimisant la qualité du code.
Pour atteindre cet objectif, nous avons d'abord étudié en détail l'application et sa base de code. Développée plusieurs années auparavant, celle-ci ne fonctionnait plus correctement : des bibliothèques obsolètes ou introuvables, des incompatibilités avec les versions récentes d'Android ainsi que des erreurs de code empêchaient son exécution. Nous avons donc commencé par résoudre ces problèmes afin de relancer l'application.
Notre analyse a ensuite mis en évidence plusieurs faiblesses majeures. L'application souffrait d'un manque de qualité en termes de code, d'architecture et de maintenabilité. Elle était développée en Java, un langage désormais moins recommandé pour Android. De plus, aucune architecture claire n'était respectée, rendant le code difficile à comprendre et à faire évoluer. La logique métier était fortement mêlée à la logique de présentation, sans réelle séparation des responsabilités. Enfin, l'interface utilisateur n'était pas adaptée aux différentes tailles d'écran, provoquant des problèmes d'affichage.
Pour remédier à ces points, nous avons entrepris plusieurs améliorations. Nous avons d'abord migré l'ensemble du code vers Kotlin, le langage actuellement privilégié pour le développement Android. Ensuite, nous avons mis en place une architecture MVVM afin de mieux structurer l'application, notamment en séparant la logique métier de l'interface utilisateur et en utilisant des coroutines pour gérer les interactions avec la base de données. Nous avions également prévu de remplacer les vues XML par Jetpack Compose, mais faute de temps, cette évolution a été reportée. Une fois ces transformations réalisées, nous avons enrichi le contenu des jeux existants.
Ce projet m'a permis de découvrir les spécificités du travail sur une base de code legacy : analyser un existant, diagnostiquer ses faiblesses, et planifier une stratégie de refactoring sans tout casser. J'ai également approfondi ma maîtrise de l'architecture MVVM et de Kotlin pour Android, ainsi que les enjeux de migration entre langages et frameworks.
Défis & Solutions
Défi
Le principal défi de ce projet a résidé dans le refactoring du code. Reprendre un projet existant s’avère souvent plus complexe que de partir de zéro, ce qui nous a demandé un investissement important en temps. Ce travail, bien qu’invisible pour l’utilisateur final, est essentiel : il améliore la robustesse, la lisibilité et la maintenabilité de l’application sur le long terme.
Solution trouvée
Pour effectuer la migration vers Kotlin, nous avons adopté une approche progressive. Nous avons utilisé une intelligence artificielle pour traduire le code Java par segments, puis nous avons relu, ajusté et approfondi notre compréhension des parties les plus complexes. Une fois la conversion effectuée, nous avons procédé à des phases de test et de débogage. Après plusieurs semaines de travail, nous avons obtenu une application fonctionnelle, fidèle à la version d’origine.
Concernant l’architecture MVVM, il s’agissait principalement d’un travail de réorganisation. Nous avons d’abord créé les différentes couches nécessaires, puis réparti le code selon leurs responsabilités respectives. Ce processus nous a également permis d’améliorer la qualité globale du code, notamment en supprimant les redondances et en renforçant sa lisibilité. Nous nous sommes appuyés sur notre expérience acquise avec le projet Pokémon TCG, développé en parallèle avec une architecture MVVM, ce qui nous a servi de référence pour restructurer EDUKID efficacement.
Compétences acquises
- Développement Android (Kotlin, MVVM, coroutines)
- Mise en place d'une architecture MVVM
- Refactoring et migration de code legacy (Java → Kotlin)
- Analyse et reprise de code existant
- Méthodes agiles (travail en sprint)
- Travail en équipe (binôme, répartition des tâches)
- Utilisation de l'IA comme outil d'aide au refactoring
- Travail en autonomie sur un projet long terme
- Réponse aux besoins d'un client
Aperçu