Affichage des articles dont le libellé est Agiltié. Afficher tous les articles
Affichage des articles dont le libellé est Agiltié. Afficher tous les articles

Le vilain petit canard de la dream team

http://upload.wikimedia.org/wikipedia/commons/3/3b/Het_leelijke_jonge_eendje.jpg Vous avez tous été confrontés à des situations de démotivation ?!
L'un des collaborateurs joue le rôle de vilain petit canard ?!
Alors que faire quand votre collaborateur...
    • A du retard non habituels et répétitifs.
    • Attitude « désintéressée » en réunion (scrum, rétrospective, planification d'une itération...)
    • Souffre quand l'un de ces travaux est repris par une autre personne
    • A du mal à prendre en charge les tâches considérées comme non valorisantes.
    • Discute sans cesse les résultats de tests avec le Client
      Bref... il ne joue pas avec l'équipe.

      6 facteurs améliorant la rentabilité des projets informatique


      Faire disparaître les fonctionnalités inutiles

      Grâce à une meilleure utilisation des efforts de développement, ce qui engendrera une économie substantielle (au moins 20%) dans les coûts des projets.
      Souvenez-vous de la loi de Pareto !

       

      Supprimer la documentation à outrance & réunions inutiles

      Finissant dans un placard électronique appelé référentiel, les réunions interminables, finalisées par le sacro-saint compte rendu de réunion qui ne donnera lieu à aucune décision ou bien les reporting fallacieux destinés à se donner l’illusion que tout est under-control.

      Qu'est-ce que le développement logiciel Agile ?


      Voici une petite explication:

      Il s'agit d'une infrastructure de développement de logiciels qui encourage fortement l'utilisation d'itérations durant toute la durée du projet. Bien qu'il existe plus d'une méthode ou méthodologie, toutes utilisent sans exception des itérations (ou sprints) d'une durée de vie habituellement située entre une et quatre semaines afin de déterminer, concevoir et lancer un ensemble de fonctionnalités. Les équipes Agile se composent d'intervenants répartis au sein d'entreprises de consommation ou de livraison et privilégient la communication face à face plutôt que l'utilisation de documents traditionnels.

      Les méthodologies Agile sont souvent opposées à la méthodologie en cascade. Cette dernière est un moyen largement répandu et extrêmement prévisible de concevoir un logiciel. Son manque de flexibilité et sa faible tolérance aux modifications durant la conception lui sont toutefois reprochés. Reposant sur des itérations fréquentes, Agile s'avère plus facile à améliorer et à équiper à tout moment de nouvelles fonctionnalités.

      Il n'existe pas une seule méthodologie Agile mais bien plusieurs, notamment Scrum, Extreme Programming, DSDM, FDD, Crystal et Lean. Elles ont cependant plusieurs points communs : leur large recours aux professionnels qualifiés, aux fortes personnalités, à la collaboration, et leur besoin d'outils à la fois simples et puissants. Elles se différencient principalement au niveau de la gestion de projet. 
      Largement répandue, la méthode Scrum (http://fr.wikipedia.org/wiki/Scrum) est extrêmement populaire, ce qui rend les compétences de ScrumMaster extrêmement recherchées.

      Il n'est pas inutile de préciser qu'Agile n'est pas une méthodologie « laxiste » dépourvue de règles d'utilisation. En fait, les équipes Agile suivent des processus extrêmement rigoureux demandant une grande discipline afin d'atteindre leurs objectifs, et font appel à bon nombre d'outils et de compétences de gestion de projet. Cependant, le fait qu'Agile se fonde davantage sur une collaboration poussée entre les personnes plutôt que sur une gestion précise des documents et des éléments s'avère souvent déroutante.

      Cycle de vie d'un projet Agile (Scrum)

      A la suite du précédent sujet sur le cycle en V, voici un schéma du cycle de vie Scrum (cliquer pour agrandir):

      Agile / Scrum Project Cycle

      Cycle en V, MOA/MOE ont perdu !

      Ils ont perdu ?? Et oui, durant des années ils ont perdu + de 70% des logiciels qui étaient produits dans le monde. Comment ça se fait ?

      Commençons par le cycle en V

      Déjà, V n'est qu'une construction théorique qui n'est pas applicable en tant que cycle de vie.

      Les mécanismes du cycle en V sont fondés sur le contrôle et le suivi de projet, pas du produit.

      les méthodes en cascade avec le cycle en V ou le cycle en W sont des méthodes dites prédictives dans lesquelles nous avons une hypothèse de base :
      • Nous maîtrisons ce que nous voulons et nous nous engageons à le réaliser.
      Un peu radical, non ?

      Un cycle de vie est un ensemble ordonné de phases décrivant la vie d’un projet, la phase n ne pouvant commencer que si la phase n-1 est terminée. Dans la représentation graphique du V, les boites s'appellent Spécification, Conception, Codage, Test et Validation pour prendre la variante la plus simple. La signification du nom de ces différentes boites est à peu prés claire : Spécification on décrit le quoi, Conception le comment etc... Il s'agit des disciplines classiques du développement de logiciel.

      http://blog.netapsys.fr/public/images/articles/agilite/Cycle_en_V_Custom_-35b05.png

      Considérer que les boites du V correspondent aussi à des phases d'un cycle de vie revient à dire qu'elles se déroulent en séquence stricte : en premier toute la Spécification puis toute la Conception puis tout le Codage puis tout le Test... Évidemment aucun logiciel n'a jamais été développé de cette façon strictement séquentielle. La preuve la plus évidente concerne les travaux de Test. Quand on trouve un bug dans la "phase" de test, le minimum est de refaire des travaux de codage. Dans quelle phase ? Il y a deux possibilités qui débouchent sur une impasse :
      1. revenir en arrière dans une phase précédente, ce serait remonter dans le temps !
      2. considérer que pendant la "phase" de test on fait du codage, de la conception, de la spécification en plus du test alors que c'est le nom d'autres "phases" du V, ce serait utiliser le même terme avec 2 significations différente
      En cycle en V, les exigences et les scénarios de tests sont gérés par deux processus bien séparés.
      • Les exigences pour but de satisfaire le niveau supérieur.
      • Les tests sont décrits pour contrôler ce niveau d’exigence. Il n’y a pas de lien, ni de vérification entre les différents niveaux de tests
      Les exigences, majoritairement écrites sous forme documentaire, voir avec des outils de type Doors, ne peuvent que retranscrire le comportement statique du besoin. La spécification s’apparente la plus part du temps à un catalogue de règles de gestion, qui pense-t-on, mises bout à bout, vont produire un logiciel.
      A l’inverse, les scénarios de tests décrivent l’aspect dynamique et cinématique du besoin : L’approche opérationnelle. Ce que l’utilisateur réel va vraiment pouvoir faire.
      Encore une fois, les tests étant fournis après comme contrôle du travail fini, les équipes de développement n’ont donc que l’aspect statique et ne connaissent pas le mode opératoire du logiciel qu’ils sont en train de produire. Le développement est donc piloté par la seule information à caractère statique de se que sera le logiciel et sera sanctionné par un contrôle à postériori.

      C’est le pilotage par le contrôle. Incohérent par nature !

      Au tour de la hiérarchie MOA / MOE

      En France, contrairement à d'autres pays, il y a une tradition qui est de diviser le rôle de Chef de Projet en deux: celui de Chef de Projet MOA (Maîtrise d'Ouvrage) et celui de Chef de Projet MOE (Maîtrise d'Oeuvre) du moins dans le contexte des Grands Comptes.
      La MOA étant le client et la MOE étant le fournisseur, on retrouve les comportements typiques suivants: la MOA aura à tendance à en demander toujours plus, la MOE à en proposer toujours moins de peur d'être débordée. Ainsi, des conflits entre la MOA et la MOE surviennent.
      Un DSI, dans un article de 01 Informatique, proposait comme solution de supprimer cette division en fusionnant les deux services car le modèle MOA/MOE représentait clairement un frein aujourd'hui dans le rapprochement voulu entre DSI et métiers. Un rapprochement de plus en plus forcé avec l'apparition des solutions SaaS.

      Agilité: méthode dite empirique

      Un partie de la solution, utiliser des méthodes empiriques, où la règle est:
      • Nous faisons l'hypothèse de base que ne nous ne maîtrisons pas ce que nous allons faire et nous allons essayer d'avancer avec l'incertitude. Pour réaliser cela, il y a 3 piliers fondamentaux (Les Valeurs de l'agilité : source Wikipedia( http://fr.wikipedia.org/wiki/Méthode_agile ):
      1. la transparence (avoir les informations).
      2. inspection (inspecter les indicateurs).
      3. Adaptation (améliorer, réorienter).
      Pour les processus Agiles, un cycle de vie est composé d'itérations incrémentales (ou sprints) successives. Voici un schéma pour bien comprendre ?
      • itérative
      méthode iterative ou incrémentale
      • incrémentale
      méthode iterative ou incrémentale
      • approche mixte


      La aussi, ce que l’on reproche aux méthodes Agiles est leur manque de visibilité à long terme. Et c’est heureusement là qu’elles pourraient bien au contraire vous surprendre.

      La grande différence réside dans la construction du backlog. En agile, nous utilisons les user stories : Une définition succincte mais précise des possibilités offertes à l’utilisateur, leur moyen de vérification, ainsi que les critères d’acceptance. Dans ce cas, les scénarios de tests sont fournis comme (seuls ou en complément) des spécifications en entrée de sprint. Des exigences plus fines de type règles de gestion peuvent être définies au cours de la réunion de planification de sprint.
      Le développeur est ainsi « formé » à l’utilisation de ce qu’il va produire. Il connaît les objectifs à atteindre. La chaîne de construction se répète tout au long du process jusqu’à l’écriture du code de test avant le code lui-même (TDD), qui participe au maintient de la qualité du logiciel (Intégration continue, tests automatisés).

      L’approche est donc radicalement différente. Agile propose un pilotage par les objectifs.

      En bref

      Un logiciel, c'est comme produire une voiture, à la différence que le client souhaite constamment customiser son Produit et non son Projet. Cela implique donc des procédés d'ingénieries industriels (PIC, TDD, BDD) pour une réactivité sans cesse accru.