Innover sans technologie

le 05/03/2009 par David Alia
Tags: Évènements

Dans un article précédent, Yannick prônait l’innovation durable illustrée dans le secteur des Télécom, auquel un commentateur zélé répondait qu’icelle « n’est pas une question de technologie, ni d’architecture de SI », invoquant même le directeur marketing de Coca-Cola (lire).

Je suis assez tenté de rejoindre votre position, cher commentateur. D’autant plus que, chez OCTO, l’innovation que je vais vous présenter a démarré bien loin de l’IT. OCTO, nombre de lecteurs l’auront évidemment compris, est fervent partisan de l’intégration des méthodes Lean dans le SI. Le kaizen (amélioration continue), issu des pratiques industrielles de Toyota, reste un maître mot dans l’accompagnement de nos clients.

Pour tordre le cou au droit proverbial des cordonniers à être mal chaussés, j’avais décidé de mettre en place cette pratique en interne. L’innovation proposée devait amener de la valeur à un public ciblé, sans bousculer les habitudes de travail, avec un investissement initial restreint.

Le sujet était tout trouvé : améliorer la communication commerciale essentielle vers les consultant(e)s. En effet, tous étaient et sont toujours susceptibles d’être intéressés par les propositions commerciales en cours, celles (brillamment !) gagnées et celles (étonnamment !) perdues et ce, au fil de l’eau.

Allais-je lancer une expression des besoins puis une recette auprès de key users habilement sélectionnés ? Allais-je me ruer tête baissée vers une extraction journalière des données de notre ERP pour une diffusion par mail aux abonnés ?  Allais-je tout simplement me lancer dans la technologie pour innover ? Le suspense est insoutenable, vous le sentez aussi.

Pour tester et démontrer la valeur de mon innovation, j’ai plutôt choisi de prototyper éco : économique et écologique.

  • Un tableau en liège grand format installé dans la cafét’ (en face du baby-foot)

  • Des post-it de couleurs variées (les couleurs illustreront les secteurs de nos clients sur lesquels est structurée notre organisation)

  • Des punaises de qualité irréprochable

  • Et… c’est malheureusement tout : je sais, c’est cruel pour les technophiles technocentriques

Tableau des propositions commerciales OCTO

Le tableau est divisé en trois sections : en cours, gagnées, perdues. Sur les posts-it, le nom du client et l’intitulé de la mission gribouillés au marqueur. La purge est mensuelle.

Mon objectif : susciter l’adhésion des  gestionnaires commerciaux (écrire un post-it à la pause café ne coûte pas), obtenir un feedback de TOUS les utilisateurs sans les assaillir (pendant qu’on discute autour d’un café, on peut commenter les missions affichées) et initier le changement sans rupture (l’information pertinente est accessible sans efforts).

Le projet a été plébiscité, et depuis plus de six mois désormais, le tableau est régulièrement mis à jour et a subi quelques modifications suggérées par les utilisateurs.

Passer à la technologie était l’étape complémentaire : quelques modifications de code dans notre ERP maison, l’ajout d’un feed RSS sur les missions et le tour était joué. Modifier le code était relativement aisé puisque notre logiciel (basé sur le framework Grails) était balisé par un harnais de tests automatisés (*). Implémenter un flux RSS était redoutablement facile, mais vous devez achever la lecture de ce billet pour comprendre pourquoi : c’est visiblement l’article de tous les suspenses.

Alors, innover sans technologie c’est non seulement possible mais c’est indispensable lorsque le contexte s’y prête :

  • Les utilisateurs ne sont pas bousculés, au contraire ils sont tacitement incités à participer à l’élaboration du projet par des suggestions immédiates ou du fait de la facilité à modifier soi-même (changer la disposition ou la couleur des posts-it),
  • L’investissement initial est marginal (chez OCTO, on peut encore se servir de posts-it sans remplir cinq formulaires) et autorise l’échec,
  • Toutes les castes sont impliquées et valorisées d’emblée : les directeurs, les commerciaux, les consultants, les stagiaires : tous transitent une fois par jour au moins à la salle café (au moins trois fois par jour pour les stagiaires) et constatent l’épanouissement du business de notre société.

La partie technique

Les articles informatiques, c’est comme les bons yaourts aux fruits : c’est toujours meilleur avec des morceaux dedans.

La plateforme Grails qu’on ne présente plus possède un plug-in spécifique : Feeds. Grâce à l’expressivité intrinsèque de Groovy et à l’implémentation masquée des mécaniques de flux (RSS/ATOM), ce plug-in a permis de développer la version technologique du tableau de la salle café en deux heures à peine, tests inclus évidemment.

L’innovation avec Grails est un sujet passionnant, qui sera de nouveau abordé dans une session de l’Université du SI les 1 et 2 juillet prochain. Décidément, le suspense se poursuit…

Extrait du code de génération du flux RSS à partir du plug-in Grails « Feeds ».

render(feedType:'rss', feedVersion:'2.0') {
title = "Les propositions commerciales OCTO"
description = "La mise à jour régulière propositions commerciales d’OCTO"
link = url + "/wS/feedMissions"

// méthode du Core Domain pour récupérer les dernières modifications
// sur les missions. La variable period fournie par l’utilisateur permet de
// remonter les modifications chaque jour (défaut) ou chaque semaine.
def l = Project.listRecent(period, new Date())

l.each { pr ->
  // On filtre sur les projets facturés
  if (pr.isBilledProject()) {
    def client = "client non renseigné"
    def sector = "secteur inconnu"

    if (pr.client) {
      client = pr.client.name
      sector = pr.client.sector.name
    }

    // projectStatus.name renseigne sur l’état de la mission :
    // avant-vente, signée, annulée, perdue…
    def title = pr.projectStatus.name.toUpperCase() + " : " + client + " (" + sector + ")"
    def ref = pr.getReferenceAndName()
    def am = pr.accountManager ? pr.accountManager.trigram : "N/A"
    def invoice = pr.invoicingType.description
    def amount = pr.totalAmount() ? String.format('% 6.2f', pr.totalAmount()) + " euros"
                                  : 'N/A'

    // Définition d’une entrée RSS
    entry(title) {
      publishedDate = new Date()
      link = url + "/project/edit/" + pr.id

      // cette méthode met en forme les informations
      // sous forme linéaire ou tabulaire, selon le choix utilisateur
      renderFeed([ref, invoice, amount, am, pr.comment], format)
    }
  }
}

(*) Hmm… Ce n’est pas entièrement vrai, à croire que l’adage sur les cordonniers a la nuque raide