BodySplash.fr

Aller au contenu | Aller au menu | Aller à la recherche

dimanche 17 février 2008

Nested factory

Je ne sais pas si on peut parler de pattern, mais en jouant avec les concepts DDD sur un projet en cours, nous sommes tombés Fabien, Michael et moi sur un pattern intéressant: la nested factory. Je vous laisse découvrir les détails ici

jeudi 14 février 2008

Symposium DNG - Entity Framework et Linq

Le lecteur attentif aura sans doute remarqué que j'ai sauté la conférence sur Volta dans l'ordre de mes billets. Pourquoi? Parce que la techno étant très jeune je ne suis pas sur de pouvoir faire beaucoup de commentaires intéressants dessus, et du coup Fabien à dit à peu prêt tout ce qu'il y avait à dire sur le sujet

Lire la suite...

mardi 12 février 2008

Symposium DNG - Domain Driven Design

Bon, me voilà devant un billet bien difficile à écrire. Critiquer une conférence de Sami Jaber est un exercice périlleux, mais bon, je suis fou je tente ma chance.

Lire la suite...

Symposium DNG

Bon, après tout pourquoi ne pas faire comme ce poseur de Fabien et aller de mon petit compte-rendu sur cette édition 2008 du symposium DNG.

Lire la suite...

mercredi 6 février 2008

TDD

Au détour d'un coin de web, je suis tombé sur un article intéressant de Patrick Smacchia

Lire la suite...

mardi 22 janvier 2008

Restons simple

Une pratique fondamentale d'xp est de garder le design simple.

Lire la suite...

mercredi 16 janvier 2008

TechDays

Ça y est, c'est (presque) officiel, me voici embarqué pour les TechDays 2008

Lire la suite...

lundi 14 janvier 2008

Domain model, séparation des couches: le grand mélange

NOTE DU 30/01/2009: Je vois que vous êtes assez nombreux à faire une recherche sur domain model sur google et à tomber sur mon blog. Si vous cherchez des informations sur le sujet, nous créons doucement avec des amis ddd france. Nous comptons beaucoup sur la participation de la communauté pour le faire avancer, donc n'hésitez pas à laisser une trace.
Je vous laisse maintenant lire le billet original.


Bon ce message va sans doute faire partie de la grande série "je me crois assez fort pour corriger la terre entière"; mais je sais mes lecteurs très tolérant vis à vis de mon égo démesuré :)

De quoi vais-je causer? Et bien tout est dans le titre pratiquement. Domain model et séparation des couches, sont des termes très à la mode que l'on rencontre de nos jours aux quatre coins du web.
Je devrais être heureux, mais je remarque souvent qu'ils ont l'air bien mal employé.

Lire la suite...

lundi 5 novembre 2007

Critiquons, critiquons

J'ai pas mal de billets un peu trop ambitieux qui trainent à l'état de brouillon, donc pour donner une illusion d'activité, je vais donner rapidement les problèmes que j'ai pu croiser en utilisant quotidiennement depuis mal de temps ASP.NET.

Lire la suite...

lundi 1 octobre 2007

Quelques signes de vie

Voilà quelque temps que je n'ai pas infligé au web un peu de ma prose. Donc je rassure mes trois lecteurs et demi que je suis toujours en vie.
En fait j'aurai plein de choses à dire, car le projet sur lequel je travail est particulièrement formateur. Pas par ses aspects techniques ou fonctionnels, mais par le contexte. En gros je pourrai faire un gros billet intitulé "Comment appliquer une méthode agile dans un environnement rigide".

La méthode de gestion de projet imposé contredit point par point toutes les valeurs d'une méthode agile. Je suis déjà passé par des sociétés qui n'avaient pas de méthode du tout, mais là, c'est la première fois que je me trouve en face d'une anti-agilité revendiquée. En quoi c'est formateur? Les problèmes successifs que rencontrent un système aussi rigide sont les pierres qui fondent ma conviction que l'agilité est, pour le moment, le meilleur moyen de gérer un projet informatique. Là où avant je théorisais beaucoup, je suis maintenant convaincu par contre-exemple que je suis dans le juste, et c'est déjà pas mal.
Du coup, je devrais reprendre mon billet sur la maîtrise d'ouvrage, car il n'est plus tout à fait juste. Mais j'attend plutôt la fin de tout ça pour tenter un grand billet clair récapitulant ma vision actuelle de la gestion de projet.

lundi 13 août 2007

MOA

