samedi 16 novembre 2013

Dérive des estimations des développeurs

Lors de ma dernière animation Scrum, un des apprenants m'a posé une question : "Pourquoi lorsqu'un développeur nous dit que la tâche va prendre X jours, bien que je double systématiquement ses estimations, fréquemment elles sont dépassées. Dans les autres domaines, je ne trouve pas autant d'écarts." Sur le moment, je lui ai répondu deux choses: "Tout d'abord, il faut éduquer les développeurs, et donc les forcer à se faire des métriques sur l'existant. Avec Scrum cela est facilité : c'est intégré dans la méthode. Ensuite, il faut voir que les développeurs sont un peu comme des artistes, il y a un part de créativité dans ce qu'ils font". Je n'étais pas totalement satisfait de ma réponse, même si elle est vraie. Je me suis demandé un peu plus ce qui faisait la difficulté dans le développement pour avoir des estimations exactes par rapport aux autres disciplines. Ma réflexion m'a emmené là : Si, vous comparez l'activité de développement par rapport à l'activité d'un maçon. Le maçon est toujours obligé de tout produire, et en ça il refait des choses à l'identique. Pour le développeur, dès qu'il y a duplication, ce n'est pas bon (voir l'article sur la non duplication de code). L'idée même de l'informatique est d'automatiser. Le développeur qui répond à un besoin similaire va réutiliser ce qu'il a fait et se consacrer sur les différences. Alors, d'où vient la difficulté des estimations? Des différences, du fait que le projet à réaliser est forcément entièrement nouveau puisque ce qui ne l'est pas est réutilisé. Par conséquent les développeurs estiment le travail restant, et donc nouveau. Cette nouveauté est donc le point qui rend difficile l'estimation. Mais c'est aussi, le point qui permet aux "artistes/développeurs" d'arpenter des terres de codage encore vierges...

jeudi 2 mai 2013

Préparez vous à illuminer votre salon avec la Xbox 720

La prochaine console de salon de Microsoft, la Xbox 720 serait selon The Verge équipé d'un projecteur qui permet d'étendre votre écran sur votre salon.

Apparemment, le système se baserait sur la vue 3D de la Kinect afin de reconnaitre l'environnement et ainsi projeter en conséquence.
La vidéo de Microsoft est très impressionnante. L'immersion totale est pour bientôt...

Il y a de fortes probabilités qu'elle soit présentée le 21 mai 2013 ou lors du salon de prochain salon de l'E3 2013 prévu juin 2013.
Si la console est bien en vente pour la fin de l'année, je pense faire une belle lettre au Père Noël. Et vous?

150 millions d'euros à "gagner"

Fleur Pellerin, notre minisitre déléguée chargée des PME, de l'innovation, et l'économie numérique, à lancer un appel à projets pour les domaines suivants :
  • Technologies du logiciel embarqué et objets connectés- pour mai 2013,
  • Sécurité des systèmes d'information - pour mai 2013 , 
  • Technologies de calcul intensif et de simulation - pour juin 2013, 
  • Usages du cloud computing et du Big Data - pour la rentrée 2013.
Un joli coup de pouce pour les sociétés du secteur numérique.Si cela est votre cas, il ne faut pas tarder car les premières réponses sont pour le mois de mai 2013.
Pour plus d'information, vous pouvez consulter l'article du journal du net

dimanche 17 mars 2013

Impossibilité de mettre à jour le modèle objet sur Entity Framework - Visual Studio 2012

Sur Visual Studio 2012, si vous modifiez votre base de données et travaillez avec Entity Framework pour gérer votre mapping objet-relationnel, naturellement vous faites une mise à jour de l'edmx.
Il se peut que cette dernière ne s'effectue pas.

Par exemple si vous ajoutez une table voitures, normalement vous vous attendez à avoir une classe voiture correspondante. Cette dernière peut ne pas se construire malgré votre demande de mise à jour.

