29 août 2010

Article

Technologies de l'information

Pourquoi être agile en développement ?

Il n’est pas exagéré de dire que l’industrie du logiciel assiste à une vague agile. Le développement agile n’est plus marginal depuis bien des années. Les petites comme les grandes entreprises intègrent et adaptent de plus en plus les meilleures pratiques promulguées par les processus agiles les plus populaires. Mais attention, l’excellente publication classique de Brooks 1 nous rappelle depuis plusieurs décennies qu’aucune technologie ni technique de gestion n’augmenteront la productivité, la fiabilité ou la simplicité d’un facteur 10. Le développement agile ne sera pas, lui non plus, une balle argentée (« silver bullet ») ou l’arme ultime.

Adopter l’agilité pour augmenter uniquement la productivité est, à mon avis, une erreur grave. Il est très important de comprendre que l’un de ses plus importants bénéfices, soit la capacité d’effectuer les relâches d’un logiciel d’une façon régulière et plus fréquente, ne survient pas parce que l’on développe plus vite, mais plutôt parce que l’on travaille différemment. Une équipe aura besoin de temps et d’entraînement pour apprendre à être agile en développement. Il y a même de fortes chances pour qu’une équipe aille plus lentement, et non plus rapidement. L’insistance accordée à la productivité pourrait facilement encourager votre équipe à appliquer des raccourcis tout en étant moins rigoureux dans leurs tâches journalières.

« Être agile » est peut-être la nouvelle tendance, mais si vous considérez la suivre, une seule question importe : Comment le développement agile peut-il vous aider à l’atteinte de votre réussite ?

Comprendre le succès au-delà des délais à respecter

Depuis plusieurs années, le groupe Standish 2 a donné une définition traditionnelle du succès en développement de logiciel : livrer à temps, dans les budgets et en fonction des spécifications demandées.

Mais, le succès est beaucoup plus que de respecter les délais... Il est normal qu’un junior en développement recherche d’abord une gratification personnelle comme réussite. Ensuite, lorsqu’il acquiert de l’expérience, il découvre que la maintenance est la clé du succès lorsque l’on travaille en équipe. Cette gratification et cette fierté de produire du code élégant et maintenable promulguent les réussites techniques. Malgré un excellent codage, certains projets sont annulés. Ceux qui survivent doivent satisfaire leurs promoteurs afin que la valeur du logiciel dépasse son coût de développement. Ce succès est la valeur livrée à l’organisation. Ces trois types de réussites (personnelle, technique et organisationnelle) sont importantes et interdépendantes.

  • Sans réussite personnelle, on peut difficilement se motiver soi-même et motiver ses collègues.
  • Sans réussite technique, on perd un temps fou avec un code source aussi instable qu'un château de cartes.
  • Sans réussite organisationnelle, l’équipe ne veut plus faire partie d’un bateau qui coule.

Ajouter de l'agilité

Est-ce que le développement agile peut vous aider à obtenir plus de succès? Peut-être. Chose certaine, le développement agile focalise sur les trois types de réussites mentionnés précédemment, vous permettant d’injecter les meilleures pratiques dans les zones qui vous occasionnent le plus de problèmes.

Que votre organisation utilise un processus (ou une méthodologie de développement) traditionnel, unifié, ou déjà impliqué en agile, il est possible de profiter d’une ou de plusieurs pratiques agiles applicables à votre processus actuel. Il est important de reconnaître que tout processus est dynamique et doit être adapté en fonction du domaine d’affaires, de la culture d’entreprise, du type de projet, de la grandeur des équipes, etc. La formation DE119 est tout indiquée pour obtenir une définition claire et pratique des processus disponibles et vous permettre de cibler les meilleures pratiques en agile à intégrer pour votre organisation. Pour ceux qui veulent connaitre plus spécifiquement un processus agile, la formation DE410 vous permettra de bien comprendre en détail le processus agile SCRUM, le plus populaire en industrie.

Ajouter de l’agilité par le test

Une des pratiques les plus importantes en agile est le développement piloté par les tests (TDD - Test-Driven Development). DeepObjectKnowledge et Technologia avons été les premiers au Québec (en 2003) à offrir une formation sur cette pratique agile. Il existe une formation DE207 adaptée pour les systèmes embarqués. Mais attention, une pratique agile ressemble beaucoup à une mise en forme, elle demande de l'entraînement, de la rigueur, et de la volonté... si l’on veut bénéficier d’un retour sur l’investissement. Ces formations vous apporteront un excellent plan d’entraînement pour votre réussite personnelle, technique et organisationnelle.

Au plaisir de vous aider à intégrer l’agilité dans vos organisations.

  • 1 Frederick Brooks, The Mythical Man-Month: Essays on Software Engineering, 20th Anniversary Edition, Addison-Wesley, 1995.
  • 2 Standish Group, The CHAOS Report, 1994.

Découvrez également les formations orientées objet - développement de logiciels offertes chez Technologia.

Michel de Champlain dirige DeepObjectKnowledge, principal partenaire de Technologia pour les technologies objet, agiles et embarquées (embedded). Il est titulaire d'un diplôme de troisième cycle en génie informatique de l'École Polytechnique de Montréal. Fort de plus d'une trentaine d'années d'expérience en programmation, dont C/C++, il utilise Java et C# depuis leur lancement.