Skip to content

Blogs de Développeurs: Aggrégateur de Blogs d'Informatique sur .NET, Java, PHP, Ruby, Agile, Gestion de Projet

Forum Logiciel

Forum Logiciel : diffusion de connaissance et d’informations sur toutes les activitĂ©s liĂ©es au dĂ©veloppement d’applications informatiques en entreprise.

Blog Individuel

LCC 173 - Fais tourner la Hash Table

Audrey, Guillaume et Emmanuel vous parlent de serverless, de sĂ©curitĂ©, de calculs de disponibilitĂ©, de hash table et d’autres sujets tip top.

Enregistré le 13 juillet 2017

TĂ©lĂ©chargement de l’épisode LesCastCodeurs-Episode–173.mp3

Comment faire un crowdcasting

News Langages

Java 9 et Jigsaw passent le JCP
No swan song for Java: 10 influencers weigh in on its reputation, rivals and adoption

Matériel

le simulateur d’ordinateur quantique d’Atos
Intel Skylake/Kabylake et le bug dans l’hyperthreading

Middleware

Les framework Java populaires selon Redmonk
Spring Cloud Function
Les nouveautés de JPA 2.2
Le guide de developpement asynchrone avec vert.x
AWS Lambda et Java
Elastic Stack 5.5.0
Des tests d’intĂ©gration avec Elastic

Web

Release de JHipster 4.6.1
Node.js security release

Infrastructure

La bataille sur NTP
Raters: la face cachĂ©e de l’IA ?
Les choses Ă  savoir quand on utilise Ansible
OVH et les sites webs critiques sur un VPS
Comment fonctionne Kerberos
Distroless Docker image avec rien dedans

Outillage