Non je ne vais pas parler de moi mais de moa. Gni? MOA veut donc dire maîtrise d'ouvrage, terme assez connu normalement dans la bâtiment, mais qui a également fait son chemin dans le milieu informatique (faut dire qu'on le pille pas mal le vocabulaire du bâtiment).
Théoriquement donc, la MOA désigne le client, celui donc qui nous commande une magnifique application pour répondre à son besoin. Par extension, on parle de maîtrise d'oeuvre(MOE) pour celui qui va réaliser le projet. Cette relation n'implique pas nécessairement deux sociétés différentes. On trouve au sein d'une même entreprise et la maîtrise d'ouvrage, et la maîtrise d'oeuvre. Typiquement, le service informatique représente les maîtres d'oeuvre, et tous les services à côté qui expriment des besoins font office de maîtrise d'ouvrage (ie: service marketing, service client, achats etc etc).

Dans une société à la taille conséquente, il est évident que n'importe qui ne peut pas se pointer au service informatique et demander un développement. On se retrouverait à avoir des développements différents pour des besoins similaires; avec un nombre incroyable de micro projet à développer et maintenir; bref l'anarchie la plus complète.
Dans ce genre de situation, il apparait donc le besoin d'avoir un interlocuteur par service qui va centralier les demandes, et rédiger les expressions de besoin, puis les cahiers de charge en collaboration avec la maîtrise d'oeuvre. Cette nouvelle espèce de cadre s'appel donc les maîtres d'ouvrage.
Pour que la MOA et la MOE puissent communiquer et se comprendre, il faut bien évidemment avoir un langage commun clair et bien défini. La solution de facilité adoptée par la majorité des sociétés actuellement est de mettre à la MOA des gens provenant de l'informatique. Personnellement, je trouve que c'est un très mauvaise idée, et je vais tenter d'expliquer pourquoi.

- Premièrement, quelqu'un venant de l'informatique ne connait pas nécessairement aussi bien le métier que quelqu'un d'inculte en technique, mais ayant travaillé un certain temps dans le service concerné. On pourrait se retrouver donc plus facilement aves des oublis dans la définition des besoins.
- Deuxièmement, un informaticien à la MOA va nécessairement voir le métier avec ses oeillères d'informaticien. Il va faire en quelque sorte en amont le travail de la maîtrise d'oeuvre en préformattant ses analyses en fonction de ce qu'il connaît de la technique. Cette couche d'abstraction je trouve peut faire perdre du sens au métier avant même qu'il ait commencé à faire son chemin au sein du service informatique.
- Troisièmement, un maître d'ouvrage provenant de l'informatique, en cas de conflit d'intérêt entre la MOA et la MOE, va plus ou moins prendre le partie de la MOE (question d'affinités). Normalement, c'est tout de même le besoin du client qui est censé primer non?
- Quatrièmement, mettre un informaticien à la MOA c'est prendre le problème à l'envers. On cherche à définir un langage commun entre la MOA et la MOE; mais ce n'est pas au client de tenter de convertir son savoir en termes intelligibles pour l'informatique. Bien au contraire c'est au client d'imposer ses termes métiers, car ils sont riches de sens dans leur contexte; et ils ne doivent pas tenter des les appauvrir en les traduisants. C'est donc à l'informatique de comprendre tout le sens du langage métier, et de tenter ensuite de réprésenter la réalité de ce métier en le modélisant de la manière qui lui convient (par exemple à travert des diagrammes UML).

Je me permet de souligner l'importance de cette notion de langage commun. Eric Evans parle justement d'"Ubiquitous language" dans son livre "Domain driven design" (traductible par "langage omniprésent"). Ce langage omniprésent doit être la clef de voute de la communication MOE/MOA; et c'est clairement la MOA qui l'impose, et à l'informatique de bien vérifier que chaques termes est clairement défini et compris. Par exemple, dans le cadre de mon travail dans le milieu pharmaceutique; quand on me parle de "libération d'un médicament", à première vue ça ne me parle pas du tout, donc il faut bien que je demande la définition; et si cette notion est importante, alors il faut qu'elle apparaisse quelque part dans mon design. Ainsi mon code et mon design même se retrouve noyauté par des termes riches de sens provenant du domaine.
La définition de ce langage commun provenant des experts du domaine doit clairement venir en toute première partie d'un projet pour éviter toute ambiguité future.

Je terminerai par une petite anecdote. J'ai travaillé avec un certain de nombre de MOA au cours de ma jeune carrière; et les meilleurs bizarement ne venaient jamais de la technique, mais toujours du métier... Je vous laisse méditer.


PS: Merci à la personne qui m'a inspirée ce billet. Elle se reconnaîtra :)

mardi 31 juillet 2007

Encore une preuve

