Eric Lefèvre (Valtech Technology) : "Le lien entre les développeurs et la production est capital pour assurer la satisfaction du client"

Centré à la fois sur J2EE et .Net, le prestataire adosse ses processus à la méthode Agile. Exploitant aussi bien Scrum que Xtreme Programming, ses équipes mettent en oeuvre des outils maison pour maîtriser la qualité du code.

Sur quels types d'applications travaillez-vous? Avec quels langages et quels environnements de développement ?

Nous développons généralement des applications d'informatique de gestion : gestion de la clientèle, assistance, logiciels spécialisés d'éditeur...Ce sont principalement des interfaces Web, parfois des applications riches.

Les langages utilisés sont pour les trois-quart du Java et pour le quart restant du C# de la plate-forme .Net. Nous développons aussi avec d'autres langages comme Python, mais cela reste anecdotique. Comme environnements de développement, nous utilisons Eclipse pour Java. Pour .Net, nous nous servons de Visual Studio et d'environnements Open Source comme SharpDeveloper.

Quels méthodes de développement utilisez-vous? Comment les mettez-vous en place ?

Nous utilisons la méthode Agile pour améliorer nos façons de travailler dans deux optiques : le retour sur investissement, et assurer un développement durable. Nous mettons en pratique trois méthodologies Agile.

Nous utilisons majoritairement Scrum pour la gestion pure de projet. C'est un outil très peu technique, très peu contraignant, il y a seulement quelques artefacts et règles à respecter. Ce n'est pas une méthode en soi, plutôt un cadre. Nous y implémentons nos méthodes au jour le jour, pour l'adapter à nos projets. A l'inverse de Rational Unified Process, où les consultants adaptent les process à priori, Scrum nous permet de réfléchir sur le travail effectué après chaque livraison. Nous avons un point de vue "petite livraison sur petite livraison".

Scrum ne permet pas la pratique de développement, pour cela nous utilisons Xtreme Programming. Nous avons 14 pratiques comme les tests, le binômage, l'intégration, le refactoring...Cette méthodologie nous sert pour le développement au jour le jour. Elle nous permet de faire un développement vraiment adapté à un contexte Agile : nous n'écrivons que le code nécessaire pour la livraison, en évitant de perdre du temps sur du code qui ne serait pas utile.

Et la troisième méthodologie agile que vous utilisez ?

Il s'agit de Lean Sofware development, qui nous offre une vision stratégique sur les projets. Il s'agit d'une méthode formalisée pour le développement. Elle comprend deux points de vue : un point de vue haut niveau nous donnant une chaîne de valeur globale du projet. Elle propose des outils pour optimiser la façon de travailler. Elle met le focus sur les chefs et directeurs de projet.

Lean Sofware development propose également quelques pratiques. Par exemple, l'un d'entre eux consiste à proposer et implémenter plusieurs solutions. Nous évitons de prendre des décisions hâtives et nous développons plusieurs prototypes. Nous décidons ensuite lequel est le meilleur. Nous suivons l'idée directrice de Lean Software Development : prendre les décisions au dernier moment raisonnable.  

Comment faites-vous le lien entre les développeurs et la production ?

La communication entre les développeurs et la production est un gros enjeu pour nous aujourd'hui, par rapport à nos clients. Nous demandons à l'équipe d'automatiser la mise en production, ce qui fonctionne souvent bien jusqu'à l'intermédiaire, le serveur d'applications. Mais il est plus difficile d'aller jusqu'à la mise en production. Nous utilisons certains outils comme Bitforce, SCM4ALL, Sun SMC.....Nous essayons de vraiment avancer sur ces outils pour satisfaire au mieux nos clients.

Utilisez-vous des outils collaboratifs pour l'équipe ?

Bien sûr. Mais nous étudions d'abord si il y en a vraiment besoin. Nous utilisons l'approche Agile : que s'est-t-il passé ? Quelles solutions ? Et de là nous décidons des outils à mettre en place. Nous utilisons souvent des wikis pour les équipes de développement : pour échanger et capitaliser sur la compréhension des besoins fonctionnels.

Nous utilisons aussi des outils techniques ou des blogs. En général, nous mettons en place des outils de grands exemples visibles : toutes les informations sont affichées sur le mur de l'équipe, chaque tâche technique est sur un post-it. Les outils de type entreprise fournissent un maximum d'options et sont intéressants pour les projets complexes. Par exemple Rally. Nous les utilisons pour les grands projets. Dans le cas d'équipes de quelques personnes, nous mettons en place en premier lieu le système des post-it. Il nous arrive aussi d'utiliser des chats, des webcams,...

Quelles sont vos méthodes pour assurer la qualité des développements ?

Nous utilisons des outils très soft. Nous établissons deux chartes de qualité : une pour l'équipe et une avec le client, orientée chef de produit. Nous introduisons quelques principes : respecter certains critères, mettre le focus sur les demandes du client. Nous lançons chaque étape quand les fonctionnalités précédentes sont complètement terminées. Il découle de l'équipe des outils pratiques : des outils d'intégration continue pour tester les codes sources. 

PMD nous sert d'outil de qualimétrie pour Java. xUnit est utilisé pour la rédaction de tests unitaires. FXscope nous permet de synthétiser les résultats en résultats exploitables, orientés chefs de projets. Les outils tout prêts ne sont pas facilement disponibles donc nous mettons en place nos propres outils, ou bien nous en adaptons certains comme par exemple QALab. Le but est d'avoir une vue synthétique des données. Ces composants sont souvent intégrés aux outils d'intégration continue. Notre développement est piloté par les tests : nous écrivons d'abord les tests, puis le code.