"On va faire ça en React." "On utilise Spring Boot pour le backend." "Le client veut du Flutter." Ces phrases arrivent en début de projet, avant même que le problème soit clairement posé. C'est précisément là que commencent la plupart des mauvais choix techniques.
Choisir une technologie avant de comprendre les contraintes du projet, c'est choisir un outil avant de savoir ce qu'on doit construire. Cela semble évident formulé ainsi. Pourtant c'est l'une des erreurs les plus fréquentes, commise aussi bien par des développeurs juniors enthousiastes que par des équipes expérimentées sous pression commerciale.
Cet article propose un cadre de décision structuré. Pas une liste de technologies à la mode, pas un comparatif de frameworks. Un raisonnement applicable à n'importe quel contexte, aujourd'hui comme dans dix ans.
Pourquoi les mauvais choix technologiques persistent
Un mauvais choix technologique ne se révèle pas immédiatement. Les premières semaines, tout semble fonctionner. C'est six mois plus tard, quand le volume de données dépasse les hypothèses initiales, quand l'équipe doit intégrer un service tiers non prévu, ou quand un nouveau développeur arrive et ne maîtrise pas la stack choisie, que les conséquences apparaissent.
Il existe trois grandes sources de mauvais choix technologiques, et elles n'ont rien à voir avec la qualité intrinsèque des outils.
- Le choix par popularité. On choisit ce dont tout le monde parle sur les réseaux professionnels, sans vérifier si ça correspond aux contraintes réelles du projet. Une technologie populaire dans les startups américaines n'est pas nécessairement adaptée à un logiciel métier déployé sur des serveurs avec des contraintes de sécurité strictes.
- Le choix par confort. On choisit ce qu'on connaît déjà, indépendamment de ce que le projet demande. C'est compréhensible et parfois justifié, mais ce doit être une décision consciente avec ses avantages et ses limites clairement identifiés.
- Le choix par pression externe. Un client, un investisseur ou un partenaire impose une technologie pour des raisons étrangères au projet lui-même. Dans ce cas, le choix est contraint, mais il faut au moins en documenter les risques et les implications.
Si la première question posée lors du démarrage d'un projet est "quelle technologie on utilise ?", le processus est déjà inversé. La première question doit être : "quel problème doit-on résoudre, pour qui, dans quelles conditions ?"
Les quatre questions à poser avant tout choix
Avant d'évaluer une seule technologie, il faut répondre à quatre questions. Ces questions ne sont pas techniques. Elles sont fonctionnelles et opérationnelles. Ce sont leurs réponses qui définiront les critères de sélection.
1. Quelles sont les contraintes de volume et de performance ?
Un système qui doit traiter cent transactions par jour n'a pas les mêmes besoins qu'un système qui en traite cent mille. Une application utilisée par vingt employés internes n'a pas les mêmes exigences de scalabilité qu'une plateforme ouverte au grand public. Ces ordres de grandeur conditionnent directement les choix d'architecture et de technologie.
Si on ne connaît pas ces chiffres au départ, il faut les estimer avec le client. Une estimation grossière vaut mieux qu'une hypothèse implicite non formulée.
2. Quelles sont les contraintes de maintenabilité et d'équipe ?
Qui va maintenir ce système après la livraison ? Une équipe interne qui connaît Java ? Un développeur solo qui fait du PHP depuis dix ans ? Une startup qui va recruter des profils juniors ? La réponse à cette question est souvent plus déterminante que n'importe quelle considération de performance.
Un système construit avec une technologie que personne dans l'organisation ne maîtrise est un risque opérationnel majeur. La meilleure technologie du monde est inutile si elle ne peut pas être maintenue durablement par l'équipe en place.
3. Quelles sont les contraintes d'intégration ?
Le système va-t-il communiquer avec d'autres systèmes existants ? Des APIs externes ? Des bases de données legacy ? Des outils internes déjà en place ? Ces contraintes d'intégration peuvent éliminer d'emblée certaines options et en favoriser d'autres, indépendamment de leurs qualités intrinsèques.
4. Quelles sont les contraintes de temps et de budget ?
Une technologie mature avec un écosystème riche permet de livrer plus vite grâce aux librairies disponibles et à la documentation abondante. Une technologie plus récente peut offrir des avantages techniques mais exiger plus de temps pour résoudre des problèmes peu documentés. Ce compromis doit être évalué explicitement en fonction du calendrier et du budget réels.
Le cadre de décision en cinq critères
Une fois les quatre questions répondues, on peut évaluer les options technologiques sur cinq critères objectifs. L'objectif n'est pas d'obtenir un score parfait sur tous les critères, mais d'identifier les compromis et de les assumer consciemment.
| Critère | Ce qu'on évalue | Questions clés |
|---|---|---|
| Adéquation fonctionnelle | Est-ce que la technologie est conçue pour ce type de problème ? | A-t-elle été utilisée avec succès sur des projets similaires ? |
| Maturité et stabilité | Est-ce que la technologie est suffisamment stable pour la production ? | Quelle est la fréquence des breaking changes ? La communauté est-elle active ? |
| Maintenabilité | L'équipe peut-elle maintenir le système sans dépendre d'experts rares ? | Y a-t-il suffisamment de développeurs disponibles sur le marché ? |
| Écosystème | Les librairies, outils et intégrations nécessaires existent-ils ? | Faut-il tout construire ou peut-on s'appuyer sur des solutions existantes ? |
| Coût total | Quel est le coût d'adoption, de formation et de maintenance sur deux ans ? | Y a-t-il des coûts de licence ? Des contraintes d'infrastructure spécifiques ? |
La règle des contraintes non négociables
Avant d'appliquer ce cadre de décision, il faut identifier les contraintes absolues : celles qui éliminent d'emblée certaines options sans discussion. Ce sont des contraintes sur lesquelles on ne peut pas faire de compromis, quelles que soient les qualités de la technologie concernée.
Ces contraintes peuvent être de nature diverse. Une contrainte réglementaire qui impose que les données restent dans un pays donné peut éliminer certaines solutions cloud. Une contrainte contractuelle avec un partenaire technologique peut imposer l'usage d'une API spécifique. Une contrainte de sécurité peut interdire certaines dépendances open source sans audit préalable.
Commencer par lister les contraintes non négociables avant d'ouvrir le moindre comparatif de frameworks. Tout ce qui viole une contrainte non négociable est éliminé immédiatement. On applique ensuite le cadre des cinq critères uniquement sur les options restantes. Cela réduit considérablement l'espace de décision et concentre l'analyse sur ce qui est réellement pertinent.
Le cas particulier des projets avec contraintes de ressources
Dans de nombreux contextes, notamment dans les marchés émergents, les projets logiciels doivent composer avec des contraintes que les tutoriels et cas d'usage occidentaux n'abordent pas : connectivité réseau intermittente, terminaux moins puissants, équipes réduites, budgets serrés.
Ces contraintes ne sont pas des handicaps. Ce sont des données de conception qui orientent les choix technologiques vers des solutions plus sobres, plus résilientes et souvent mieux conçues. Une application conçue pour fonctionner correctement avec une connexion instable est par définition plus robuste qu'une application conçue en supposant une connexion permanente et rapide.
Tenir compte de ces contraintes dès le choix technologique évite de construire un système fonctionnel dans les conditions idéales de développement mais inutilisable dans les conditions réelles d'utilisation.
Documenter le choix est aussi important que le faire
Un choix technologique sans documentation est une décision qui disparaît avec les personnes qui l'ont prise. Six mois plus tard, un nouveau membre de l'équipe verra la stack en place et se demandera pourquoi ce framework a été choisi plutôt qu'un autre. Sans documentation, la réponse sera soit "je ne sais pas", soit une reconstruction approximative qui peut conduire à remettre en question des décisions qui avaient de bonnes raisons d'être.
Un document de décision technologique ne doit pas dépasser une page. Il contient le contexte du projet au moment de la décision, les options envisagées, les critères utilisés pour les évaluer, la décision retenue et les raisons qui ont conduit à écarter les alternatives. C'est un investissement de deux heures qui peut éviter plusieurs semaines de remise en question inutile.
Contexte : description du problème et des contraintes identifiées. Options envisagées : liste des technologies considérées. Critères d'évaluation : les cinq critères appliqués avec leur pondération selon le contexte. Décision : technologie retenue et justification. Risques acceptés : les compromis assumés et les conditions dans lesquelles la décision devrait être reconsidérée.
Ce que ce cadre ne résout pas
Ce cadre de décision aide à structurer le raisonnement. Il ne remplace pas le jugement. Il existe des situations où deux options sont équivalentes sur tous les critères objectifs et où la décision finale repose sur une intuition acquise par l'expérience.
Il existe aussi des situations où les contraintes évoluent en cours de projet et où une décision technologique prise avec les meilleures intentions au départ devient sous-optimale six mois plus tard. C'est normal. L'objectif n'est pas de prendre la décision parfaite, mais de prendre une décision éclairée, documentée et révisable quand le contexte l'exige.
La seule vraie erreur est de choisir une technologie sans avoir posé les questions préalables. Le reste est de l'ingénierie, et l'ingénierie se corrige.
Je propose des sessions de cadrage technique pour analyser vos contraintes, évaluer les options disponibles et documenter la décision. Une demi-journée qui évite des mois d'erreur.
Me contacter