Dilbert du 26/10/2010

Fleid à lui même : « Y’a du retard à rattraper, va falloir augmenter le rythme mon pti’vieux! »

Dilbert.com

Traduction Approximative:

Dibert : Notre plan projet est tellement compliqué que nous sommes garantis de nous planter.

Dilbert :Mais vu que la complexité est une notion vraiment trop abstraite pour vous, je sens que vous allez m’entrainer sans pitié dans le vortex de l’échec.

Dilbert : Go!

Boss : J’ai besoin que vous finissiez 6 semaines plus tôt pour un congrès!

Un beau métier? Architecte des étoiles!

La base de cet article est un pavé écrit par Venkatesh Rao de Ribbonfarm: celui-ci.

Pour moi c’est à lire absolument, et d’autant plus si vous êtes dans un de ces deux cas:

  • Vous travaillez avec un architecte des étoiles,
  • Vous êtes en train de modéliser la réalité pour en faire une application, et ça commence à faire mal à la tête.

Qu’est ce que j’appelle un architecte des étoiles? C’est un architecte perdu pour la cause dans son délire mégalo-maniaque de modéliser le monde entier dans son application.

Les symptômes?

  • Le modèle de l’application qui comporte trop de niveaux d’abstractions (faire un ETL avec un ETL, redévelopper SSAS dans SQL Server…),
  • Le modèle que plus personne ne comprend de bout en bout à part l’architecte des étoiles,
  • Le projet qui inclut le développement d’un framework (alerte rouge),
  • La documentation qui fait plus de 200 pages…
  • Le fait que les développeurs passent plus de temps à coder des « corrections » des outils de dev que pour implémenter l’application

Ce qui nous ramène à l’article de Ribbonfarm, qui vient nous expliquer comment naissent ces délires étoilés:

  1. Tout commence quand on regarde une réalité complexe et déroutante, avec pour volonté de l’analyser,
  2. Cette réalité étant complexe, on échoue à répétition à intégrer toutes les subtilités dans son analyse,
  3. On attribue alors cet échec (et la frustration qui va avec) à une irrationalité supposée de ce qu’on analyse plutôt qu’à ses propres limites,
  4. On invente alors une version de la réalité telle qu’elle devrait être,
  5. On impose ensuite cette vision comme vérité, quitte à détruire la réalité qui existait avant,
  6. Enfin on regarde l’impossible utopie élaborée avec amour échouer lamentablement

Toutes ces étapes sont naturelles, humaines, il ne sert à rien de vouloir les éviter absolument.

Ce qui est important, c’est que lorsque ça commence à faire mal (étape 3, étape 6), on arrive à mettre son amour propre de côté et repartir de 0. A force d’itération la connaissance et la compréhension vont s’améliorer, un modèle correct finira donc bien par émerger tôt ou tard. Bien évidemment, une itération prenant du temps, il faut donc mieux itérer sur des maquettes, voir des prototypes, pendant une grosse phase de conception, plutôt qu’itérer sur des cycles de développements complets à 200 jours-hommes pièce…

Vous pouvez maintenant vous demander qu’est ce qui différencie l’architecte étoilé de ses pairs, si la nature humaine force tout le monde à suivre le même chemin de croix? C’est son manque définitif de remise en question lorsque tout s’écroule qui l’identifie clairement: son modèle était parfait, ce n’est quand même pas de sa faute si les développeurs étaient si bêtes!

Parallélisme et Lookups dans SSIS

Todd McDermid a publié un très bon article il y a 15 jours sur le parallélisme et les lookups dans SSIS.

Son approche est excellente, ça vaut le détour, mais pour ceux qui n’ont pas le temps je vous le résume en 2 points:

  • L’interface graphique de SSIS nous ment très régulièrement. C’est une abstraction qui ne représente pas exactement ce qui se passe réellement sous le capot.
  • Conclusion: comme pour SQL Server et le T-SQL, dans 95% des cas il vaut mieux laisser SSIS optimiser tout seul le data-flow plutôt que déplacer les blocs dans tous les sens.

Nb: Je passe l’air de rien un lien vers la loi des abstractions foireuses de Joel Spolsky, mais je reviendrai dessus. C’est à mon sens l’un des meilleurs articles écrit sur l’architecture logicielle.