La question qu’un développeur devrait toujours se poser avant de coder : « Quel problème essaie-t-on réellement de résoudre ? »

5 Octobre

Lorsqu’une nouvelle tâche arrive dans un backlog, le réflexe du développeur est souvent de se concentrer immédiatement sur le « quoi » et le « comment » : quelle fonctionnalité faut-il ajouter, quelle technologie utiliser, quelle API modifier ou quelle interface développer ? Pourtant, avant de choisir une solution technique, une question devrait guider toute la réflexion : « Quel problème essaie-t-on réellement de résoudre ? » Une demande peut en effet décrire une fonctionnalité sans expliquer clairement son objectif métier. Par exemple, « ajouter un bouton d’export » ne signifie pas nécessairement que le véritable besoin est de générer un fichier supplémentaire : l’objectif peut être de permettre à un responsable de transmettre certaines données, de les analyser dans un autre outil ou de conserver un historique. Comprendre le besoin avant de concevoir la solution permet donc de replacer la tâche dans son contexte : qui rencontre le problème, dans quel processus, avec quelles contraintes et quel résultat est attendu ? Cette approche correspond notamment aux recommandations de Microsoft dans Build for business needs, qui rappelle que les décisions de conception doivent être justifiées par des exigences métier, fonctionnelles et non fonctionnelles.

Le risque, lorsqu’un développeur commence à coder sans avoir suffisamment clarifié le contexte, est de produire une solution techniquement fonctionnelle mais fonctionnellement inadaptée. Le code peut respecter la demande formulée tout en répondant imparfaitement au besoin initial, ce qui entraîne ensuite des corrections, des contournements ou de nouvelles fonctionnalités. Ces modifications successives peuvent également augmenter la dette technique, notamment lorsqu’il faut ajouter rapidement des adaptations à une conception qui n’avait pas été pensée pour le véritable usage. Microsoft explique dans Understanding technical debt, publié le 1er février 2024 et mis à jour le 27 août 2024, que les compromis réalisés sous contrainte de temps, de périmètre ou de coût peuvent conduire à des fonctionnalités limitées, des composants manquants ou des problèmes postérieurs au projet. La compréhension du besoin ne doit donc pas être considérée comme une étape administrative séparée du développement : elle influence directement l’architecture, les choix techniques, les tests et la maintenabilité du logiciel. Les recommandations de Microsoft sur la modélisation des exigences, mises à jour le 30 octobre 2025, soulignent également qu’un modèle des besoins permet de réduire les ambiguïtés, les incohérences et le travail nécessaire lorsque les exigences évoluent.

Avant de coder, le développeur peut donc adopter une démarche simple : contextualiser la tâche, clarifier la demande, reformuler le besoin et identifier le résultat attendu. Il peut commencer par demander : « Qui a ce problème ? », « Dans quel contexte apparaît-il ? », « Pourquoi cette fonctionnalité est-elle nécessaire ? », « Quel comportement est attendu après son implémentation ? » et « Quelles contraintes fonctionnelles ou techniques devons-nous respecter ? ». Cette clarification permet ensuite de distinguer le besoin réel de la solution proposée initialement. Une fois l’objectif compris, le développeur peut comparer plusieurs approches et choisir celle qui répond au problème sans introduire inutilement de complexité. Cette logique rejoint les pratiques documentées par DORA autour de la documentation, de la maintenabilité et de la compréhension du système : la documentation de qualité aide notamment les équipes à comprendre les applications et à travailler plus efficacement sur leur évolution. La bonne question n’est donc pas seulement « Comment vais-je coder cette fonctionnalité ? », mais d’abord « Quel problème cette fonctionnalité doit-elle réellement résoudre ? ». Prendre quelques minutes pour comprendre l’objectif, les utilisateurs et le contexte peut éviter des heures de développement consacrées à une solution qui devra ensuite être corrigée, réécrite ou complexifiée.

Accéder à tous les articles