BaliseTonSite

Les 5 techniques qui changent tout

Des recettes simples pour des résultats 10x meilleurs. Zéro jargon.

5.1Technique 1 : "Montre-moi d'abord, fais ensuite"

Au lieu de demander directement du code, tu donnes d'abord un ou deux exemples de ce que tu attends. L'IA comprend le pattern et le reproduit. C'est comme montrer un combo à un joueur débutant avant de le laisser essayer.

Technique : l'exemple guidémarkdown
Je veux créer des fonctions utilitaires pour formater des données.

Voici le pattern que je veux suivre :

```ts
// Exemple 1
export function formatPrice(cents: number): string {
  return new Intl.NumberFormat("fr-FR", {
    style: "currency",
    currency: "EUR",
  }).format(cents / 100);
}

// Exemple 2  
export function formatDate(date: Date): string {
  return new Intl.DateTimeFormat("fr-FR", {
    day: "numeric",
    month: "long",
    year: "numeric",
  }).format(date);
}
```

Maintenant, crée les fonctions suivantes en suivant ce même pattern :
- formatPhoneNumber (format français : 06 12 34 56 78)
- formatFileSize (octets → Ko, Mo, Go avec 1 décimale)
- formatDuration (secondes → "2h 34min")

5.2Technique 2 : "Réfléchis étape par étape"

Quand un problème est complexe, demande à l'IA de décomposer sa réflexion avant de coder. Ça évite les solutions bancales et les raccourcis dangereux.

Technique : la réflexion guidéemarkdown
Je veux implémenter un système de pagination côté serveur 
dans mon app Next.js 15 (App Router) avec une base PostgreSQL.

Avant d'écrire du code, explique-moi :
1. Quelle stratégie de pagination choisir (offset vs cursor) et pourquoi
2. Comment structurer l'API route
3. Comment gérer le state côté client
4. Les edge cases à gérer (page vide, dernière page, tri)

Ensuite seulement, implémente ta solution recommandée.

En forçant l'IA à réfléchir avant d'agir, tu obtiens des solutions mieux architecturées. Et bonus : tu apprends en lisant son raisonnement.

5.3Technique 3 : "Joue un rôle"

Donner un rôle précis à l'IA change drastiquement la qualité et le niveau de ses réponses. C'est comme choisir la classe de ton personnage : un guerrier et un mage ne gèrent pas les mêmes situations.

"Tu es un tech lead qui fait une code review"

L'IA pointe les problèmes, suggère des améliorations, cite des bonnes pratiques

"Tu es un dev junior curieux qui pose des questions"

L'IA explique simplement, avec des analogies, sans jargon

"Tu es un expert en sécurité web"

L'IA vérifie les failles XSS, CSRF, injection, les headers manquants

"Tu es un spécialiste en accessibilité (a11y)"

L'IA ajoute les ARIA labels, vérifie les contrastes, pense clavier et lecteur d'écran

"Tu es un architecte logiciel senior"

L'IA pense patterns, scalabilité, séparation des responsabilités

5.4Technique 4 : "Contraintes explicites"

Dire ce que tu ne veux pas est parfois plus utile que dire ce que tu veux. C'est comme mettre des barrières dans un circuit : ça guide l'IA vers le bon chemin.

Technique : les contraintes négativesmarkdown
Crée un hook useLocalStorage en TypeScript.

Contraintes :
- PAS de dépendance externe
- PAS de useEffect pour la synchronisation (utilise useSyncExternalStore)
- PAS de JSON.parse sans try/catch
- PAS de any dans les types
- DOIT fonctionner côté serveur (SSR safe)
- DOIT gérer le cas où localStorage n'est pas disponible

Pourquoi ça marche si bien ?

Sans contraintes, l'IA prend le chemin le plus court. Et souvent, le chemin le plus court n'est pas le meilleur : any partout, useEffect pour tout, pas de gestion d'erreurs. Les contraintes forcent l'IA à produire du code de qualité production.

5.5Technique 5 : "Le rubber duck IA"

Tu connais le rubber duck debugging ? Tu expliques ton problème à un canard en plastique et, en l'expliquant, tu trouves la solution. Avec l'IA, c'est pareil, sauf que le canard te répond.

Technique : penser à voix haute avec l'IAmarkdown
J'ai un bug et je n'arrive pas à comprendre d'où il vient.

Voici la situation :
- J'ai un composant UserProfile qui fetch les données utilisateur
- Le fetch marche (je vois les données dans le Network tab)
- Mais le composant affiche les données du PRÉCÉDENT utilisateur
- Quand je refresh la page, ça s'affiche correctement

Mon code :

```tsx
export function UserProfile({ userId }: { userId: string }) {
  const [user, setUser] = useState<User | null>(null);
  
  useEffect(() => {
    fetch(`/api/users/${userId}`)
      .then(res => res.json())
      .then(data => setUser(data));
  }, []);
  
  // ... rendu
}
```

Aide-moi à comprendre ce qui se passe. Ne me donne pas juste la 
correction, explique-moi le problème comme si j'étais un dev junior.

5.6Résumé des 5 combos

#1 L'exemple guidé
Tu as un style de code précis à reproduire
★★★★★
#2 Réflexion étape par étape
Le problème est complexe ou architectural
★★★★☆
#3 Jeu de rôle
Tu veux un niveau ou angle spécifique
★★★★☆
#4 Contraintes explicites
Tu veux du code production-ready
★★★★★
#5 Rubber duck IA
Tu es bloqué sur un bug ou un choix
★★★☆☆

À toi de jouer

Cette semaine, essaie d'utiliser au moins 3 de ces techniques dans ton travail quotidien. Note laquelle te donne les meilleurs résultats. Tout le monde a ses combos préférés !

Verifie tes acquis

5 questions pour valider ce chapitre

1. Qu'est-ce que le "few-shot prompting" ?

Valide et sauvegarde ce chapitre

Ne perds pas le fil de ton apprentissage. Chaque QCM terminé sauvegarde ton score. Crée ton profil gratuitement pour débloquer toutes les évaluations du site et retrouver tes résultats plus tard.

Commencer l'aventure
Déjà membre ?Connecte-toi