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 :
Fonction | Gros framework | Bon outil | Bénéfice |
---|---|---|---|
Méthode de développement | Big Up-Front Design | TDD | Feedback |
Lancement des tests | N'importe qu'elle usine logicielle | Infinitest | Feedback |
Serveur web | Tomcat, Play! | [Simple](http://www.simpleframework.org/) | Simple |
Tests web | [JWebUnit](http://jwebunit.sourceforge.net/) | TDD avec des pages web | |
Boîte à outils générique | Apache Commons | Guava | Moderne |
Moteur de template | FreeMarker, Velocity | String Template | Simple |
Injection de dépendance | Spring, Nexus, Pico Container | Guice | Simple |
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.