Skip to content

Difficultés et retours d'expérience

🔧 Difficultés et retours d’expérience

Section titled “🔧 Difficultés et retours d’expérience”
Impact : Élevé

Contexte : Notre prototype initial était développé en FastAPI (Python). Nous avons décidé de migrer vers Laravel pour bénéficier d’un écosystème plus complet.

Problèmes rencontrés :

  • Réécriture complète du code backend
  • Perte de temps significative (3 semaines)
  • Courbe d’apprentissage de Laravel
  • Adaptation des patterns Python → PHP

Leçons apprises :

“Mieux vaut prendre le temps de choisir les bonnes technologies au départ que de devoir migrer en cours de projet.”

Résolution :

  • Documentation systématique des endpoints existants
  • Tests automatisés pour valider la migration
  • Migration progressive par modules

Impact : Critique

Contexte : La génération de cartes par l’IA prenait parfois plus de 30 secondes, causant des timeouts et une mauvaise expérience utilisateur.

Problèmes rencontrés :

  • Timeouts HTTP côté mobile
  • Coûts API OpenAI élevés
  • Latence variable selon la charge

Analyse :

Avant optimisation:
├── Extraction contenu: 2s
├── Appel LLM (10 questions): 25s ❌
├── Validation: 3s
└── Total: ~30s
Après optimisation:
├── Extraction contenu: 1s
├── Appel LLM (batch): 8s ✅
├── Validation (parallel): 1s
└── Total: ~10s

Solutions implémentées :

  1. Traitement asynchrone - Jobs Laravel Horizon
  2. Batch processing - Générer plusieurs questions en un appel
  3. Cache d’embeddings - Éviter les calculs redondants
  4. WebSockets - Notification temps réel de fin de génération

Impact : Critique

Contexte : En décembre 2025, nous avons lancé une version beta qui s’est révélée être un échec technique majeur.

Bugs critiques découverts :

BugImpactCause
Crash au démarrage sur iOS 16BloquantDépendance incompatible
Perte de données synchronisationCritiqueRace condition
Lenteur extrême en offlineMajeurPas de cache local
Auth token expiré silencieusementMajeurPas de refresh automatique

Retours utilisateurs :

“L’app crash à chaque ouverture” - 3 utilisateurs

“J’ai perdu toutes mes cartes” - 2 utilisateurs

“C’est inutilisable sans internet” - 5 utilisateurs

Leçons apprises :

  • Tests insuffisants : Notre couverture était de ~40%
  • Pas de beta testing : Nous avons publié directement
  • Feature creep : Trop de fonctionnalités ajoutées par peur

Plan d’action post-mortem :

  1. Gel des nouvelles fonctionnalités
  2. Focus 100% sur la stabilité
  3. Suite de tests complète (400+ tests)
  4. Programme de beta-testeurs privés
  5. Monitoring et alertes en production

Impact : Modéré

Contexte : La synchronisation de l’état entre l’application et le serveur causait des incohérences.

Problèmes rencontrés :

  • État local désynchronisé après perte de connexion
  • Conflits lors de modifications simultanées
  • Cache local obsolète

Solution : Architecture avec Zustand + Query

// Avant : État global fragile
const [cards, setCards] = useState([]);
useEffect(() => {
fetchCards().then(setCards);
}, []);
// Après : Cache intelligent avec invalidation
const { data: cards, isLoading } = useQuery({
queryKey: ['cards', collectionId],
queryFn: () => cardsService.getByCollection(collectionId),
staleTime: 5 * 60 * 1000, // 5 minutes
});

Impact : Modéré

Contexte : Configuration de l’infrastructure Kubernetes sur OVHcloud.

Difficultés :

  • Documentation OVHcloud parfois incomplète
  • Configuration des secrets Kubernetes
  • Certificats SSL avec Let’s Encrypt
  • Debugging des pods en production

Résolutions :

  • Utilisation de Helm pour standardiser les déploiements
  • Mise en place de logs centralisés
  • Scripts d’automatisation du provisioning

Défis :

  • Charge de travail importante
  • Polyvalence obligatoire
  • Risque de burnout

Solutions adoptées :

  • Répartition claire des responsabilités
  • Rituels de synchronisation quotidiens
  • Priorisation impitoyable des tâches

Défis :

  • Jongler entre cours et projet
  • Ressources financières limitées
  • Manque d’expérience business

Opportunités :

  • Accompagnement PEPITE
  • Concours et visibilité
  • Réseau d’entrepreneurs

En cours

Questionnements :

  • Propriété intellectuelle du code
  • Utilisation des données utilisateurs
  • Éthique de l’IA dans l’éducation
  • Publication sur les stores

Actions entreprises :

  • Consultation d’un avocat spécialisé
  • Rédaction de CGU et politique de confidentialité
  • Charte éthique IA interne

Architecture

Prendre le temps de concevoir l’architecture évite les migrations coûteuses

Tests

Écrire les tests AVANT le code (TDD) améliore la qualité

Documentation

Documenter les décisions techniques aide à la maintenance

Revue de code

Le regard d’un pair détecte les problèmes tôt

Avant (Phase prototype) :

Idée → Code → Test manuel → Production
Bugs en prod 😱

Après (Phase actuelle) :

Idée → Conception → Tests → Code → Review → Tests → Staging → Production
Stabilité 😊

AspectPourquoi
Stack techniqueChoix pragmatiques adaptés à notre équipe
Communication équipeRituels réguliers et transparence
Pivot B2BRéactivité face aux retours du marché
Concours PEPITEValidation externe et visibilité
AspectAmélioration possible
TestsCommencer par TDD dès le début
Lancement betaFaire une vraie phase de beta fermée
Migration LaravelMieux évaluer les frameworks au départ
ScopeÉviter le feature creep

Recommandations pour des projets similaires

Section titled “Recommandations pour des projets similaires”
  1. Investir dans les tests dès le premier jour
  2. Choisir les technologies avec lesquelles l’équipe est à l’aise
  3. Valider le marché avant de construire
  4. Itérer rapidement avec un MVP minimal
  5. Documenter les décisions et les erreurs
  6. Demander du feedback régulièrement
  7. Prendre soin de l’équipe pour éviter le burnout

L’aventure Mindlet nous a enseigné que :

  • La qualité prime sur la quantité de fonctionnalités
  • La préparation est plus importante que la vitesse
  • Les retours utilisateurs sont une mine d’or
  • L’humilité face à l’échec permet de progresser

“L’échec n’est pas l’opposé du succès, c’est une partie du succès.” - Arianna Huffington