J'ai construit une plateforme de 2M$ avec un seul architecte et l'IA — Voici comment
L'année dernière, nous avons livré une plateforme évaluée à 2 millions de dollars. L'équipe d'ingénierie complète ? Un architecte senior et Claude Code. Pas d'équipe offshore. Pas d'armée de contractants. Juste une personne qui savait ce qu'elle construisait, associée à une IA capable d'écrire du code de production.
Je n'écris pas ceci pour faire du battage autour de l'IA. J'ai été suffisamment brûlé par les cycles de hype. J'écris ceci parce que ce qui s'est passé sur ce projet a fondamentalement changé ma façon de penser à la composition des équipes, à l'estimation des projets, et à ce qui est réellement possible quand on associe une profonde connaissance architecturale au développement assisté par IA. Les chiffres ne mentent pas — nous avons atteint des jalons qui auraient pris à une équipe traditionnelle de 6-8 ingénieurs environ 18 mois, et nous l'avons fait en moins de 5 mois.
Laissez-moi vous montrer exactement comment.
Table des matières
- Le projet : ce que nous construisions réellement
- Pourquoi un architecte au lieu d'une équipe complète
- Comment Claude Code s'intègre réellement dans un workflow
- La pile technologique et les décisions architecturales
- Ce que Claude Code a bien fait
- Où Claude Code a échoué et ce que nous avons fait
- L'économie : ventilation des coûts et ROI
- Leçons pour les équipes envisageant un développement accéléré par l'IA
- FAQ
Le projet : ce que nous construisions réellement
Je ne peux pas nommer le client — territoire NDA — mais je peux décrire la plateforme. C'est un produit SaaS B2B dans l'espace logistique. Architecture multi-tenant. Tableaux de bord de suivi en temps réel. Contrôle d'accès basé sur les rôles complexe s'étendant sur les organisations, les équipes et les utilisateurs individuels. Intégration avec 14 API tierces différentes (transporteurs, processeurs de paiement, bases de données douanières). Un portail destiné aux clients et un système d'administration interne.
Le type de projet où, dans un contexte d'agence typique, vous pourriez constituer une équipe avec un responsable technique, 2-3 développeurs seniors, quelques niveaux intermédiaires, une personne DevOps dédiée, et peut-être un ingénieur QA. L'estimation originale du client d'une autre agence était de 3,2M$ sur 20 mois avec une équipe de 9 personnes.
Nous avons proposé 2M$, 5 mois, un architecte. Ils pensaient que nous étions fous. Honnêtement ? Moi aussi, un peu.
Pourquoi un architecte au lieu d'une équipe complète
Voici la chose contre-intuitive à propos des petites équipes : la surcharge de communication sur un projet de 9 personnes est énorme. Fred Brooks a écrit à ce sujet en 1975 et c'est toujours vrai. Avec 9 ingénieurs, vous avez 36 canaux de communication potentiels. Les réunions se multiplient. Les conflits de fusion deviennent une routine quotidienne. Quelqu'un est toujours bloqué en attente de la révision PR de quelqu'un d'autre.
Avec un architecte, l'état du système entier vit dans la tête d'une personne. Il n'y a pas de taxe de changement de contexte pour expliquer votre approche dans une pull request. Pas de conception par comité. Pas de séances de planification de sprint de deux heures.
Mais une personne ne peut taper que si vite. Une personne ne peut retenir que tant de fichiers en mémoire active. Une personne se fatigue à 18h et commet des erreurs à 20h.
C'est là qu'intervient Claude Code. Non pas comme remplacement de l'architecte, mais comme multiplicateur de force. L'architecte prend chaque décision. Claude Code exécute à une vitesse qui nécessiterait sinon 4-5 développeurs.
Le rôle de l'architecte
Notre architecte — appelons-le Marcus — a 15 ans d'expérience. Il a construit des systèmes à cette échelle auparavant. Son rôle sur ce projet était :
- Décisions de conception et d'architecture de système
- Définition des limites des modules et des contrats de données
- Écriture du code du chemin critique (authentification, traitement des paiements, orchestration du pipeline de données)
- Révision et affinement de tout ce que Claude Code a produit
- Architecture d'infrastructure et de déploiement
- Audits de sécurité
Ce qu'il n'a pas fait : écrire du boilerplate CRUD endpoints, construire des composants UI à partir de designs, écrire des tests unitaires pour la logique directe, créer des migrations de base de données, ou faire l'échafaudage de nouveaux services. Claude Code a géré tout cela.
Comment Claude Code s'intègre réellement dans un workflow
Soyons précis sur ce que « utiliser Claude Code » ressemblait réellement au quotidien, parce que les matériels marketing ne capturent pas la réalité.
Marcus commencerait chaque matin en définissant le travail du jour de manière structurée. Pas de vagues invites comme « construis-moi un système de gestion d'utilisateurs ». Au lieu de cela, il créerait ce que nous avons commencé à appeler des « briefs architecturaux » — des documents détaillés qui spécifiaient :
- La responsabilité et les limites du module
- Les modèles de données avec les types de champs exacts et les relations
- Le contrat API (endpoints, formes de requête/réponse)
- Les règles métier et les cas limites
- Les attentes en matière de gestion des erreurs
- Quels modules existants il devait intégrer
Ensuite, il alimenterait Claude Code avec ces informations par sections. Une session typique ressemblait à ceci :
# Marcus travaillerait dans le répertoire du projet avec CLI Claude Code
# D'abord, établir le contexte
claude "Lisez /src/modules/shipment/ et /src/lib/database/schema.ts.
J'ai besoin que vous compreniez les modèles existants avant que nous
ne construisions le module de facturation."
# Ensuite, l'instruction de build réelle avec le brief architectural
claude "Construisez le module de facturation en suivant le brief
architectural dans /docs/briefs/invoicing.md. Suivez exactement les
mêmes modèles que le module shipment pour la couche service, la couche
repository, et les handlers de route. Utilisez le middleware de gestion
d'erreur existant. Écrivez des tests pour toute la logique métier dans
la couche service."
Claude Code générerait ensuite le module — typiquement 15-30 fichiers incluant les types, les schémas, les services, les repositories, les handlers de route, les middleware, et les tests. Marcus examinerait le résultat, ferait des corrections, et itérerait. L'ensemble du cycle pour un module de complexité moyenne prenait environ 2-3 heures au lieu des 2-3 jours que cela prendrait pour un développeur senior.
La boucle d'itération
Voici ce que personne ne vous dit sur le développement assisté par l'IA : la première sortie est rarement prête pour la production. C'est peut-être 70-80% de là. Mais ces 20-30% restants, c'est où l'expertise de l'architecte compte le plus.
Marcus a développé un rythme :
- Générer — Claude Code produit l'implémentation initiale
- Examiner — Marcus lit chaque fichier, signalant les problèmes
- Affiner — Corrections spécifiques renvoyées à Claude Code
- Renforcer — Marcus gère manuellement les sections critiques de sécurité
- Tester — Exécuter les tests générés, ajouter les cas limites qu'Claude a manqués
Cette boucle passait généralement par 2-3 cycles par module. Au troisième mois du projet, Claude Code produisait du code de première passe qui était plus proche de 85-90% prêt pour la production, parce que la base de code avait assez de modèles établis pour le suivre.
La pile technologique et les décisions architecturales
Nous avons délibérément choisi la pile pour maximiser la productivité assistée par l'IA :
- Next.js 14 (App Router) — pour le portail client et le tableau de bord d'administration
- Node.js avec Fastify — pour la couche API (séparé de Next.js)
- PostgreSQL — base de données principale
- Redis — caching, gestion de session, pub/sub en temps réel
- Drizzle ORM — accès sécurisé à la base de données
- Turborepo — gestion du monorepo
- Vercel — déploiement du frontend
- AWS (ECS Fargate) — API et workers en arrière-plan
Nous avons choisi Next.js spécifiquement parce que les modèles sont bien établis et Claude Code a des données d'entraînement approfondies sur les conventions App Router. Cela importe plus que les gens ne le pensent. Si nous avions choisi quelque chose d'exotique comme un backend basé sur Rust avec HTMX, la qualité de sortie de l'IA aurait baissé de manière significative. Vous pouvez en savoir plus sur notre approche du développement Next.js à grande échelle.
Drizzle ORM était un choix délibéré par rapport à Prisma pour ce projet. Claude Code génère de meilleurs schémas Drizzle parce qu'ils ne sont que du TypeScript — pas de DSL personnalisé à mal faire. De plus, l'histoire de la migration est plus simple quand vous générez rapidement beaucoup de changements de schéma.
// Exemple : Claude Code a généré ce schéma de facture
// en première passe avec des corrections minimales nécessaires
import { pgTable, uuid, varchar, decimal, timestamp, pgEnum } from 'drizzle-orm/pg-core';
import { relations } from 'drizzle-orm';
import { shipments } from './shipments';
import { organizations } from './organizations';
export const invoiceStatusEnum = pgEnum('invoice_status', [
'draft', 'pending', 'sent', 'paid', 'overdue', 'cancelled', 'refunded'
]);
export const invoices = pgTable('invoices', {
id: uuid('id').primaryKey().defaultRandom(),
organizationId: uuid('organization_id').notNull().references(() => organizations.id),
shipmentId: uuid('shipment_id').references(() => shipments.id),
invoiceNumber: varchar('invoice_number', { length: 50 }).notNull().unique(),
status: invoiceStatusEnum('status').notNull().default('draft'),
subtotal: decimal('subtotal', { precision: 12, scale: 2 }).notNull(),
taxAmount: decimal('tax_amount', { precision: 12, scale: 2 }).notNull().default('0'),
totalAmount: decimal('total_amount', { precision: 12, scale: 2 }).notNull(),
currency: varchar('currency', { length: 3 }).notNull().default('USD'),
dueDate: timestamp('due_date', { withTimezone: true }).notNull(),
paidAt: timestamp('paid_at', { withTimezone: true }),
createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(),
updatedAt: timestamp('updated_at', { withTimezone: true }).notNull().defaultNow(),
});
export const invoiceRelations = relations(invoices, ({ one, many }) => ({
organization: one(organizations, {
fields: [invoices.organizationId],
references: [organizations.id],
}),
shipment: one(shipments, {
fields: [invoices.shipmentId],
references: [shipments.id],
}),
lineItems: many(invoiceLineItems),
}));
Ce que Claude Code a bien fait
Soyons précis. Voici où Claude Code a véritablement accéléré le développement :
Boilerplate et opérations CRUD
C'est l'évidence. Générer des endpoints REST, des schémas de validation de requête (nous avons utilisé Zod), des sérialiseurs de réponse, des méthodes de service basiques — Claude Code a liquidé ceux-ci en minutes. Dans l'ensemble du projet, nous estimons qu'il y avait environ 180 API endpoints. Peut-être 140 d'entre eux étaient des opérations CRUD ou de requête standard que Claude Code a générées avec une révision minimale.
Génération de tests
Claude Code a écrit environ 2 400 tests dans l'ensemble du projet. Étaient-ils tous parfaits ? Non. Environ 15% avaient besoin de travail important. Mais avoir 85% de votre suite de tests générée et fonctionnelle est un énorme gain de temps. Marcus a concentré son énergie de test sur les tests d'intégration et les cas limites gnarly que Claude Code ne pouvait pas anticiper.
Développement de composants UI
Le portail client avait environ 60 vues de page uniques. Pour chacune, Marcus fournirait la référence de conception Figma et le contrat API, et Claude Code générerait les composants React, les hooks pour la récupération de données (nous avons utilisé TanStack Query), la gestion des formulaires avec React Hook Form + Zod, et les états de chargement/erreur. La sortie était systématiquement bonne — peut-être 75% précise en pixels en première génération.
Migrations de base de données et évolution de schéma
Comme les exigences évoluaient (et elles le font toujours), Claude Code gérait les migrations de schéma en douceur. Décrivez le changement dont vous avez besoin, et il génère le fichier de migration, met à jour le schéma, met à jour les requêtes affectées, et ajuste les types TypeScript. Ce qui avait l'habitude d'être une session de refactorisation minutieuse de 45 minutes est devenu un cycle d'examen et d'approbation de 10 minutes.
Documentation
Claude Code a généré de la documentation API, des commentaires de code inline, des fichiers README, et même des documents de runbook pour les opérations. Marcus examinerait et ajusterait, mais la sortie de base était véritablement utile. Nous nous sommes retrouvés avec une meilleure documentation que 90% des projets que j'ai vus, simplement parce que le coût de génération était si faible.
Où Claude Code a échoué et ce que nous avons fait
Cette section compte plus que les histoires de succès. Si vous envisagez d'utiliser l'IA de cette façon, vous devez savoir où sont les murs.
Logique métier complexe avec dépendances multiples
Le moteur de routage des expéditions — qui devait considérer simultanément la disponibilité des transporteurs, l'optimisation des coûts, les exigences douanières, les fenêtres de livraison, et les contraintes de capacité — dépassait ce que Claude Code pouvait bien gérer. Il générerait quelque chose qui semblait plausible mais avait des erreurs logiques subtiles qui pouvaient coûter de l'argent réel.
Marcus a écrit ce module à la main. Cela a pris environ deux semaines. C'est exactement le type de travail qui justifie d'avoir un architecte senior plutôt que d'essayer de utiliser l'IA pour tout.
Code critique en sécurité
Nous n'avons jamais fait confiance à Claude Code avec les flux d'authentification, le traitement des paiements, ou le chiffrement sans révision ligne par ligne. Et c'est une bonne chose — il générait occasionnellement une validation JWT qui était techniquement fonctionnelle mais manquait les cas limites comme le décalage d'horloge d'expiration de jeton, ou ne désinfectait pas correctement les entrées avant les requêtes de base de données malgré l'utilisation d'un ORM.
Règle générale : si un bug dans ce code pouvait perdre de l'argent ou exposer des données, un humain l'écrit et un autre humain l'examine.
Cohérence architecturale à long terme
Au troisième mois, la base de code était assez grande pour que Claude Code « oublie » parfois les modèles établis antérieurement, même avec le contexte fourni. Il pourrait utiliser une approche de gestion des erreurs différente dans un module par rapport à un autre. Marcus a dû être vigilant pour attraper ces incohérences.
Nous avons atténué ceci en maintenant un document « conventions » vivant qui était inclus dans chaque session Claude Code. Pensez-y comme un guide de style, mais pour les modèles architecturaux.
Optimisation des performances
Claude Code génère du code qui fonctionne mais ne génère pas toujours du code qui est rapide. Des requêtes de base de données qui font des récupérations N+1. Des composants React qui se re-rendent inutilement. Des endpoints API qui chargent plus de données que nécessaire.
Marcus a dépensé environ 20% de son temps de révision sur l'optimisation des performances. Pas un problème majeur, mais quelque chose à budgéter.
L'économie : ventilation des coûts et ROI
Voici la partie que tout le monde veut voir. Des chiffres réels.
| Catégorie de coûts | Équipe traditionnelle (Est.) | Accélérée par l'IA (Réel) |
|---|---|---|
| Salaires d'ingénierie (18 mo / 5 mo) | 1 890 000 $ | 175 000 $ |
| Claude Code API / abonnement | 0 $ | 12 400 $ |
| Infrastructure (dev/staging) | 48 000 $ | 8 200 $ |
| Gestion de projet | 216 000 $ | 0 $* |
| QA / Test | 180 000 $ | 22 000 $** |
| Design (contracté) | 120 000 $ | 95 000 $ |
| DevOps / Configuration d'infrastructure | 96 000 $ | 35 000 $ |
| Total | 2 550 000 $ | 347 600 $ |
Marcus autogéré en utilisant Linear pour le suivi des tâches. Pas de surcharge PM.
*Contracté un spécialiste QA pour les 6 dernières semaines.
Les coûts Claude Code se ventilent en environ 2 500 $/mois. C'est le plan Max (100 $/mois pour l'abonnement) plus les coûts API pour les sessions étendues. Certains jours, Marcus brûlerait 150-200 $ en appels API pendant les sessions de génération lourde. La plupart des jours c'était 40-80 $.
Le projet a été facturé à 2M$. Notre coût total de livraison était sous 350K$. Je vous laisse faire le calcul de marge.
Comparaison de vitesse
| Jalon | Chronologie traditionnelle | Chronologie accélérée par l'IA |
|---|---|---|
| Architecture & Design | 6 semaines | 3 semaines |
| Plateforme principale (authentification, multi-tenancy, API de base) | 10 semaines | 3 semaines |
| Développement de fonctionnalités (tous les modules) | 32 semaines | 10 semaines |
| Intégrations (14 API tierces) | 12 semaines | 4 semaines |
| Tests & QA | 8 semaines | 3 semaines |
| Déploiement & Renforcement | 4 semaines | 2 semaines |
| Total | 72 semaines | 25 semaines |
Leçons pour les équipes envisageant un développement accéléré par l'IA
Après ce projet, j'ai beaucoup réfléchi à ce que cela signifie pour notre façon de construire des logiciels à l'avenir. Voici ce que je dirais à toute équipe ou agence envisageant cette approche.
Vous avez toujours besoin d'un architecte senior. Peut-être plus que jamais.
L'IA n'élimine pas le besoin d'expertise — elle amplifie quelle que soit l'expertise (ou le manque de celle-ci) que vous apportez. Un développeur junior utilisant Claude Code livrera du code de qualité junior plus rapidement. Un architecte senior utilisant Claude Code livrera du code de qualité senior à une vélocité qui était auparavant impossible.
Le pire scénario possible est un développeur de niveau intermédiaire qui pense qu'il est senior utilisant l'IA pour générer du code qu'il ne peut pas correctement évaluer. C'est comment vous obtenez une base de code qui semble bonne en surface mais s'effondre sous la charge.
Convention plutôt que configuration, partout
Plus les modèles de votre base de code sont prévisibles, mieux l'IA fonctionne. Nous avons utilisé la même structure de fichier, les mêmes conventions de nommage, et l'organisation du code identique dans chaque module. Cette cohérence a payé d'énormes dividendes à mesure que Claude Code apprenait à correspondre aux modèles existants.
Si vous travaillez avec une architecture CMS headless, avoir des conventions strictes pour les types de contenu, les routes API, et les structures de composants rend le code généré par l'IA dramatiquement plus fiable.
Investir dans les briefs architecturaux
La qualité de la sortie de Claude Code était directement corrélée à la qualité des briefs architecturaux de Marcus. Les instructions vagues produisaient du code vague. Les briefs détaillés avec des modèles de données explicites, des règles métier, et des exigences d'intégration produisaient du code proche de la production.
Nous estimons que Marcus a dépensé environ 30% de son temps à écrire des briefs architecturaux et à examiner la sortie, et 70% du temps qu'une équipe traditionnelle aurait dépensé sur l'implémentation réelle était géré par Claude Code.
Le développement assisté par l'IA change les modèles de tarification
Si vous êtes une agence, c'est la conversation inconfortable. Quand un architecte peut livrer ce qui prenait habituellement une équipe de 8, comment tarifez-vous ? Nous croyons à la tarification basée sur la valeur — le client paie pour le résultat, pas pour les heures. La plateforme vaut 2M$ peu importe que cela ait pris 1 personne ou 10 pour la construire.
Si vous êtes intéressé par la façon dont ce genre d'approche pourrait fonctionner pour votre projet, notre page de tarification détaille notre réflexion sur la portée des projets dans cette nouvelle réalité.
Pas tous les projets correspondent à ce modèle
Cela a fonctionné parce que :
- Les exigences étaient bien définies (la logistique est un domaine mature)
- Nous avions un véritable architecte senior disponible
- La pile technologique était mainstream (données d'entraînement IA exceptionnelles)
- Le client nous faisait confiance pour livrer sans micromanager la taille de l'équipe
Les projets avec des exigences ambiguës, des composants R&D importants, ou des domaines spécialisés (appareils médicaux, instruments financiers avec exigences réglementaires) nécessitent plus de jugement humain et devraient être dotés en conséquence.
Pour les projets construits avec des frameworks comme Astro où l'écosystème est plus nouveau et les données d'entraînement IA plus minces, vous verrez moins d'accélération des outils IA comparé aux projets React/Next.js.
FAQ
Combien coûte réellement Claude Code par mois pour une utilisation intensive du développement ?
Sur ce projet, nous avons en moyenne 2 500 $/mois tout compris. L'abonnement Claude Max est 100 $/mois (ou 200 $/mois pour le niveau supérieur au début de 2025), et l'utilisation de l'API pour les sessions agentic de Claude Code s'accumule en fonction de la quantité de code que vous générez. Les jours lourds atteignaient 150-200 $ en coûts API. Les jours légers d'examen et d'affinement étaient 40-80 $. Anthropic a également introduit le plan Max à 200 $/mois qui comprend une utilisation importante qui pourrait réduire les coûts variables.
Un développeur junior peut-il utiliser Claude Code de la même façon ?
Non, et c'est important. Claude Code amplifie votre niveau de compétence existant — il ne remplace pas la connaissance architecturale. Un développeur junior utilisant Claude Code générera du code plus rapidement, mais il ne captera pas les bugs subtils, les problèmes de sécurité, les problèmes de performance, ou les incohérences architecturales qu'un ingénieur senior détecte immédiatement. Vous devez quelqu'un qui peut évaluer la sortie, pas seulement l'accepter.
Qu'en est-il de la qualité du code — le code généré par l'IA est-il maintenable ?
Cela dépend entièrement des contraintes que vous imposez. Notre code généré a passé les mêmes règles de linting, vérification de type, et standards de révision de code que le code écrit par l'humain. L'astuce est d'établir des modèles forts au début du projet afin que l'IA ait de bons exemples à suivre. Nous avons maintenu un document de conventions qui était inclus dans chaque session Claude Code. Six mois après le lancement, l'équipe qui maintient la plateforme n'a rapporté aucune charge de maintenance inhabituelle.
Cette approche fonctionne-t-elle pour les projets riches en frontend ?
Oui, avec des avertissements. Claude Code est excellent pour générer des composants React, la gestion des formulaires, les hooks de récupération de données, et le code de gestion d'état. Il est moins fiable pour produire des mises en page CSS pixel-perfect à partir de designs — vous aurez besoin de plus de cycles d'itération pour le polissage visuel. Nous avons constaté qu'il était environ 75% précis en première génération pour l'interface utilisateur par rapport à 85-90% pour le code backend.
Comment gérez-vous la révision de code quand il n'y a qu'un seul développeur ?
Marcus a examiné chaque ligne du code généré par l'IA lui-même. Nous avons également apporté un spécialiste en sécurité contracté pour deux sessions d'audit concentrées pendant le projet (semaine 12 et semaine 22). Pour la phase finale, un spécialiste QA a rejoint pendant six semaines. L'absence de révision de code par les pairs est un risque véritable — nous l'avons atténué avec des outils automatisés (mode TypeScript strict, ESLint avec des règles agressives, Vitest avec des seuils de couverture) et des audits externes.
Que se passe-t-il quand Claude Code génère du code bogué ?
Cela arrive régulièrement. La première passe n'est jamais parfaite. Nous avons construit cette attente dans le workflow — générer, examiner, affiner, renforcer. La plupart des bugs ont été détectés pendant le cycle de révision de Marcus. La suite de tests automatisés (également largement générée par l'IA mais examinée par un humain) a détecté les problèmes de régression. L'insight clé est que déboguer du code généré par l'IA est plus rapide que d'écrire du code correct à partir de zéro, parce que vous commencez par quelque chose de largement correct.
C'est uniquement viable pour les projets greenfield, ou cela fonctionne avec les bases de code existantes ?
Claude Code fonctionne réellement bien avec les bases de code existantes parce qu'il peut lire et comprendre les modèles existants. Sur ce projet, les modules ultérieurs ont bénéficié d'avoir les modules antérieurs comme référence. Nous avons depuis utilisé Claude Code pour l'ajout de fonctionnalités sur les projets clients existants avec de bons résultats. La clé est de lui donner assez de contexte sur les conventions existantes et les modèles. Si votre base de code est incohérente ou mal documentée, les additions générées par l'IA hériteront de cette incohérence.
Referiez-vous cela ?
Absolument. Nous le faisons déjà. Deux autres projets fonctionnent actuellement avec ce modèle — un avec un architecte unique, un autre avec deux ingénieurs pour un système plus complexe. L'économie est trop convaincante pour l'ignorer. Mais je veux être clair : ce n'est pas question de remplacer les développeurs. C'est question de changer le ratio d'architectes seniors par rapport à la sortie. Vous avez toujours besoin de l'expertise humaine. Vous avez juste besoin de moins de dactylographie humaine. Si vous envisagez un projet et voulez explorer à quoi ce modèle pourrait ressembler, contactez-nous — nous sommes heureux de discuter si c'est un bon ajustement.