Blog sur JUnit 5
ˋgit filter-branch` expliquĂ© Ă  ta grand-mĂšre

Architecture

Papier sur la disponibilité et les 9 par Google
L’intĂ©rĂȘt des data stream dans les applications non monolithe
Serverless vs Micro-Service avec infrastructure “maison”
Gestion des logs chez Algolia

Sécurité

Two-factor via your mobile phone – should you stop using it?

Loi et société et organisation

La dĂ©mission de Travis Kalanick, le CEO d’Uber
Mercredi 12 juillet - JournĂ©e d’action pour la neutralitĂ© du net aux USA

Rubrique débutants

Qu’est-ce qu’une Hash Table ?

Conférences

Jug Summer Camp le 15 Septembre Ă  La Rochelle
DevFest Toulouse le 28 septembre - Inscriptions et CfP ouvert
DevFest Nantes les 19 & 20 Octobre - Inscriptions
Scala.io le 2 et 3 novembre à Lyon - Inscriptions et CfP ouvert (jusqu’au 8 sept)
Devoxx Belgique du 6 au 10 novembre - Inscriptions
Codeurs en Seine Ă  Rouen le 23 novembre - CfP ouvert (jusqu’au 31 aoĂ»t)
7Ăšme Ă©dition de SoftShake - GenĂšve (seulement 3h de Paris en train !) 26–27 octobre 2017 le CfP est ouvert

Nous contacter

Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/
Flattr-ez nous (dons) sur https://lescastcodeurs.com/
En savoir plus sur le sponsoring?

Catégories: Blog Individuel

Agile France 2017

Barre Verte ! - lun, 07/10/2017 - 23:00
nomadopen.eu

La non-confĂ©rence Nomad Open devrait traverser en train des zones montagneusesMa plus grande dĂ©couverte lors de l’open space du premier jour est Nomad Open, une non-confĂ©rence sur le travail nomade : le vivre et l’expĂ©rimenter en continuant son travail depuis un train qui traverse la France, l’Espagne et l’Italie.

Pour ceux qui seraient intĂ©ressĂ©s, les dates de cette premiĂšre Ă©dition sont en cours de discussion, n’hĂ©sitez pas Ă  envoyer un mail pour vous manifester.

J’ai moi-mĂȘme vĂ©cu rĂ©cemment une situation extra-professionnelle de nomadisme qui avait provoquĂ© beaucoup d’incomprĂ©hensions et de malentendus :

  • Eux: pourquoi tu nous as pas rĂ©pondu sur facebook messenger ?

  • Moi: mon opĂ©rateur m’a coupĂ© l’accĂšs quand j’ai passĂ© la frontiĂšre italienne, malgrĂ© l’option onĂ©reuse que j’avais souscrite dans le train pour maintenir la continuitĂ© du service.

  • Eux: pourtant tu rĂ©pondais Ă  certains moments.

  • Moi: c’est quand j’étais Ă  l’hĂŽtel, c’est le seul endroit dans Milan oĂč j’ai rĂ©ussis Ă  avoir du wifi.

Ce dĂ©faut de connectivitĂ© a fait s’envenimer la situation. Une situation qui ne devrait plus se reproduire puisque ce mĂȘme 15 juin 2017 entrait en vigueur une directive qui a vu globalisĂ© par l’Europe l’accĂšs aux donnĂ©es/SMS/appels aux tarifs locaux.

beta.gouv.fr

Comment mettre en oeuvre l’auto-organisation dans une bulle hĂ©bergĂ©e au sein d’une bureaucratie ? C’est le dĂ©fi que tentent de relever les membres de beta.gouv.fr, l’incubateur des startups d’état. Deux Ă©lĂ©ments qui m’ont marquĂ©s :

  • Trouver comment obtenir un badge est tellement difficile que la page wiki de l’incubateur a Ă©tĂ© utilisĂ©e par un nouvel arrivant d’une autre entitĂ© qui Ă©tait tombĂ© dessus par hasard. Une fois Ă©prouvĂ©e, la procĂ©dure a Ă©tĂ© automatisĂ©e dans un robot sur slack (il s’agit juste d’un mail a envoyer Ă  la bonne personne avec les bonnes informations)

  • La moitiĂ© des Ă©changes sur slack restent privĂ©s. L’orateur, Matti Schneider, indiquait que les membres s’auto-censurent en pensant que la conversation n’intĂ©ressera pas d’autres personnes. Il s’agit d’un filtrage Ă  priori alors que le filtrage devrait se faire Ă  posteriori pour Ă©viter de recrĂ©er une hiĂ©rarchie liĂ©e Ă  la dĂ©tention de certaines informations.

Usage des canaux privés et public chez beta.gouv.fr

Dans mon travail, l’utilisation de slack est massive et l’information Ă©changĂ©e prĂ©cieuse. PrĂ©cieuse dans le sens oĂč quand je rencontre un problĂšme dĂ©jĂ  Ă©voquĂ©, je me souviens que la rĂ©ponse y a Ă©tĂ© donnĂ©e quelque part. Tout le problĂšme est sur quel channel. J’ai rarement en tĂȘte des mots clefs suffisament discriminants pour une recherche globale (on parle d’une vingtaine d’équipes qui Ă©changent sur slack depuis plusieurs annĂ©es). A l’inverse si l’échange s’est dĂ©roulĂ© en privĂ©, je me souviens trĂšs bien avec qui et je retrouve trĂšs vite l’information. Je sais aussi que ces Ă©changes privĂ©s sont perdus lorsque la personne quitte l’entreprise. Reste Ă  trouver un Ă©quilibre. Il m’arrive parfois de recopier une rĂ©ponse donnĂ©e en privĂ© sur un channel publique ou dans Jira.

Une des choses que j’apprĂ©cie Ă  Agile France se sont les conversations en marge des confĂ©rences : assit sur un banc pendant que Laurent Bossavit finalise la newsletter de beta.gouv.fr, je tente de m’y abonner sur mon mobile. L’expĂ©rience utilisateur s’y avĂšre difficile :

  • j’ai toutes les peines du monde Ă  trouver le formulaire : il n’est rĂ©vĂ©lĂ© que quand je glisse mon doigt jusqu’à l’extrĂšme limite de la page mais une animation le masque jusqu’au dernier moment. Laurent aurait aimĂ© filmer ma tĂȘte.

Je tente de trouver le formulaire pour m'abonner à la newletter Le formulaire pour s'abonner à la newletter est révélé en faisant disparaßtre le reste de la page

  • quand je clique pour indiquer mon adresse Ă©lectronique, le clavier masque le formulaire et je dois taper en aveugle.

Cela Ă©tant dit, le mobile-first serait difficilement justifiable puisque les accĂšs par mobile ne reprĂ©sentent qu’un quart de leur traffic (j’ai appris Ă  cette occasion que ces donnĂ©es Ă©taient publiques) :

Part des terminaux mobiles dans le traffic 2017 de beta.gouv.fr

La pourriture du code

Arnaud Lemaire propose d’appeler pourriture du code la dette technique subie. J’aime cette idĂ©e car le terme de dette technique (qui reste pertinent quand elle est choisie) donne Ă  penser que des stratĂ©gies de couverture sont possibles alors qu’on est plus proche d’une entropie. Les astres Ă©taient trĂšs alignĂ©s en ce 15 Juin 2017 puisque le mĂȘme jour Ă©tait soutenue en Finlande une thĂšse sur la dette technique.

Une confĂ©rence qui s’installe dans la durĂ©e

En conclusion je mesure tout le chemin parcouru par cette confĂ©rence depuis sa toute premiĂšre Ă©dition en 2006 oĂč elle s’appelait XP Day France (je me souviens encore avec Ă©motion avoir Ă©tĂ© en reconnaissance avec Patrice Petit pour Ă©valuer l’Espace Hamelin dans lequel elle s’était tenue). La confĂ©rence est maintenant tellement connue qu’elle se tient Ă  guichet fermĂ© sans que les organisateurs aient besoin de communiquer. Bien qu’étant devenue non marchande elle est aussi bĂ©nĂ©ficiaire tout en gardant un tarif relativement bas.

Catégories: Blog Individuel

Qu’est ce qu’un (bon) ScrumMaster?

Qualitystreet - Jean Claude GROSJEAN - jeu, 07/06/2017 - 02:14

Vous ĂȘtes de plus en plus nombreux Ă  vous intĂ©resser Ă  l’agilitĂ©, Ă  travailler dans un cadre de Scrum voire mĂȘme Ă  endosser le costume de ScrumMaster. Voici donc quelques Ă©lĂ©ments qui vont permettront d’y voir plus clair sur ce nouveau rĂŽle. ScrumMaster c’est un des 3 rĂŽles proposĂ©s dans Scrum (avec l’Equipe et le…

The post Qu’est ce qu’un (bon) ScrumMaster? appeared first on QualityStreet - Blog Agile depuis 2007.

Catégories: Blog Individuel

LCC 172 - Interview sur Docker avec Jean-Laurent Morlhon et David Gageot

Antonio, Vincent et Guillaume sont allĂ© dans les bureaux de Docker France pour interviewer Jean-Laurent et David sur l’univers Docker et leur aventure Docker France.

Enregistré le 17 mai 2017

TĂ©lĂ©chargement de l’épisode LesCastCodeurs-Episode–172.mp3

Interview Ta vie ton Ɠuvre

Jean-Laurent Morlhon
David Gageot
Docker Inc.

Docker

Docker Machine
Docker for Mac
Docker for Windows

Open Source vs edition entreprise

Moby
Docker EE
Docker Trusted Registry

Infinit racheté par Docker

Usage Docker

Multi stage build
containerd
LinuxKit
InfraKit

Nous contacter

Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/
Flattr-ez nous (dons) sur https://lescastcodeurs.com/
En savoir plus sur le sponsoring? sponsors@lescastcodeurs.com

 

Catégories: Blog Individuel

LCC 171 - Et sinon, ton micro est branché ?

Arnaud, Audrey, Guillaume et Vincent discutent Jigsaw, NPM, Codenvy, Google I/O, clavier, JMeter, JIT et d’autres choses. Vincent Ă©tait lĂ  on vous jure, il a juste oubliĂ© d’allumer son micro.

Enregistré le 9 juin 2017

TĂ©lĂ©chargement de l’épisode LesCastCodeurs-Episode–171.mp3

Comment faire un crowdcasting

News Langages et JVM

Java 9 et Jigsaw, Mark Reinhold tient toujours la barre du navire
 le titanic arrivera-t’il à quai ?

Plateformes

NPM 5.0

Kubernetes

Oracle rejoins la dance Kubernetes

Cloud

Codenvy racheté par Red Hat
AWS embauche James Gosling
(XWiki news: Daniel Glazman rejoint XWiki SAS)

Google I/O

All 101 announcements from Google I/O ‘17
Google Cloud TPUs
Tensor Flow Research Cloud
AutoML
Google Lens
Android O
Android Instant Apps
Google Assistant SDK
Polymer 2.0
Lighthouse
Workbox
What’s new from Firebase at Google I/O 2017
Firebase SDKs are going open source
Retour de Jean-François Garreau

Outillage

GitHub lance sa marketplace + une nouvelle API GraphQL
Certbot Un “bot” pour automatiquement passer en HTTPS vos sites avec Let’s encrypt
Java Stream Debugger Plugin Un plugin pour debugger vos streams dans Intellij Idea.

Autre

L’AFNOR ouvre le projet de norme du clavier français aux commentaires
Quoi d’neuf Docker ? revient !!! Enfin peut-ĂȘtre 


Loi et société et organisation

Bilan mitigĂ© un an aprĂšs l’adoption du rĂšglement de l’internet ouvert
Coder, ce n’est ni facile, ni marrant

Outil de l’épisode Apache JMeter par Vincent Daburon (crowdcasting)

Les nouveautés de JMeter

JMeter Plugins

Plugins de Vincent DABURON

Nombreux liens atour de JMeter

Awesome JMeter

Rubrique débutant

Just-in-time compilation

Conférences

Voxxed Days Luxembourg le 22 Juin - Il reste quelques places, dĂ©pĂȘchez vous
Jenkins Community Day à Paris le 11 Juillet - Inscriptions ouvertes (avec discount sur la liste du Jenkins Area Meetup Paris - ne le répétez pas)
Jug Summer Camp le 15 Septembre à La Rochelle - CfP ouvert (jusqu’au 23 juin)
DevFest Toulouse le 28 septembre - Inscriptions et CfP ouvert
DevFest Nantes les 19 & 20 Octobre - Inscriptions et CfP ouvert (jusqu’au 30 juin)
Scala.io le 2 et 3 novembre à Lyon - Inscriptions et CfP ouvert (jusqu’au 8 sept)
Devoxx Belgique du 6 au 10 novembre - Inscriptions et CfP ouvert
Codeurs en Seine Ă  Rouen le 23 novembre - CfP ouvert (jusqu’au 31 aoĂ»t)

Nous contacter

Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/
Flattr-ez nous (dons) sur https://lescastcodeurs.com/
En savoir plus sur le sponsoring?

Catégories: Blog Individuel

Comment cadrer un projet Agile? Roadmap et Backlog de produit

Qualitystreet - Jean Claude GROSJEAN - mer, 06/14/2017 - 10:19

… un des volets  « Produit »  de notre cadrage agile. Cet axe majeur de l’activitĂ© Produit prend la forme d’un large Backlog Refinement Initial, qui peut s’étendre sur une ou deux journĂ©es.. Il poursuit admirablement notre dynamique Agile et cette collaboration  IT / Business enclenchĂ©e prĂ©cĂ©demment au travers des Enjeux, de la Vision et des…

The post Comment cadrer un projet Agile? Roadmap et Backlog de produit appeared first on QualityStreet - Blog Agile depuis 2007.

Catégories: Blog Individuel

Des Saisons pour rythmer votre Transformation Agile

Qualitystreet - Jean Claude GROSJEAN - ven, 06/09/2017 - 09:29

ou Ce que j’ai appris #2: SaisonnalitĂ© Second volet de notre sĂ©rie d’articles consacrĂ©s aux transformations agiles d’organisation. Volet 1: Des transformations Agiles enfin… agiles Le point de dĂ©part reste inchangĂ© « Et si l’avenir des projets de changement dans les entreprises se jouait dans l’agilitĂ©? » La transformation vue comme un projet Agile La transformation Agile…

The post Des Saisons pour rythmer votre Transformation Agile appeared first on QualityStreet - Blog Agile depuis 2007.

Catégories: Blog Individuel

LCC 170 - Interview sur HTTP 2 et avant et en dessous avec Dridi Boukelmoune (partie 2)

Dans cette Ă©pisode on discute d’HTTP/2 avec Dridi Boukelmoune. Pour bien tout comprendre, on discute des couches en dessous et associĂ©es: TLS, UDP, TCP, QUIC. Et on parle d’HTTP/0.9 et aprĂšs pour comprendre pourquoi on est Ă  HTTP/2. Cette seconde partie aborde HTTPS, HTTP/2 et diverse autres sujets.

Enregistré le 17 mars 2017

TĂ©lĂ©chargement de l’épisode LesCastCodeurs-Episode–170.mp3

Interview Ta vie ton Ɠuvre

GitHub
@dboukelmoune
Varnish Cache
Content Delivery Network

HTTPS

HTTP sur TLS
HSTS

DNSSec

HPKP

ALPN

HTTP/2

HTTP/2

Long polling
SSE
WebSocket
WebSocket over HTTP/2: la proposition qui n’a pas aboutit

HPACK
CASHPACK

Divers

AJP

REST:

JSON Hypertext Application Language (HAL)

gRPC

Nous contacter

Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/
Flattr-ez nous (dons) sur https://lescastcodeurs.com/
En savoir plus sur le sponsoring? sponsors@lescastcodeurs.com

 

Catégories: Blog Individuel

JS et Programmation Fonctionnelle - Part 1

Taverne d'Arma - Programmation - mar, 09/13/2016 - 11:20

Je vais me lancer sur une série d'articles concernant la programmation fonctionnelle, appliquer au monde JS. L'objectif pour moi est de préparer, à terme, une présentation sur le sujet. Aujourd'hui, je vais donc commencer par les bases : c'est quoi au juste la programmation fonctionnelle.

Du rĂŽle de la fonction

Fonctionnelle comme fonction. Mais la fonction dont on parle ici correspond-elle au mots-clés 'function' de notre langage ? Presque, mais pas tout à fait. En fonctionnel, une fonction est un élément prévisible qui prend des paramÚtres entrants et qui renvoies une nouvelle valeur. Cela implique que :

  • Les paramĂštres entrants ne sont pas modifiĂ©s
  • Le retour de la fonction est un nouvel objet ou une nouvelle valeur
  • Tout appel avec des paramĂštres identiques renvoi le mĂȘme rĂ©sultat

Les avantages de ce type de fonction sont multiples :

  • Meilleure testabilitĂ© : elles ne dĂ©pendent pas d'un Ă©tat.
  • Meilleure reproductibilitĂ© : si l'on trouve un bug, il suffit de rappeler la fonction avec les mĂȘmes paramĂštres pour obtenir les mĂȘmes rĂ©sultats.
  • Meilleurs "scalabilitĂ©" : on ne mute pas les objets, il n'y aura donc pas de problĂšme de concurrences sur des threads diffĂ©rents.
De l'immutabilité

Je viens de glisser le point dans le dernier avantage, mais l'un des grands principes de la programmation fonctionnelle est de tirer Ă  maximum parti d'objet immutable : c'est-Ă -dire un objet qui ne peut pas ĂȘtre modifiĂ©. La consĂ©quence, c'est qu'Ă  chaque fois que l'on veut modifier un objet, nous allons crĂ©er une nouvelle instance complĂštement indĂ©pendant de l'objet.

Encore une fois les avantages sont multiples :

  • La scalabilitĂ©, comme abordĂ© plus haut.
  • La limitation des effets de bord : vu que l'on ne modifie pas un objet, l'on ne risque pas de modifier par inadvertance un objet qui aurait Ă©tĂ© transmis Ă  d'autres parties de l'application.

Bien entendu, la plupart des applications ne peuvent pas ĂȘtre 100% immutable : l'idĂ©e est d'isoler au maximum les endroits oĂč un Ă©tat est mĂ©morisĂ© et de ne faire ces mutations que de maniĂšres conscientes et complĂštement volontaire.

De la programmation déclarative

La programmation impérative met en avant le "comment" : ajoute 1 au compteur, passe à l'élément suivant, modifie tel caractÚre, ... L'objectif de la programmation déclarative est de s'attacher au "quoi". Pour s'approcher au maximum de ce style, la programmation fonctionnelle, mais en avant non pas les données, mais les traitements : le but est de décrire des chaßnes de traitement qui vont s'appliquer aux données.

Prenons l'exemple trÚs simple d'une somme. En impératif :

function sum(vals) {
  var total = 0;
  for(var i = 0; i < vals.length; i++) {
    total = total + vals[i];
  }
  return sum;
}

Et en fonctionnelle :

function sum(vals) {
  return vals.reduce(add);

  function add(e1, e2) {
    return e1 + e2;
  }
}

Le code est équivalent, mais dans le second cas, il décrit l'intention : réduire la liste en additionnant ses éléments.

Pour résumé

La programmation fonctionnelle a pour objectif :

  • d'amĂ©liorer la lisibilitĂ© du code (style impĂ©ratif).
  • de faire du code plus facile Ă  tester et Ă  debugger (pas d'effet de bord).
  • d'ĂȘtre plus rĂ©sistant aux concurrences.

Par contre, l'immutabilité est une contrainte qui demande une certaine discipline à l'usage.

Fonctionnelle versus POO

Souvent, ces deux paradigmes de programmations sont mis en oppositions. Faut-il faire de la POO, ou faut-il faire du fonctionnelle ? Aujourd'hui, je pense sincĂšrement qu'il faut faire les deux :

  • La POO permet de bien structurer son application et d'y faciliter la navigation
  • Le fonctionnelle permet de rendre son code plus lisible

Utiliser les deux, c'est avoir accĂšs aux forces de chacun. Pourquoi se priver ?

Catégories: Blog Individuel

Specification by example et documentation vivante

Specification by example & documentation vivanteEn 2015,  avec Brice nous avons prĂ©sentĂ© une session Ă  Agile Grenoble intitulĂ©e “Specification by example : venez assister Ă  la naissance d’une documentation vivante”. Depuis nous avons prĂ©sentĂ© Ă  plusieurs reprises cette session qui est Ă  chaque fois accueillie avec enthousiasme. Elle se compose en 3 parties : prĂ©sentation de la thĂ©orie, un exemple concret interactif et un retour d’expĂ©rience. La collaboration Ă©tant ag15_logo_speaker_blancau cƓur de ce processus, cette mĂ©thode implique tous les intervenants d’un projet : analystes mĂ©tier, dĂ©veloppeurs, testeurs et managers.

Des exemples utiles à différentes phases du projet

Comme l’explique le livre de Gojko Adzic, travailler avec des exemples est intĂ©ressant lors des diffĂ©rentes phases du projet :

  • ComprĂ©hension partagĂ©e : en amont du dĂ©veloppement, travailler avec des exemples permet de lever des ambiguĂŻtĂ©s et de s’assurer que l’on parle bien des mĂȘmes choses. De plus si tous les intervenants sont impliquĂ©s Ă  cette phase, cela joue aussi sur la dynamique d’équipe.
  • Acceptance test : dĂšs le dĂ©but du dĂ©veloppement, l’exemple est entrĂ© dans l’outil d’automatisation. Il devient un « acceptance test » de la double boucle TDD. Il prend alors un  rĂŽle de pense bĂȘte : il reste rouge tout le long du dĂ©veloppement et passe vert lorsque le logiciel satisfait toutes les exigences.
  • Regression test: une fois vert l’exemple change encore d’objectif. Il sert maintenant Ă  dĂ©tecter les rĂ©gressions. Un bon exemple nous indique dans quelle fonctionnalitĂ© s’est glissĂ© le bug.
  • Documentation vivante: un autre aspect est maintenant de jouer un rĂŽle  documentaire de l’application. Cette documentation Ă©volue en mĂȘme temps que le logiciel et est vĂ©rifiĂ©e en continu.  Il arrive parfois que l’ajout d’une fonctionnalitĂ© rende obsolĂšte certaines contraintes qui avaient Ă©tĂ© ajoutĂ©es prĂ©cĂ©demment. En passant rouge, les exemples nous indiquent l’impact du changement.
OĂč se trouve la poule aux Ɠufs d’or ?

8218-FX-6-0-13-6-9-0-90-5-5-95-95Cette mĂ©thode n’est pas magique. Son implĂ©mentation demande des efforts et un changement culturel. Aussi j’insiste rĂ©guliĂšrement sur le fait que cette mĂ©thode apporte Ă©normĂ©ment de valeur sur l’Ă©tape de comprĂ©hension partagĂ©e et de documentation vivante.

A mon sens, il n’y a pas d’autres mĂ©thodes qui challengent autant l’expression du besoin et la documentation. Aussi comme trop d’information tue l’information, quand je suis face Ă  des questions sur l’exhaustivitĂ© oĂč la qualitĂ© des exemples, j’essaye d’identifier Ă  quelle phase profite l’exemple. Si j’investis sur la documentation, l’exemple a certainement de la valeur. Par contre si je rajoute des exemples uniquement pour me protĂ©ger de la rĂ©gression, j’essaye de voir si je ne peux pas les rajouter dans d’autres tests (robustesse, intĂ©gration, etc
)

La phase de comprĂ©hension partagĂ©e porte en elle mĂȘme beaucoup de valeur. A cette Ă©tape c’est le besoin qui est challengĂ©. Les « product owners » doivent illustrer le besoin par des exemples concrets. En ayant des reprĂ©sentants de l’équipe mĂ©tier, dĂ©veloppement et test, l’interaction des diffĂ©rents points de vue va enrichir l’idĂ©e initiale.

Dans l’exemple pratique de la prĂ©sentation, nous tentons d’illustrer l’impact du changement en ajoutant une rĂšgle qui est incohĂ©rente avec une autre. Sur cette simulation cela semble simpliste, mais nous avons rĂ©cemment vĂ©cu cette illustration :

Nous voulions lĂ©gĂšrement modifier un calcul affichĂ© Ă  l’écran. Il Ă©tait difficile, tant le systĂšme Ă©tait complexe, de dĂ©tecter que cela rendait obsolĂšte une autre fonctionnalitĂ©.

Pour moi l’efficacitĂ© de cette mĂ©thode est Ă  rapprocher du principe « Mutal Benefit » de eXtrem Programming : une mĂȘme activitĂ© (la rĂ©daction d’un exemple) apporte de la valeur dĂšs l’instant prĂ©sent. Le principe est d’Ă©crire un exemple parce que cela est utile maintenant pour dĂ©finir ce que doit faire l’application. Pas uniquement parce qu’un jour il va potentiellement servir. En automatisant la vĂ©rification de l’exemple on rĂ©cupĂšre les fruits de cet investissement tout au long de la vie du projet.

Emblem-question.svgLes questions qui reviennent souvent

Lors de nos diverses présentations certaines questions sont récurrentes. En voici quelques-unes :

  • Vous parlez de pyramide des tests, n’ĂȘtes-vous pas en train de faire une pyramide inversĂ©s ?
    • Effectivement, le nombre d’exemples augmente avec le temps et le besoin de documentation. Cependant ce n’est qu’une partie des tests. Nous nous en servons comme test d’acceptance et de nombreux tests unitaires sont Ă©crits en mĂȘme temps que le code. Notez que cette documentation est trĂšs utile pour les testeurs pendant les recettes lors des phases de livraison.
  • Est-ce que l’approche est similaire Ă  celle du TDD ? C’est-Ă -dire que si on n’arrive pas Ă  tester c’est qu’il y a un problĂšme de design ?
    • Par le fait d’automatiser des exemples, il y a forcĂ©ment une influence sur le design. Cependant ce n’est pas son objectif, le besoin est beaucoup plus chahutĂ© par cette approche. Si le besoin n’est pas trĂšs clair, on a une opportunitĂ© de s’en rendre compte dĂšs la phase de comprĂ©hension partagĂ©e. A ce stade le changement coĂ»te moins cher.
  • A propos de l’impact au changement, n’y a-t-il pas moyen de l’identifier avant le dĂ©veloppement ?
    • Effectivement si une incohĂ©rence n’a pas Ă©tĂ© levĂ©e lors de la 1Ăšre phase, ce n’est que lorsque le code va ĂȘtre modifiĂ© que l’on va savoir quel est l’impact du changement. Cependant comme cette incohĂ©rence est connue, cela permet de statuer et de mettre Ă  jour la documentation. On a alors une nouvelle source de vĂ©ritĂ© sur ce que fait l’application (l’autre Ă©tant le code).
  • Quel est le coĂ»t pour la mise en place de cette mĂ©thode ?
    • Ce n’est pas facile de rĂ©pondre Ă  cette question quantitativement. Cela dĂ©pend de l’organisation mise en place. Sur notre projet, les dĂ©veloppeurs ont pris en charge une bonne partie (~20-30% temps de dĂ©veloppement). Cependant tout le monde s’accorde pour dire que cela vaut le coup : l’application a peu de bug, il y a moins d’incomprĂ©hension. C’est aussi l’unique documentation utilisĂ©e par le mĂ©tier, les dĂ©veloppeurs et les testeurs.

J’espĂšre vous avoir donnĂ© envie de tenter l’aventure Specification by example. La prĂ©sentation est disponible sous SlideShare et le code sous GitHub.

The post Specification by example et documentation vivante appeared first on Agilité, Architecture, C++ "in the mix".

Catégories: Blog Individuel

Ouvrir avec l’explorateur vos bibliothùques #SharePoint et #OneDrive


Le blog de Patrick Guimonet - sam, 09/10/2016 - 16:47
C’est l’une des demandes les plus frĂ©quentes des utilisateurs, comment manipuler les fichiers stockĂ©s dans SharePoint et OneDrive dans l’explorateur de Windows. En effet malgrĂ© des amĂ©liorations significatives dans l’interface, ...
Catégories: Blog Individuel

Contenu Festival #SharePoint et #Office 365 de mai 2016 Ă  Paris #SPSParis

Le blog de Patrick Guimonet - sam, 09/10/2016 - 15:44
Merci Ă  tous pour votre participation au Festival #SharePoint et #Office 365 de mai 2016 Ă  Paris ! En effet, c’est grĂące Ă  vous que ces Ă©vĂšnements et en particulier le SharePoint Saturday Paris ont Ă©tĂ© un trĂšs grand succĂšs ! Si ce...
Catégories: Blog Individuel

Productivité personelle - Mon organisation

Taverne d'Arma - Programmation - sam, 09/03/2016 - 09:10

J’ai rĂ©cemment effectuĂ© une prĂ©sentation au boulot concernant la productivitĂ© personnelle. Le but Ă©tait de parler des grands principes partagĂ©s par diffĂ©rentes mĂ©thodologies (Personal Kanban, GTD, ...). Je comptais partager les slides ici mais, en eux-mĂȘme, ils n’ont guĂšre d'intĂ©rĂȘt. A la place je me suis dit que parler de ma propre organisation serait probablement plus intĂ©ressant.

Personal Kanban

Vous avez surement dĂ©jĂ  aperçu ses tableaux de post-it a colonne multiple, contenant en gĂ©nĂ©ral au minimum “Todo, En-Cours, Done”. Personal Kanban est une mĂ©thode qui se base dessus et dont les grands principes sont :

  • Toutes nos actions sont des tĂąches Ă  mettre dans ce tableau.
  • Une tĂąche va toujours de l’avant, elle ne doit pas reculer.
  • Les colonnes correspondent au “en-cours” sont limitĂ© au nombre de tĂąche qu’elles peuvent contenir. Quand l’on arrive au plafond, il faut s’arranger pour terminer des tĂąches.
  • On choisit la tĂąche que l’on effectue en fonction du contexte (temps dispo, niveau de concentration, lieu, 
) et non pas seulement en fonction de la prioritĂ©.

Bref, on retrouve le principe de base des mĂ©thodes d’organisations, le recensement des tĂąches, et on y adjoint un mĂ©canisme nous forçant Ă  terminĂ© les tĂąches commencĂ©s plutĂŽt que d’en prendre une nouvelle.

Au quotidien j’utilise :

  • Des post-it papier, si possible, pour le boulot
  • Un outil informatique (Trello), pour le perso (histoire d’y avoir accĂšs de partout)

Quel que soit l’outil, le point important est de crĂ©er une tĂąche “rapidement” avec un libellĂ©, et potentiellement une “catĂ©gorie” (un projet par exemple).

C’est lĂ©ger et souple d’utilisation, bref, c’est une mĂ©thode qui me correspond bien. J’ai tellement fait rentrer le mono-tasking dans mes habitudes qu’en gĂ©nĂ©ral mon en-cours n’excĂšde pas une tĂąche.

Pomodoro

En complĂ©ment du Kanban, je pratique de temps Ă  autres la mĂ©thode Pomodoro. C’est en quelque sort mon “mode de productivitĂ©â€ quand j’ai besoin d’ĂȘtre concentrĂ©, d’aller vite, et d’abattre beaucoup de travail. Cette mĂ©thode est Ă  mon sens trĂšs efficace et prĂ©sente quelques avantages :

  • On se rend compte du temps qui passe.
  • On se force Ă  des crĂ©neaux ininterrompu de concentration.
  • Mais en se prĂ©voyant les breaks nĂ©cessaire Ă  ne pas saturer.

Revers de la mĂ©daille : elle demande une discipline que j’ai du mal Ă  appliquer en permanence. C’est pour cela que je la pratique “à la demande” uniquement.

Autres petites pratiques

En dehors de ces mĂ©thodologies, il y a aussi quelques principes que j’applique pour booster ma productivitĂ© :

  • Pas de notification visuel, ou trĂšs peu. Ma boĂźte reçoit ses mails discrĂštement et je les consulte quand j’en ai envie, et non dĂšs qu’ils arrivent. J’évite aussi de laisser ouvert les rĂ©seaux sociaux et autres petites pollutions de ce genre. Je prĂ©fĂšre me rĂ©server des moments pour aller les consulter.
  • Je connais mes moments “productifs” : ces pĂ©riodes de la journĂ©es oĂč vous abattez deux fois plus de boulot qu’à tout autre moment. Personnellement c’est entre 7h et 11h que je suis le efficaces. Entre 11h et midi, c’est la catastrophe. Je regagne un peu de productivitĂ© en dĂ©but d’aprĂšs midi et, fin d’aprĂšs midi, je commence Ă  saturer et Ă  avoir du mal. Du coup je m’assure de faire les tĂąches difficile dans ces crĂ©neaux lĂ .
  • Je profite de mes temps de transport pour faire ma veille. DĂšs qu’un article intĂ©ressant arrivent dans mon flux RSS, je l’envoi sur pocket pour que ma liseuse le rĂ©cupĂšre. Cela m’évite de lire Ă  un moment oĂč je pourrais faire quelque chose de plus profitable. Cerise sur gĂąteau, je sais aussi que je lit mieux sur ma liseuse que sur Ă©cran.
Catégories: Blog Individuel

Code fonctionnel en PHP

Taverne d'Arma - Programmation - lun, 08/29/2016 - 12:38

Ah le php... Une technologie que je n'apprécie guÚre pour des tas de bonnes et mauvaises raisons. Mais il faut bien lui reconnaßtre une qualité : il est trÚs facile de lui trouver un hébergement.

Mais lĂ  n'est pas le sujet du jour ! Un nouveau projet s'ouvre Ă  moi et, bien qu'il soit en php, je n'ai pas envie de mettre de cotĂ© mon centre d'interĂȘt du moment : la programmation fonctionnelle. Me voilĂ  donc Ă  chercher comment la mettre en oeuvre en php.

PHP et Closure.

La base de la programmation fonctionnelle, c'est de manipuler des fonctions. Et l'un des outils trĂšs utile autour des fonctions, ce sont les Closures : des fonctions qui "embarque" avec elle des variables en plus de leur paramĂštre entrant.

En php, la closure est un peu particuliÚre car il faut expliciter les variables qui sont utilisable à l'intérieur de la fonction. Elle se déclare ainsi :

function ($param) use ($varEmbarque1, $varEmbarque2) {
    // Mon corps de méthode
    // $varEmbarque1 et $varEmbarque2 sont accessible
}

Un exemple d'utilisation ?

public function raise($event) {
    Arrays::each($this->listeners, function($fn) use($event) {
        call_user_func($fn, $event);
    });
}

Je reviendrai plutard sur le Arrays::each. Ce qui est important ici c'est que each appelle la méthode pour chaque élement du table. La valeur de l'élement est alors donné en paramÚtre. Ici ma fonction a besoin de deux élements pour fonctionner : une callback contenue dans le tableau, et un évÚnement à transmettre. L'un est passé en paramÚtre, l'autre est passé via la closure.

Et si comme moi vous n'aimez pas spécialement les fonctions anonymes (question de lisibilité), vous pouvez appliquer le pattern builder :

public function raise($event) {
    Arrays:each($this->listeners, $this->emit(event));
}

// (DomainEvent) -> (Fn) -> ()
private function emit($event) {
    return function($fn) use($event) {
        call_user_func($fn, $event);
    };
}
Manipulations de collections et plus si affinité.

map, filter, ... Ces petites fonctions de manipulations de collections sont le premier outil issue du fonctionnel que j'ai utilisé. Je les trouve tellement confortable que je n'ai pas envie de m'en passer.

Malheureusement les fonctions fournies par php sont limitées (map, filter et reduce uniquement). En fouillant un peu sur internet, je suis tombé sur underscore.php, une librairie trÚs sympathique qui fournit le panel complet des fonctions de ce genre (all, any, find, ...).

Petit bonus, elle nous offre aussi des fonctions de manipulations de fonctions tels que compose, memoize, once et throttle qui peuvent s'avérer trÚs pratique.

Et enfin, les monades

Dernier outils du fonctionnel : les monades. Je ne les utilise pas encore tout à fait naturellement mais je reconnaßs ce qu'elles peuvent apporter. Cette fois-ci j'ai envie de les utiliser davantage et pour cela, j'ai trouvé la librairie php-functional.

Les monades, ce sont des outils trÚs utiles tels que Either qui présente deux "chemins" (réussite ou échec), avec deux types de retours différents, ou Maybe qui est une autre façon de gérer l'abscence de valeur.

Un exemple d'utilisation :

// (String, String) -> Either[FunctionalError, User]
protected function checkAuthentification($login, $password) {
    return $this->userRepository
        ->findByLogin($login)
        ->bind($this->checkPassword(Password::fromValue($password)));
}

$this->userRepository->findByLogin() est une fonction qui renvoi un Either. Bind permet d'appliquer à la valeur retourné une autre fonction qui renverra elle aussi un Either uniquement dans le cas Right (chemin de succÚs). La fonction donné à bind sera appellé avec la valeur en paramÚtre.

A l'intérieur de findByLogin, on va retrouvé deux retour possible :

\Monad\Either\Right::of($user);

ou

\Monad\Either\Left::of(new FunctionalError("Utilisateur inconnu"));

Dans un code classique, j'aurai utilisé un mécanisme d'exception qui aurait pas forcément été aussi lisible.

En sortie de checkAuthentification j'ai toujours une Either. L'appellant pourra donc faire quelque chose comme cela :

// (String, String) -> Either[FunctionalError, User]
public function exec($login, $password) {
    $user = $this->checkAuthentification($login, $password);
    $user->map($this->storeInSession())
         ->map($this->raiseUserConnected());
    return $user;
}

En cas de succĂšs de l'authentification, j'effectue deux fonctions :

  • Stockage en session
  • Lever d'un Ă©vĂšnement

Quand je veut extraire définitivement la valeur de la monade, je peut faire ceci :

$myEither->extract()

Je m'arrĂȘterais ici dans l'explication sur les monades : ils faudraient un article entier (voir plus) pour vraiment dĂ©montrer leurs valeurs.

Des commentaires Ă©tranges ?

Vous avez pu apercevoir au-dessus de mes fonctions des commentaires ayant cette forme :

// (String, String) -> Either[FunctionalError, User]

Ces commentaires sont uniquement présent à des fins de documentations. C'est une maniÚre de donner des indications sur les types utilisés sans passé par une phpDoc bien plus verbeuse : je trouve toujours les javadocs / phpdocs aussi useless...

Ces quelques indications me sont bien plus précieuses et sont suffisament légÚre pour que je garde la discipline de les rajouter à chaque fois.

Catégories: Blog Individuel

[Article extĂ©rieur] DĂ©ployer Let’s Encrypt sur Heroku et nom de domaine custom chez [OVH]

Mathieu Robin - ven, 08/26/2016 - 09:49

Salut à tous ! ça faisait un bail !

J’ai publiĂ© sur Medium (j’ai voulu essayer), un article nommĂ© « DĂ©ployer Let’s Encrypt sur Heroku et nom de domaine custom chez [OVH]« .

Je vous laisse tout le plaisir de le lire en cliquant sur le lien ci-dessus. Bonne lecture !

Flattr this!

Catégories: Blog Individuel

The Mostly Adequate Guide to FP

Taverne d'Arma - Programmation - jeu, 08/04/2016 - 07:19

En continuant mes recherches a propos de programmation fonctionnelle en javascript, je suis tombĂ© sur un ouvrage disponible gratuitement : The Mostly Adequate Guide to FP. Disponible en ebook ou pour une lecture «en ligne», ce livre d’environ 150 pages abordent les diffĂ©rents aspects de la programmation fonctionnelle de maniĂšre plutĂŽt didactique.

Au sommaire : currying, composition, monades et applicative. A mon sens les explications sont un peu moins facile Ă  apprĂ©hender que celle-prĂ©sente dans «Functional Programming in Javascript» mais elles sont tout de mĂȘme facile Ă  suivre.

Mention spĂ©ciale pour le chapitre sur la composition que je trouve vraiment trĂšs complet. Ici l’auteur nous prĂ©sente vraiment une autre maniĂšre de dĂ©veloppez et d’agencer nos fonctions. Les exemples donnĂ©s sont vraiment trĂšs parlant et illustre l’intĂ©rĂȘt de cette approche. Je pense notamment Ă  des dĂ©clarations comme celle-ci qui sont un exemple de concision :

var loudLastUpper = compose(exclaim, toUpperCase, head, reverse);

loudLastUpper(['jumpkick', 'roundhouse', 'uppercut']);
//=> 'UPPERCUT!'

AprĂšs la lecture de ces deux ouvrages, me voilĂ  complĂštement armĂ©e pour passer Ă  la pratique ! Et pour m’échauffer, j’ai suivi les exercices de NodeSchool sur le sujet ( «functional javascript» ). Ces exercices n’explore pas la composition ni les monades, mais le reste y passe.

Au passage pour ceux qui ne connaisse pas (et c’étais mon cas il y a quelques jours), NodeSchool est un site vraiment sympa bourrĂ© de «tutoriel» sous la forme d’exercice+corrigĂ©. Vraiment trĂšs sympa :)

Catégories: Blog Individuel

IaaR !

Être Agile - Thierry Cros - ven, 03/04/2016 - 20:06

etre-agile.png IaaR ! est un acronyme :

  • Intention
  • Attention
  • Action
  • RĂ©pĂ©tition.

C'est un "protocole" de transformation qui fait appel aux trois maĂźtrises de la voie toltĂšque (Attention, Transformation, Intention).

Intention

D'abord poser une intention.
Respecter ces trois recommandations :

  • Visualisation++ : faire appel Ă  l'imagination pour visualiser une scĂšne correspondant Ă  l'Ă©tat souhaitĂ© et atteint. Le "++" signifie que cette visualisation incorpore non seulement des images, Ă©galement des sons, des sensations... Bref fait appel Ă  plusieurs sens. Au-delĂ  de l'aspect sensoriel, cette visualisation crĂ©atrice possĂšde une dimension Ă©motionnelle : l'esquisse d'un lĂ©ger sourire pourrait apparaitre sur le visage pendant cette visualisation crĂ©atrice ;
  • 100% d'accord : autrement dit "ZĂ©ro doute". Du cĂŽtĂ© du pratiquant c'est comme si c'Ă©tait dĂ©jĂ  fait dans le monde de l'Intention et qu'il restait simplement Ă  rĂ©ifier - rendre rĂ©elle - cette visualisation ;
  • UC 10 : Universe Compliant level 10 se souvenir simplement que nous sommes dans un monde soumis Ă  diffĂ©rentes lois (lĂ©galitĂ© du pays, lois physiques...) et que la rĂ©alisation de l'intention s'inscrit dans ces lois. UC 10 signifie ainsi que le rĂ©sultat dĂ©pend aussi de ces lois.
Attention

Alors, Ă  quoi allons-nous prĂȘter attention afin que cette Intention se rĂ©alise ?
Notre perception de la réalité est-elle suffisamment... réaliste ?
Quels indicateurs, quel management visuel, que "sur-veiller"...

Action

Si ce cadre fonctionne grùce à la force de l'Intention, il reste que nous sommes acteurs de la réalisation. Quelles actions envisageons-nous ?

Répétition

Probablement un ingrédient "secret" de ce processus : selon le changement, il est vain d'imaginer qu'une habitude engrammée pendant des décennies va disparaßtre subitement. Il faudra donc répéter... Et répéter encore jusqu'au succÚs.
D'autant plus que ce processus itératif offre un espace - bien connu des Agilistes - à la fois de feedback (l'inspection des Scrumiens) et d'amélioration.

Magie !

Lorsque je présente IaaR ! en formation ou accompagnement, j'insiste sur le cÎté "magique" de cette pratique, fortement inspirée par la voie toltÚque telle qu'exprimée par Don Miguel Ruiz (IaaR est un acronyme que j'ai concocté à partir d'un protocole présenté par Don Miguel Ruiz).
Magique car elle fait appel à des "procédés psychologiques" peu ou pas connus généralement.
Magique car elle suppose un certain lĂącher-prise, une confiance dans ce pouvoir de l'Intention.

Pratiquer !

Je ne peux que vous engager Ă  pratiquer IaaR !.
Démarrez par une intention simple, qui puisse se concrétiser dans la journée par exemple, pour vous entraßner à cette pratique.
Et faites confiance dans le pouvoir de votre Intention !
Intention ou Foi ou Amour.

teo-compressee.jpg

ToltĂšque Agile

Catégories: Blog Individuel

Agile en 2016

Être Agile - Thierry Cros - mer, 03/02/2016 - 08:47

etre-agile.png L'histoire continue... Un nouveau billet, ma vision de l'agile en 2016. Entre mutations, sacrifices et heureuses surprises.
Mais... Que signifie agile aujourd'hui ? Entre un manifeste tout autant historique qu'abandonné, pertinent sur le fond et obsolÚte sur la forme... Nous trouvons autant de définition de l'agile qu'il y a d'Agilistes.

Agile : qu'es aco ?

Je tente une définition, sous forme de mindmap, de ce qu'est pour moi l'agile aujourd'hui.

agileMindmap.jpg

Ce triptyque décrit

  • le domaine d'application
  • l'essence de l'agile
  • son intention.
VICA

Une traduction de l'acronyme anglais VUCA. Si l'origine est finalement la prise de conscience de la complexité du développement logiciel, c'est bien de volatilité, d'ambiguïté... Que nous parlons aussi.
Et comme notre monde est de plus en plus complexe, l'agile devient d plus en plus pertinent.
Cela pose la question de la premiÚre valeur agile : les personnes et leurs interactions plus que les processus et les outils. Lorsque le systÚme est mieux maitrisé une approche qui priorise les "processus" redevient pertinente.

Empirique

L'image reprend les quatre axes qui me semblent essentiels dans une approche agile empirique. Grosso modo ce sont des principes de l'Extreme Programming.

Équilibres

AprÚs une quinzaine d'années de pratiques j'en arrive à me dire que la finalité de l'agile c'est l'équilibre.

  • Valeur et qualitĂ© : apporter de la valeur aux Utilisateurs, Ă  l'organisation, sans sacrifier la qualitĂ© interne (ou maintenabilitĂ©) dans une lucragilitĂ© dĂ©viante ;
  • responsabilitĂ© et bien-ĂȘtre : l'hĂ©donisme Ă©tait inscrit dans l'agile dĂšs le dĂ©but. Si certains parlent de "bonheur au travail' en ces temps de novlangue oĂč les mots perdent leur sens, je m'en tiens plutĂŽt au bien-ĂȘtre.



Et ToltĂšque Agile est mon nouveau site.

Agile en 2016 ?

Je constate sur le terrain plusieurs patterns qui reviennent réguliÚrement.
La qualitĂ© est bien souvent sacrifiĂ©e sur l'autel de la valeur ajoutĂ©e, elle-mĂȘme malmenĂ©e (voir plus loin). Il m'arrive plusieurs fois par an d'entendre un discours tel que "nous faisons de l'agile sur ce produit depuis plusieurs annĂ©es et nous avons de gros problĂšmes de qualitĂ©...".
De fait il s'agit bien souvent de Scrum et de sa vraie fausse bonne idée : la définition de fini.
Bien entendu, c'est une bonne idée... Lorsque ceux qui l'élaborent ont déjà une bonne notion de ce qu'est "fini" au sens professionnel du terme. Autrement dit, encore faut-il avoir conscience de la nécessité de code propre... Et de ce qu'est un code propre. Dieu merci, il existe des corpus tels que craftsmanship pour élever le niveau.

Valeur... Un glissement sémantique existe entre valeur et priorité. Trier un backlog par priorité, oui. Encore faut-il se poser la question de la qualité de la priorisation. Trop souvent, ce sont les classiques nécessités techniques et/ou fonctionnelles, les diminutions de risques... Qui dictent les priorités au détriment de la qualité.
Si en tant que Product Owner vous planifiez par story d'XP mais finalement avec une stratĂ©gie inchangĂ©e, ĂȘtes-vous vraiment agile ? Pour le moins, monitorez-vous la valeur mĂ©tier produite (et stockĂ©e...) Ă  chaque itĂ©ration ?

Versions frĂ©quentes... C'est une pratique emblĂ©matique de l'Extreme Programming, que l'on retrouve dans le premier principe agile. Or, le cĂ©lĂ©brissime 'produit partiel potentiel livrable" de Scrum est inconsĂ©quent. J'ai rencontrĂ© par exemple une Ă©quipe qui pratiquait Scrum tout en livrant une version par an... Scrum peut-ĂȘtre, agile certainement pas !

Valorisation des faiseurs... Si effectivement les équipes deviennent plus autonomes (voir toutefois la question du ScrumMaster), il reste que fondamentalement les commerciaux et autres managers sont généralement mieux payés et bénéficient de privilÚges (places de parking, voitures de fonction...) que n'ont pas les Faiseurs... It's a long way...

ScrumMaster omniprĂ©sent : sans ouvrir le dĂ©bat sur l'utlitĂ© d'un ScrumMaster, il faut quand mĂȘme se poser la question de sa pertinence dans une Ă©quipe agile (je ne parle pas de Scrum). Les DĂ©velippeurs ont-ils besoin d'un ScrumMaster ? Quand leur rĂ©ponse est oui, qui choisit la personne en charge de ce rĂŽle ? Au final, ce rĂŽle est-il compatible avec l'auto-organisation consubstantielle Ă  l'agile dans son cĂŽtĂ© systĂ©matique ?

Les Managers deviennent agiles : bien souvent sans avoir la moindre idée de ce que cela signifie, bien au-delà des quelques gentilles pratiques du Management 3.0.

Il reste que l'agile se généralise. Quelle (grande) société aujourd'hui n'a pas expérimenté voire déployé l'agile ?
Peu à peu, la nécessité d'autonomiser les équipes grandit.
La gamification (je t'aime... Ma non troppo) dĂ©tend un peu les relations. Les Managers prennent conscience que les personnes dans l'Ă©quipe sont des ĂȘtres humains avant d'ĂȘtre des ressources.

Dans cet ordre d'idée, la question du développement personnel (des Managers mais aussi de tout membre de l'équipe) se pose. Il n'est qu'à voir tous ces Coachs et autres spécialistes de la Mindfulness qui se précipitent vers nous.
Bref... Nous sommes au milieu du pont.
Ce Nouveau Monde que nous inventons est encore empreint de travers de l'ancien.
Mais la dynamique est bien en marche.

Catégories: Blog Individuel

"Exigence" : un terme vraiment agile ?

Être Agile - Thierry Cros - jeu, 02/11/2016 - 12:17

etre-agile.png Il vous arrive peut-ĂȘtre de lire ou d'entendre parler d'exigences dans un contexte agile. Avant d'indiquer pourquoi je crois que ce n'est pas trĂšs pertinent, je voudrais rappeler un postulat : les mots ont un sens. Non seulement un sens, une histoire.
Les exigences correspondent initialement Ă  une certaine technique d'expression de besoins.

Confusion entre expression de besoins et exigences

Que ce soit via

  • une liste d'exigences
  • une modĂ©lisation d'interactions en cas d'utilisation
  • un ensemble Ă©mergent de user stories de l'Extreme Programming
  • ...

Il s'agit bien d'exprimer des besoins. Autrement dit, le point commun à toutes ces techniques est leur finalité : exprimer des besoins.
Utiliser le terme "exigences" renvoie donc à cette technique ancienne basée sur des listes de besoins parfois classés en besoins fonctionnels, non-fonctionnels...

Exigence ?

Au-delà de l'aspect historique qui renvoie à des pratiques sensiblement différentes, ce terme d'exigence pose un problÚme sémantique.
La base d'une planification agile est qu'il existe, dans un environnement complexe, une variable d'ajustement des plans. Cette variable peut ĂȘtre

  • le budget
  • la date des livraisons
  • la qualitĂ© (en termes de maintenabilitĂ©, Ă©volutivitĂ©...)
  • le contenu.

Les méthodes agiles telles que XP recommandent de jouer plutÎt sur le contenu.
Ce qui signifie que les besoins ne sont - par nature et de façon générale - pas des exigences au sens autoritaire et définitif du terme.

Conduite du changement

Mais je crois que "le pire" dans l'utilisation de ce terme est en terme de conduite de changement. À ce compte-lĂ  continuons d'utiliser "chef de projet" pour ScrumMaster ou bien lotissement pour les versions frĂ©quentes mises en exploitation. Cela ne facilite pas la prise de conscience que nous Ă©voquons des rĂŽles, pratiques, principes radicalement diffĂ©rents.

Et donc...

Expression de besoins est le nom donné à cette activité. Remplacer "exigence" par "besoin" me semble donc plus pertinent, par exemple
outil d'expression de besoins plutÎt que outils de gestion d'exigences lorsqu'il s'agit de gérer des stories.

Par ailleurs, les rÚgles de gestion et autres "contraintes" à respecter sont reprises d'une part dans des tests d'acceptation (qui constituent une story tout autant que la carte) ou bien dans une définition de fini lorsqu'il s'agit d'éléments communs à plusieurs besoins.

Franchissons vraiment le pont vers la rive agile, ne restons pas au milieu !

Aigle

Catégories: Blog Individuel

SoftShake 2015 – Appel aux confĂ©renciers

Forum Logiciel - lun, 07/13/2015 - 13:55
La confĂ©rence SoftShake revient en 2015 pour sa 5Ăšme Ă©dition, et se tiendra les jeudi 22 et vendredi 23 octobre, en plein centre de GenĂšve, dans les locaux de l’hepia (comme ces derniĂšres annĂ©es). SoftShake vient d’ouvrir l’appel aux confĂ©renciers. N’hĂ©sitez pas Ă  vous porter candidat si vous souhaitez partager un sujet : * Les […]
Catégories: Blog Individuel

Partagez la connaissance

Partagez BlogsdeDeveloppeurs.com sur les réseaux sociaux