Un jour, un client m'appelle, paniqué : son site e-commerce venait de perdre 40 % de son trafic en dix jours. La cause ? Une seule ligne dans son fichier de configuration serveur. Une redirection mal écrite en 2024, jamais testée, qui renvoyait les robots d'indexation vers une page morte. Le site fonctionnait parfaitement pour les humains. Pour Google, il n'existait plus.
Les erreurs courantes en développement web, ce sont rarement les grosses catastrophes visibles. Ce sont ces petites décisions prises vite, un mardi soir, parce qu'il fallait livrer. Elles ne cassent rien tout de suite. Elles s'accumulent. Et six mois plus tard, on se retrouve à réécrire la moitié d'un projet qu'on croyait solide.
J'ai fait la plupart de ces erreurs moi-même. J'en ai corrigé chez d'autres. Voici celles qui reviennent le plus souvent, et surtout pourquoi elles reviennent.
Points clés à retenir
- La performance n'est pas un réglage final : c'est une contrainte qui se décide au moment du choix d'architecture.
- L'accessibilité n'est pas une option morale, c'est un facteur de référencement et de conversion mesurable.
- La sécurité se pense dès la première requête utilisateur, jamais après.
- Un projet sans tests et sans documentation devient impossible à reprendre au bout d'un an.
- La dette technique ne se voit pas dans une démo. Elle se voit dans le premier correctif urgent.
Les erreurs courantes de performance : le tueur silencieux
Un site qui met quatre secondes à afficher sa première image perd environ un visiteur sur trois avant qu'il ne voie quoi que ce soit. Ce chiffre, je ne l'ai pas lu quelque part : je l'ai vu en comparant les statistiques de rebond de deux versions d'un même site, à contenu identique, à deux mois d'intervalle.
Les images non optimisées, coupables numéro un
Sur un projet de refonte, j'ai découvert que la page d'accueil chargeait 11,4 Mo d'images. Onze mégaoctets. Pour une vitrine de cinq sections. La personne qui avait intégré les visuels avait simplement exporté les fichiers depuis son logiciel de retouche, en pleine résolution, sans réfléchir une seconde au poids final.
La correction a pris une après-midi. Formats modernes, redimensionnement à la taille d'affichage réelle, chargement différé pour tout ce qui n'est pas visible au premier écran. Résultat : 780 Ko au total. Le temps de chargement complet est passé de 4,7 secondes à 1,3 seconde.
Le problème n'est pas technique. Il est humain. Personne ne voit le poids d'une image. Elle s'affiche, elle est jolie, on passe à la suivante.
Mesurer avant d'optimiser, pas l'inverse
J'ai longtemps optimisé à l'instinct. Mauvaise idée. On passe des heures à minifier du JavaScript qui représentait 30 Ko, pendant qu'une police de caractères de 400 Ko bloque l'affichage du titre principal.
Les indicateurs à surveiller en priorité :
- Le temps d'affichage du plus gros élément visible (souvent une image ou un titre).
- La stabilité visuelle : est-ce que la page saute pendant son chargement ?
- La réactivité aux clics et aux appuis.
- Et le plus souvent oublié : le poids total transféré, tous fichiers confondus.
Un détail que j'ai mis du temps à comprendre : un site rapide sur votre machine ne dit rien de sa vitesse réelle. Votre fibre, votre cache vide par habitude, votre écran puissant masquent tout. Testez sur un téléphone d'entrée de gamme, en réseau ralenti, avec le cache désactivé. Franchement, ça change la perspective.
Erreurs courantes en SEO technique : le référencement qu'on casse sans le savoir
Le SEO technique, c'est le domaine où les développeurs font le plus de dégâts en croyant bien faire. Parce que ce qui est propre pour eux n'est pas toujours lisible pour un moteur.
Le rendu JavaScript et l'indexation
Une application monopage, entièrement rendue côté client, c'est élégant à développer. C'est aussi un piège si l'indexation n'est pas gérée. Le moteur d'indexation exécute le JavaScript, oui, mais avec des limites de temps et de ressources. Une page qui charge ses données via trois appels réseau successifs au moment de l'affichage peut très bien être indexée à moitié, ou pas du tout.
La solution que j'applique maintenant systématiquement : rendre le contenu critique côté serveur. Le squelette de la page, le titre, le texte principal, tout cela sort du serveur déjà rempli. L'interactivité vient après. Cela a un coût en complexité, mais le gain en visibilité est net.
Redirections, sitemap, canoniques : trois détails négligés
Reprenons le cas de mon client. Sa redirection fautive pointait vers une page en erreur. Une seule ligne. Voici les vérifications que je fais désormais avant toute mise en production :
- Chaque ancienne URL a bien une redirection permanente vers la nouvelle, jamais une redirection temporaire.
- Le plan du site ne contient aucune page qui redirige, uniquement des URL vivantes.
- Les balises canoniques pointent vers l'URL définitive, sans paramètre ni doublon.
- Les pages supprimées renvoient une vraie erreur « non trouvée », pas une redirection vers l'accueil.
Spoiler : la quatrième règle est celle que tout le monde enfreint. Rediriger chaque page morte vers l'accueil semble propre. En pratique, cela dilue la pertinence et donne un signal confus aux moteurs.
Erreurs d'accessibilité : ce que vous excluez sans le savoir
Pendant longtemps, j'ai considéré l'accessibilité comme un sujet de spécialistes. Puis j'ai regardé ma mère utiliser un site que j'avais conçu. Contrastes trop faibles, boutons trop petits, champs de formulaire sans étiquette. Elle a abandonné au bout de deux minutes.
C'est là que tout a basculé dans ma façon de travailler. L'accessibilité n'est pas un supplément pour une minorité. C'est la base du confort pour tout le monde.
Contrastes et navigation au clavier
Deux tests simples révèlent la moitié des problèmes :
- Utilisez le site entièrement au clavier, sans souris. Passez d'un élément à l'autre avec la touche de tabulation. Si vous perdez le fil de l'endroit où vous êtes, votre utilisateur aussi.
- Passez la page en niveaux de gris. Si un texte devient illisible ou un bouton invisible, le contraste est insuffisant.
Le deuxième test m'a fait reprendre une charte graphique entière. Le vert clair sur fond crème de mon client était magnifique en couleur. En noir et blanc, il disparaissait complètement.
Et les formulaires, parlons-en
Un champ sans étiquette liée, c'est un champ que les technologies d'assistance annoncent comme « zone de saisie » et rien de plus. L'utilisateur ne sait pas quoi écrire. Ce n'est pas un détail, c'est un mur.
La bonne pratique tient en une phrase : chaque champ a une étiquette reliée par un identifiant, et cette étiquette décrit ce qu'on attend. Pas « Champ 1 ». Pas un texte gris à l'intérieur du champ qui disparaît dès qu'on commence à taper.
Erreurs de sécurité : les hypothèses qui coûtent cher
Le développeur qui n'a jamais été piraté pense souvent que la sécurité est l'affaire des grandes entreprises. C'est faux. Les attaques automatisées ne visent pas votre notoriété, elles visent votre inattention.
Trois négligences reviennent constamment dans les projets que j'audite :
- Faire confiance aux données envoyées par le navigateur. Un formulaire bien fait côté interface ne protège rien : n'importe qui peut envoyer une requête forgée.
- Laisser les dépendances prendre la poussière. Une bibliothèque non mise à jour pendant deux ans contient presque toujours une faille connue et documentée.
- Stocker des secrets directement dans le code source, puis le publier sur un dépôt public. Cette histoire finit toujours mal.
Et une quatrième, plus insidieuse : l'absence de chiffrement systématique sur l'ensemble du site. Une page de connexion en clair, c'est un mot de passe qui voyage à découvert sur le réseau.
La règle d'or : la donnée utilisateur n'est jamais une instruction
Que ce soit une base de données, un affichage de page ou un appel système, tout ce qui vient de l'utilisateur doit être traité comme une donnée, jamais comme une commande exécutable. Cela signifie requêtes préparées côté base, échappement systématique côté affichage, validation stricte en entrée.
Avouons-le : cette règle est ennuyeuse. Elle demande trois lignes de code là où une aurait suffi. Mais c'est la différence entre un site qui vit et un site qu'on retrouve vidé de ses données un lundi matin.
Erreurs de maintenabilité : la dette qu'on repousse
Un projet sans test, c'est un projet qu'on n'ose plus modifier. J'ai connu ça : une base de code où chaque correctif déclenchait deux nouveaux bugs ailleurs. On finit par livrer le moins possible, par peur. Le produit s'arrête sans que personne n'ait pris la décision de l'arrêter.
Tests, documentation, gestion de versions
Trois filets de sécurité, aucun n'est facultatif :
- Des tests sur les parcours critiques. Pas 100 % de couverture, juste les chemins que le client utilise tous les jours. L'inscription, la commande, le paiement.
- Une documentation minimale : comment lancer le projet, où sont les variables d'environnement, quelle est la logique des modules principaux. Un fichier par question, pas un roman.
- Une gestion de versions propre, avec des messages de validation compréhensibles. « Correction » comme message de commit ne dit rien à personne, surtout pas à vous dans six mois.
Sur un projet repris d'une équipe partie, j'ai passé presque une semaine entière à simplement comprendre comment relier le front et le back en local. Une semaine. Une note de dix lignes aurait tout réglé.
La revue de code, pas seulement un rituel
Je plaide ici pour une revue exigeante, même à deux développeurs, même en solo sur son propre code avec un délai d'un jour avant relecture. Un œil qui revient sur une fonction écrite la veille voit immédiatement ce que la fatigue avait masqué. C'est là, franchement, que j'ai le plus progressé — plus qu'en lisant n'importe quel guide.
Comparons l'impact réel de chaque famille d'erreurs
Toutes les erreurs ne se valent pas. Certaines font perdre un peu de vitesse, d'autres détruisent la confiance ou la visibilité. Voici comment je les classe, par expérience.
| Famille d'erreur | Effet immédiat | Effet à long terme | Difficulté de correction |
|---|---|---|---|
| Performance (images, scripts) | Visiteurs qui partent | Perte de référencement durable | Faible, si mesurée tôt |
| SEO technique (redirections, rendu) | Aucun, invisible | Disparition progressive des moteurs | Moyenne, diagnostic long |
| Accessibilité | Exclusion d'une partie du public | Image de marque dégradée | Moyenne, refonte possible |
| Sécurité | Parfois rien, parfois tout | Fuites de données, perte de confiance | Élevée, prévention obligatoire |
| Maintenabilité | Aucun | Projet figé, équipe épuisée | Élevée, souvent réécriture |
Ce que ce tableau montre clairement : les erreurs les plus dangereuses sont celles qui ne se voient pas tout de suite. La performance se remarque, la sécurité se paie un jour précis, mais la dette technique et le SEO technique vous enterrent lentement, sans bruit.
Ce que j'ai fini par admettre
Il n'existe pas de bon développeur qui n'a jamais commis ces erreurs. Il existe des développeurs qui les répètent et d'autres qui les repèrent. La différence ne tient pas à la compétence technique, elle tient à l'habitude de vérifier avant de croire.
La question que je me pose maintenant avant chaque mise en production n'est plus « est-ce que ça fonctionne ? ». C'est devenue « qu'est-ce qui va casser dans six mois sans que je m'en aperçoive ? ». Ce léger déplacement de la question a changé ma façon de coder plus que n'importe quel outil.
La prochaine fois que vous êtes tenté de sauter une étape pour livrer plus vite, demandez-vous simplement qui paiera cette dette. Ce ne sera probablement pas vous. Ce sera celui qui récupérera le projet sans savoir pourquoi la page de paiement mettra trois secondes à s'afficher.