Il envisage ainsi un futur où les développeurs n'auraient plus à se soucier des répétitions de code ou de l'extensibilité, car ces outils automatisés prendraient en charge ces aspects de manière simple mais efficace. Une telle évolution pourrait rendre obsolètes les modèles architecturaux classiques, et Kinlan se demande si de nouveaux paradigmes émergeront pour gérer des systèmes basés sur des modèles de langage de grande taille (LLM).
Un framework est un ensemble de code pré-écrit que les développeurs utilisent pour faciliter le développement d'applications dans un langage de programmation spécifique. Ces plateformes visent à simplifier le processus de création de logiciels en fournissant des composants réutilisables. Le framework sert de base, que les développeurs peuvent adapter en y ajoutant du code personnalisé selon leurs besoins.
L'objectif des frameworks est d'assurer une réutilisation optimale, permettant aux développeurs de ne pas repartir de zéro à chaque nouveau projet. Ils comprennent souvent des classes et des fonctions prédéfinies, offrant des solutions pour interagir avec des périphériques matériels ou accomplir des tâches spécifiques, selon le type de framework, les compétences du développeur et les exigences du projet.
Kinlan partage son expérience personnelle en utilisant ces outils pour construire rapidement des applications fonctionnelles, constatant qu'il se sentait extrêmement productif. Il souligne que, bien que Replit produise souvent du code répétitif et sans structure complexe, cela n’empêche pas l'outil de répondre efficacement à ses besoins immédiats. Il s'interroge ainsi sur l'avenir des modèles d'architecture traditionnels et se demande si de nouvelles approches logicielles, adaptées à la gestion des modèles de langage (LLM), émergeront pour remplacer les frameworks actuels.
Frameworks ou IA la bataille entre facilité de développement et qualité du code à long terme
L’évolution rapide des outils de génération de code assistée par IA, comme ceux proposés par Replit, suscite un débat intense sur l’avenir des frameworks traditionnels et des pratiques de développement en général. D’un côté, ces outils semblent offrir une solution rapide et efficace pour créer des applications simples, en automatisant une grande partie de la génération de code. Cependant, plusieurs critiques soulignent que ce genre de génération de code produit souvent des résultats sous-optimaux, notamment en raison de la répétition excessive du code, de la duplication logique et du manque de structure modulaire. Cela engendre un code dit « vanille » (simple et brut) qui, à long terme, peut devenir difficile à maintenir et à étendre, contrairement à un code bien architecturé, conçu avec un framework solide.
En effet, les frameworks ne se contentent pas de faciliter le développement initial. Ils imposent une structure qui, en dépit de ses apparentes contraintes, permet de garantir la cohérence du projet à grande échelle. Ils favorisent l’extensibilité, la testabilité et la réutilisation du code, des qualités qui deviennent cruciales lorsque le logiciel évolue au fil du temps. Les critiques soulignent que, même si un agent IA peut générer rapidement un produit fonctionnel, il ne prend pas en compte la logique sous-jacente de la conception, ni la manière dont les applications devront être adaptées, déboguées et étendues à l’avenir. Un code généré par IA, sans cadre structurel, est souvent vu comme du « mauvais code » ou du « bloat », car il devient difficilement évolutif et peut générer des erreurs subtiles difficiles à repérer et à corriger.
Certains soutiennent cependant que l’approche IA pourrait libérer les développeurs de certaines tâches répétitives et fastidieuses, leur permettant de se concentrer sur des aspects plus créatifs ou complexes du développement. À une époque où la vitesse de développement devient une priorité pour les entreprises, l’automatisation générée par IA pourrait offrir une alternative intéressante aux frameworks traditionnels, en rendant le développement plus accessible à ceux qui n’ont pas forcément de compétences techniques avancées. Cependant, cette vision pose aussi des questions sur la qualité et la pérennité des produits générés ainsi, notamment dans des contextes de grande envergure nécessitant des mises à jour fréquentes ou une maintenance continue.
Le véritable dilemme réside donc dans l'équilibre entre la rapidité de développement et la qualité du code. Si la génération automatique de code peut s’avérer efficace pour des applications simples ou prototypes, elle risque de s’avérer problématique à mesure que la complexité des projets augmente. Les frameworks, quant à eux, bien qu’ils imposent une structure plus rigide, assurent une base de travail plus robuste pour des applications à long terme. Ce qui semble être un progrès vers un développement logiciel plus rapide et plus accessible, pourrait en fait mener à une accumulation de dettes techniques si les outils générant le code ne prennent pas en compte les principes d’architecture logicielle solides.
Ainsi, le rôle des frameworks ne semble pas disparaître pour l'instant. Ils demeurent un outil indispensable pour les projets complexes, où la maintenabilité, l’extensibilité et la cohérence du code sont primordiales. Les IA génératives, quant à elles, peuvent jouer un rôle complémentaire, mais leur utilisation devra être prudente et ciblée, notamment pour des applications simples ou comme point de départ pour des prototypes, plutôt que comme solution à long terme.
Sources : Paul Kinlan's blog post, Red Hat
Et vous ?
Les frameworks imposent-ils réellement des contraintes sur l'architecture du code ou offrent-ils simplement un cadre nécessaire pour maintenir la cohérence et la qualité à long terme ?
Les frameworks traditionnels sont-ils vraiment obsolètes, ou les outils automatisés sont-ils simplement complémentaires, adaptés à des besoins spécifiques mais insuffisants pour des projets complexes ?
L'émergence d'outils comme Replit pourrait-elle conduire à une simplification excessive du développement, au détriment de la structure et de la maintenabilité du code à long terme ?
En envisageant un avenir sans frameworks traditionnels, Paul Kinlan ignore-t-il le rôle crucial que ces frameworks jouent dans l'extensibilité, la testabilité et la réutilisabilité des applications à grande échelle ?
Voir aussi :
Les frameworks Web détruisent-ils vraiment les performances du Web ou l'expérience utilisateur ? Ils placeraient la satisfaction des développeurs au-dessus des utilisateurs
La version 2.0 de Kiss, le framework full-stack open source basé sur Java, est désormais disponible et permet le développement d'applications web professionnelles sécurisées, robustes et rapides