Pour donner suite on va dire au dossier de fond "objet, .net, java", voici une petite anecdote datant de la semaine dernière.
Passons les détails, et disons juste que le besoin d'avoir un nouveau développeur .NET au sein de la petite équipe dans laquelle j'évolue s'est fait sentir. Ok on nous propose deux CV:
  • Un développeur "senior" ayant déjà une certaine expérience en .NET (du moins à en croire son CV)
  • Un développeur Junior n'ayant jamais touché .NET de sa vie, mais avec pas mal de projets Java à son actif
Vous devinez évidemment assez facilement la chute de cette histoire:
Mon collègue fait passer un petit entretien téléphonique au "sénior": bilan des courses, n'a jamais entendu parler de design patterns, confond version du framework et version de C#, crois que les génériques sont une nouveauté de C# 3, ne sais que très vaguement ce qu'est l'IL; n'a jamais entendu parler de polymorphisme; bref pas le bond profil on va dire pour rester gentil.
Le développeur Java quant qu'à lui, même s'il ne connaît pas .NET, quand on lui parle de patterns, de couche de persistence, de domain driven design, il sait de quoi on cause et ne répond pas "mais de quoi vous me parlez là?" (sic).

Conclusion de cette histoire? Je trouve ça assez ironique qu'un profil développeur junior java emporte haut la main ce "combat" contre un développeur senior se vendant comme expert .NET avec en plus la certif MCP. On va me dire de ne pas tirer de conclusions hâtives, mais ce n'est qu'un constat supplémentaire parmi tant d'autres que même si .NET est une excellente techno, là plupart de ceux qui l'utilisent sont restés bloqués sur le schéma VB6, Access.

A là limite qu'on trouve au sein de la profession des gens qui n'ont pas évolué d'un pouce depuis l'obtention de leur diplôme, ça ne me choque pas tant que ça, c'est humain hélas et tout le monde ne fait pas ce boulot par passion. Mais ce qui m'ennuie, c'est que, et d'une, ils ne devraient pas venir foutre les pieds en .NET, et de deux, j'ai très peur de la maintenance des applications .NET d'ici quelques années si la majorité du code produit est, au mieux, médiocre. Ca ne fait finalement que desservir la réputation d'une technologie qui mériterait bien mieux.

Je suis en train de me rendre compte que tout ceci doit me faire paraître extrêmement arrogant, parce que finalement qu'est ce qui vous dit que mon code est meilleur? Mon code est encore loin d'être parfait, et j'ai énormément de choses à apprendre et d'expérience à acquérir; mais moi au moins, j'essaye d'apprendre, je me pose des questions, je remet en question ma manière de développer et j'essaye de trouver de nouvelles approches en ne restant pas bloqué sur une seule manière de faire pour la simple et bonne raison que, "j'ai toujours fait comme ça, je ne vois pas pourquoi je changerai maintenant" ; et disons que ce n'est pas une démarche que j'ai beaucoup rencontré ces derniers temps, et c'est pourquoi je me permet d'être assez critique.

vendredi 22 juin 2007

8 fois plus de code

Pour différentes raisons, pour le projet en cours j'ai du écrire la mapping à la main plutôt que d'utiliser une solution comme nhibernate.
Au final, la dll contenant mon domaine pèse 100ko, et la dll contenant le mapping quant à elle pèse 800ko. 8 fois plus de code donc nécessaire pour faire persister un domaine. Je dois dire que j'écris ce message à la manière d'une dépêche AFP car finalement, je ne sais pas trop comment commenter ce ratio si ce n'est en disant "ah ouais, quand même".

PS: ceci n'est pas une remise en question de l'approche par domaine, mais juste un constat assez amusant que je voulais partager avec un très hypothétique lecteur... qui d'ailleurs ne peut même pas répondre car j'ai coupé les commentaires et les trackbacks pour stoper l'hémoragie des spams qui pourrissaient ce blog.

jeudi 17 mai 2007

Grrrrr

Voilà quelques temps déjà que je traine mes guêtres dans le milieu de .Net, et par extension, du moins c'est ce que je pensais, de l'objet.

Lire la suite...

lundi 19 février 2007

Nhibernate et mapping

Vous en avez marre d'écrire vos fichiers de mapping nhibernate à la main?

Lire la suite...

samedi 6 janvier 2007

Domain driven design

J'ai découvert il y a peu cette approche, et pour le moment, je suis juste en phase de test. Compliqué à mettre en place, mais extrêmement gratifiant, et surtout propre et élégant, le sujet est extrêmement vaste.

Lire la suite...

vendredi 5 janvier 2007

Orienté objet

tout le monde en parle depuis des années, mais mon maigre constat est que finalement, dans le monde de l'entreprise, le combat est loin d'être gagné.

Lire la suite...

page 2 de 2 -