Créativité et Génération de code
Certains pourraient penser que la génération de code et la modélisation en général vont brider la créativité de leurs développements en leur imposant un carcan dont ils ne pourraient s’échapper !
Cette vision de la modélisation est très restrictive : elle laisse à penser que l’approche modélisation s’utilise comme une boîte noire dans laquelle on rentre un modèle et dont il ressort une application prête à l’emploi.
Si certaines approches MDA tentent de simplifier à l’extrême la génération d’applications (approche Crud par exemple), il est largement entendu que ces approches ne permettent que la générations d’applications très simples voire simplistes. Le MDA ne se résume pas à ces approches : dans nombre de cas d’utilisation, ces techniques sont utilisées sur des parties du projet laissant au concepteur la possibilité d’exprimer sa créativité dans les autres parties et dans la pertinence de la solution.
Pour rester sur ce sujet de créativité, on peut décomposer l’apport de la créativité aux activités de programmation sur deux axes : la créativité fonctionnelle et la créativité technique. Pour la première, l’approche modélisation/génération est extrêmement bénéfique : moins on passe de temps à coder plus on est disponible pour travailler sur les aspects fonctionnels, plus la solution apportée par l’application est innovante ou en adéquation avec les besoins de l’entreprise.
Pour la créativité technique, en première approche, il pourrait en être différemment : où trouver de la créativité dans des tâches largement automatisées ? En fait, la créativité se situe alors à un autre niveau : dans la conception du template de génération. C’est dans cet élément essentiel à la génération automatique que l’on retrouve les capacités créatives et d’innovation des développeurs. C’est dans la qualité du template que l’on retrouvera les performances de l’application, la qualité du code qui, soit dit en passant, ne doit pas être de qualité inférieure à celle d’un code écrit manuellement. La créativité technique reste absolument nécessaire pour imaginer ces solutions innovantes porteuses de gain de productivité.
Pour la créativité technique, en première approche, il pourrait en être différemment : où trouver de la créativité dans des tâches largement automatisées ? En fait, la créativité se situe alors à un autre niveau : dans la conception du template de génération. C’est dans cet élément essentiel à la génération automatique que l’on retrouve les capacités créatives et d’innovation des développeurs. C’est dans la qualité du template que l’on retrouvera les performances de l’application, la qualité du code qui, soit dit en passant, ne doit pas être de qualité inférieure à celle d’un code écrit manuellement. La créativité technique reste absolument nécessaire pour imaginer ces solutions innovantes porteuses de gain de productivité.
Pour finir, et pour replacer dans le contexte réel les défenseurs de la créativité, quel est le réel pourcentage de code « créatif » dans les applications ? Peut-on vraiment parler de créativité quand on passe une bonne partie de son énergie dans l’écriture de code transformant des données d’une représentation dans une autre ? N’est-il pas préférable d’utiliser une machine pour ces tâches pénibles et répétitives ?