Pendant que ma machine remet à neuf mon repository maven local, j'en profite pour vous faire part de mon expérience de développement récente.
Parce que ça fait un moment que je n'ai pas parlé de développement, quand même, sauf que là, ce sera d'une façon un peu plus générale.
Dans une entreprise précédente et pas vraiment appréciée, nous avions des instructions strictes nous interdisant d'utiliser des bibliothèques Java externes. C'était frustrant, car on voyait passer des tonnes de bonnes idées sans pouvoir s'en servir. Cela dit, ça servait "censément" l'objectif de maintenir la taille de notre logiciel à son minimum (même si on aurait pu utiliser des solutions bien plus intelligentes pour servir ce but). Si vous vous demandez pourquoi, la raison est double : 1. Le logiciel était installé via Java web Start, et ses mises à jour par le même moyen. Du coup, pour éviter de les faire sentir à l'utilisateur, il valait mieux limiter la taille du jar. 2. Vous savez combien ça coûte à envoyer sur internet, un octet ? Ben pas moi ! Néanmoins, le chef considérait que chaque octet que nous envoyions lui coûtait de l'argent sorti de sa poche, ce qui était inacceptable.Donc, nous n'utilisons aucune bibliothèque externe, mais connaissions pourtant le corollaire à la loi des bugs : chaque code de ligne qu'on n'écrit pas, c'est des bugs en moins.

Aujourd'hui, je travaille sur un logiciel mettant en oeuvre une pile plutôt complexe : * un serveur Glassfish * un client Glassfish * une pile Neo4J/RDF ... * un Weld coté client * du Flex avec GraniteDS largement customisé pour le remotingJ'en passe, et des meilleurs. Et je ne compte même pas notre forge logicielle.Et une constatation s'impose maintenant : si le code que je n'écris pas ne contient pas de bugs, celui que j'utilise peut lui aussi en contenir. Et cette semaine, c'est arrivé ... à peu prés une fois chaque jour :

  • Un bug ultra-galère de Glassfish concernant les contextes JNDI qui ne sont pas navigables

  • Un autre bug pénible de SerialInitContextFactory invisible

  • Un pataquès pas possible entre maven, jenkins, et les slaves
  • Une merdouillle invraissemblable entre Eclipse WTP et m2eclipse qui empêché d'utiliser un ejb-client comme dépendance dans un projet (genre, le truc, c'est fait pour, mais chez Eclipse, ils sont pas fans).
  • Et le dernier, qui date d'aujourd'hui : weld-se 1.1.2-Final qui gère mal l'emplacement du fichier beans.xml (mais là-dessus, je n'ai trouvé aucune doc, et, je dois l'avouer, j'ai la flemme de faire le bug report)Bref, assembler tout ça, ça a un coté Behemoth assez déplaisant : dès qu'on passe un bug, on en prend un ou deux autres dans les dents. Quelque part, je comprend les partisans de Play! (même si l'application sur laquelle je bosse m'interdit d'utiliser une solution simpliste comme celle-lé).