mercredi 7 mars 2012

Planning Poker



Après le Poker Texas Hold'em, le Poker fermé, le strip Poker, le Poker face, voici le Planning Poker !
Loin d'être une nouvelle version que vous seriez susceptible de voir dans le projet James Bond, le Planning Poker est une méthode de planification des tâches lors d'un développement logiciel.
Imaginons 5 développeurs réunis autour d'un projet et accompagné de leur Project Owner (cf Scrum), qu'ils sont couchés dans des Fatboys en sirotant un café et munis chacun d'une main de 13 cartes existants sous plusieurs versions:
0 - 0.5 - 1 - 2 - 3 - 5 - 8 - 13 - 21 - 34 - 89 - ?
0 - 0.5 - 1 - 2 - 3 - 5 - 8 - 13 - 20 - 40 - 100 - ?

Le Project Owner pose une "User Stories" (Un module à implémenter dans le programme) et le but sera d'estimer le temps nécessaire à sa réalisation. Chaque développeur va alors prendre la carte représentant le nombre de jour qu'il pense nécessaire à la confection du module et la poser face cachée sur la table. On retourne les cartes et découvre les estimations de chaque membre. On discute alors entre développeurs pour comprendre pourquoi l'un a mit plus, et un autre moins, de façon à partager les informations et ainsi avoir un partage de connaissances. On recommence jusqu'à obtenir une même estimation pour chaque membre. En cas de conflit de plus de 5minutes, on fini par choisir la durée la plus longue et on passe à l' "User Stories" suivante.
La durée peut varier entre un "Young Programmer" et un "Senior Programmer" de façon impressionnante, il est donc impensable de baser la durée de développement sur l'un ou l'autre au dépend du second.

On a donc ainsi la possibilité d'estimer la durée des modules et donc le nombre d'entre eux à réaliser durant un sprint. Au final, l'équipe possède un plan des fonctionnalités, de leur durée estimée et de leur importance de façon à organiser leur travail pour un mieux comme on peut le voir dans cet exemple:
Le dernier point à retenir est le facteur de vélocité. C'est un facteur qui va permettre d'adapter l'estimation à la réalité car 100 unités de temps ne se feront pas en 100 unités de temps mais plutôt en 50 ou 80 suivant le niveau. Et ce pour la raison que l'on se base sur des estimations et que donc on ne tombera jamais juste.

mardi 6 mars 2012

Microsoft Innovation Center

Amis du jour, bonjour. Voilà presque un mois que je roule ma bosse à mon stage et je me suis dis qu'il serai peut-être judicieux de faire un petit article au sujet de l'entreprise qui m'accueille, j'ai nommé: Microsoft. Plus exactement le Microsoft Innovation Center de Mons.
Cette ASBL créée à partir de fonds publics en privés s'est fixé comme but, de développer l'IT sous différentes formes en région wallonne et d'encourager la création de sociétés associées à ce même domaine. Elle a également un but très louable qui est d'encadrer des étudiants en dernière année issus des écoles d'informatique de la région et de les mettre en relation avec des entreprises leur proposant un stage. C'est ainsi qu'en cette belle année 2012, on se retrouve à 27 stagiaires au sein de l'entreprise pour développer des projets divers et variés.
Mais vu que des images valent tous les mots du monde, je vous propose de visionner cette vidéo, tournée il y a peu dans nos locaux:



Comme dis précédemment, munis de différents projets nous tentons de mener à bien nos idées. Deux de ces projets relatifs à l'équipement Kinect et au robot d'Aldebaran Nao concernent 4 étudiants (dont je fais partie) et dont je vous propose de retrouver un article écrit par nos collègues de Technocité suivant ce lien.

Le Microsoft Innovation Center propose également un grand nombre de formations et de certification auxquelles vous pouvez vous inscrire ici : http://mic.fikket.be/

Retrouvez toutes nos vidéos sur YouTube : http://www.youtube.com/user/MICBELGIQUE

Le blog du MIC : http://blog.mic-belgique.be/
Le site officiel : http://www.mic-belgique.be/

lundi 5 mars 2012

Gestion des logs avec NLog

Aujourd'hui c'est lundi, c'est gratuit, dehors c'est le smog alors attaquons les logs.
Mais un log c'est quoi?
Et bien ça peut être bien des choses mais de façon simplifiée, c'est une façon de garder une trace de certains évènements qui se sont produits durant l'exécution du programme. On peut gérer ces logs de plusieurs façons mais les plus conventionnelles sont l'affichage dans un fichier texte ou dans la console.
On va dés lors, à certains moments dans notre code, placer des enregistrements du contenu de variables de façon à les analyser à posteriori.

On enregistre 3 types d'informations:
  • Le débugging: Ce qui va nous permettre en analysant les logs de voir ce qui génère les bugs et que l'on a pas su voir via le débogueur classique de Visual Studio par exemple.
  • Le tracing: On va consigner les évènements qui se sont produits dans un but de statistiques ou analyse de fonctionnement. On trouvera ainsi la trace d'une connexion à une base de donnée, le chargement d'un module, l'adresse d'une requête, ...
  • La gestion des erreurs: Une fois le logiciel fonctionnel, on va pouvoir consigner les évènements anormaux qui ont nuis au fonctionnement normal du programme. Un plantage, une requête échouée, un fichier inexistant, une écriture refusée, un serveur indisponible, ...

Bien vite indispensable, les logs doivent se faire au fur et à mesure de la conception du produit. Ainsi lors d'un plantage, une consultation des logs permet de voir la dernière action effectuée correctement et peut-être même celle qui a échoué, selon la façon que l'on a implémenté nos logs.
De façon à simplifier le travail, des outils sont mis à notre disposition, l'un d'eux est "NLog" que vous allez pouvoir télécharger via ce lien: ici
Un autre système de log se nomme "Log4Net" et est développé par Apache: ici
Des tutoriels sont disponibles sur leur site respectif et sont suffisant pour une structure simple.

Il est également intéressant de lire cet article sur la façon de reporter un bug de façon efficace en ce lieu
Et pour ceux qui pensent que le débogueur de Visual Studio ne sert qu'à mettre des points d'arrêts, voici deux liens possédant divers astuces pour vous faire gagner du temps: Ici et là.


System.Windows.MessageBox.Show("Enjoy !");