L'amélioration personnelle? Si, ca existe !!

Et oui, on cesse ces derniers temps de parler de Scrum, SP, Lean, CMMi, ... mais il existe aussi des méthodologies sur l'amélioration individuelle. La première que je vais vous parler est le GTD.

GTD : Getting Things Done

Il s'agit du titre d'un livre de David Allen publié en 2001, décrivant une méthode de gestion des priorités quotidiennes, et est depuis 2005 une marque déposée. Pour faire une corrélation avec les méthodes agiles, le GTD dans un premier temps demande une réflexions sur les tâches à faire et leur niveau de priorité et d'importance. Un peu comme l'on fait avec une matrice ABC, ou avec les backlogs.
Puis on effectue les tâches tout en s'organisant au mieux. Là aussi des conseils sont définis. Voilà plus précisément le processus dans la vie de tous les jours :
  • Recensement : noter immédiatement tout sujet qui retient l'attention - événement, objet, document, idée - et qui pourrait potentiellement requérir une action ultérieure.
  • Traitement : formuler pour tout sujet envisagé le résultat concret à produire. Dès qu'il y a plusieurs choses à faire pour parvenir à ce résultat concret, formuler la première action concrète par laquelle l'enclencher (notée sur la liste du contexte opératoire correspondant), les actions suivantes s'inscrivant dans un projet.
  • Organisation : mise en place sans attendre des rappels pour les actions qui ne peuvent être exécutées immédiatement : soit dans un agenda (temps bloqué), soit dans une liste au contexte appropriée ("À la maison", "Téléphone", "Achats"...), soit dans une liste "en attente" si une action est confiée à un tiers, soit placés dans un échéancier (notamment quand il y a des documents ou justificatifs), classement des données de référence.
  • Revue : réexaminer très fréquemment - et passer au peigne fin au moins une fois par semaine dans la « revue hebdomadaire » - toutes les tâches et les projets en cours et nouveaux.
  • Action : ... de telle sorte que l'on puisse toujours se fier à ses listes d'actions dans le choix de ce à quoi il faut donner la priorité à un moment donné.
Les 5S

Vous connaissez sans doute cette méthode. Elle fut créée par Takashi Osada. Et oui, elle nous vient du Japon, précisément, de la démarche Kaizen (dont je parlerai souvent sur mon blog).

Dans cette méthode, il est question d'éliminer l'inutilité et le gaspillage. Pour ce faire, il faut :
- Se séparer de l'inutilité
- Mettre de l'ordre dans ses affaires
- Nettoyer
- Rendre évident
- S'améliorer

Bien sûr avec des mots Japonnais, cela forme cinq S ;-)

La remise en question

Cela est le plus dur à mon avis. En ce qui me concerne, je lis énormément de blog professionnel. Le plus souvent, ces derniers discutent de leur façon de faire. Et la le dé-clique !!! ;-) Un mini Benchmark.

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.