Dans ce cas vous avez sur votre poste une version qui comporte un bug. Pour contourner il faut faire click droit sur le fichier d'extension .tt et sélectionnez : "run custom tool" et enregistrer l'edmx. Ceci provoque la génération des fichiers objets. En fait les classes ne se génèrent pas automatiquement, il faut forcer le processus.
La page officiel expliquant le problème

Pour solutionner le problème, il suffit de télécharger la version suivante
Cette version corrige le bug et permet donc de travailler normalement.

jeudi 1 novembre 2012

Changement d'horaires mal géré

J'utilise tous les jours l'application Alarmes de mon Windows Phone 7 pour me réveiller à 6h55 (et pour sonner d'ailleurs toutes les 6h).
Or, lors du changement d'horaires, j'ai été très surpris car l'application n'a pas fonctionné.
Heureusement, je me suis réveillé tout seul juste un peu plus tard.

Fan de cet OS de Microsoft pour smartphone (interface claire, intuitive, facilement personnalisable, peu de bugs), j'ai été assez déçu, car je me souviens que l'iPhone a eu le même souci.

mardi 7 août 2012

Visual Studio 2012 RC - première impression.

Je viens juste d'installer Visual Studio 2012 RC qui est sortie le 31 mai dernier (avec donc un peu plus de 2 mois de retard...).

J'aurai pu vous parler des divers évolutions (ce que je ferais surement dans des prochains posts), mais je voulais juste vous donner ma première impression :
Personnellement, je suis un peu déçu sur le look graphique très terne.

Jugez par vous même :

 En haut Visual Studio 2012 RC, et la version précédente Visual Studio 2010.




Je vois bien l'envie de s'orienter vers Metro, mais je trouve finalement que l'interface y perd en lisibilité.
D'un autre côté, j'ai l'impression que plus de choses sont affichés à l'écran grâce à une police et des boutons moins gourmands en place.
Mais, le manque de couleurs détériore la lisibilité.

Je compte l'utiliser pendant quelque temps, je vous ferais d'autres retours sur l'outil, mais n'hésitez pas à donner votre avis.

samedi 4 août 2012

Non duplication de code - Design Patterns - Chaîne de responsabilité

Il arrive souvent que du code soit dupliqué.
Cette pratique est à bannir car à chaque évolution, le développeur est obligé de modifier l'ensemble des copies du code.
La bonne démarche consiste à mettre à disposition le code dupliqué à un seul endroit, et de l'appeler autant de fois que nécessaire.
Ceci arrive souvent avec l'implémentation de la chaîne de responsabilité
La chaîne de responsabilité (ou chain of responsability) est un design pattern.

Vous pouvez trouver une implémentation de ce dernier sur le site dofactory.com.

Ce dernier permet donc de consulter un ensemble d'objets pouvant répondre à une même requête, tout en construisant la chaine d'objets consultés dynamiquement.


 
Chaque objet consulté implémente donc la même interface que la classe Handler. Ces objets sont souvent sollicités de même façon
  • Il teste la requête pour savoir si elle le concerne.
    • Si oui, il exécute sont traitement.
    • Si non, il transmette au suivant. 
Pour illustrer, lorsqu'on vous demande quelque chose soit vous savez et vous traitez, soit vous ne savez pas alors vous transmettez la demande à votre chef. Ce dernier fera de même avec la demande, ainsi de suite jusqu'à trouver la personne compétente pouvant la traiter.
Malheureusement ce schéma (souvent présent), est majoritairement dupliqué dans chaque classe dérivant d'Handler.

Afin d'éviter le copier-coller, sachant que chaque informaticien devrait être payé à la ligne de code qu'il n'écrit pas, j'utilise une classe intermédiaire évitant cette duplication.

En reprenant l'exemple de chez dofactory cela donne  pour la classe intermédiaire :

Et par conséquent les handlers concrets donnent, par exemple pour ConcreteHandler1 :
pour les autres, il suffit de changer le ConcernTest

Évidemment dans l'exemple ici,  l'Action est identique, mais dans une utilisation réelle cette méthode serait spécifique.

Nous avons donc réussi notre objectif, à savoir éviter de dupliquer la méthode HandleRequest.