Marre des gros frameworks, vive les bons outils

Publié par Éric Le Merdy

Ne peut-on pas se passer de nos gros frameworks ?

David Gageot est venu fin janvier nous parler de son attitude face aux frameworks en prenant le prétexte de développer un petit site web pour élire le chaton le plus mignon. Ceux qui ont vu le film The Social Network n'ont pas pu manquer la référence à facemash, la première application qu'a développé Mark Zuckerberg pour comparer les étudiantes de son campus.

La présentation donnée au Breizh JUG a été enregistrée en vidéo.

Depuis, David a fait des progrès avec IntelliJ ;-) et a pu nous montrer la maîtrise de son IDE.

Quelle est la différence entre un framework et un outil ?

Un framework va faire bien ce pour quoi il est conçu et difficilement tous les besoins pour lesquels il n'a pas été conçu. L'outil, lui, aide le développeur sans lui poser de contraintes.

Promouvoir la simplicité

Ne pas utiliser de framework, c'est se donner l'occasion de ré-écrire une partie de leur mécanique. On peut donc apprendre comment ils sont fait. On garde aussi la maîtrise intégrale sans ajouter de couche "magique" qui sera à coup sur le talon de l'application en production.
Ce discours est un peu à contre-courant des besoins d'uniformité que les DSI expriment. Nombre d'architectes java seraient inquiets par cette incitation au libre choix des frameworks et des outils. L'équilibre se situe lorsque on met en question le bénéfice de l'uniformisation et les pertes dues à son adoption systématique, comme la complexité par exemple.

Gros framework vs bon outils ?

Voici un résumé des comparaisons qui émergent :

FonctionGros frameworkBon outilBénéfice
Méthode de développementBig Up-Front DesignTDDFeedback
Lancement des testsN'importe qu'elle usine logicielleInfinitestFeedback
Serveur webTomcat, Play![Simple](http://www.simpleframework.org/)Simple
Tests web[JWebUnit](http://jwebunit.sourceforge.net/)TDD avec des pages web
Boîte à outils génériqueApache CommonsGuavaModerne
Moteur de templateFreeMarker, VelocityString TemplateSimple
Injection de dépendanceSpring, Nexus, Pico ContainerGuiceSimple

Dans la vidéo, David parle du problème de l'injection de l'aléatoire dans l'application. Il nous a fait la démonstration chez Valtech en utilisant mockito pour injecter la suite de valeurs aléatoires dans le test sans changer le code de production : le code sur la branche Valtech

Nous remercions David d'être passé nous voir, nous avons passé une excellente soirée.