Je parle du tableur.
Je désire ici soulever un débat plutôt vaste sur une certaine limite des outils de développement de gestion, limite qui fait qu'un analyste doit plus ou moins nécessairement être aussi un développeur sous peine d'entrer dans le cycle interminable et contraignant du développement classique par un tiers. Je veux soumettre à l'attention des lecteurs développeurs du forum un procédé extrêmement simple et tout à fait générique, qui permettrait selon moi un net abaissement de cette limite dans certains cas, simplement à l'aide de l'outil tableur. Ce que je vais montrer ici est du domaine de l'intuition, puisque je n'ai implémenté ceci nulle part, et se réfère le cas échéant à votre expérience ou plus certainement à votre propre intuition.
Dans les faits, le tableur, qui n'est pas un logiciel de gestion de bases de données, est le premier logiciel de gestion de bases de données utilisé dans le monde. Tous les professionnels ici, qu'ils soient développeurs ou non, peuvent très bien pressentir cela.
Sur les bureaux des PC d'entreprise, il y a des icônes qui pointent vers les databases spécifiques à l'entreprise, qui sont exploitées par les utilisateurs finaux, soit à travers des progiciels paramétrés, soit plus rarement au moyen de développements à façon, soit un mix des deux. Personne dans l'entreprise sauf le développeur(1) ne peut intervenir sur aucune structure et encore moins en créer une qui serait pourtant précieuse, et Dieu sait que ces lacunes analytiques d'exploitation sont le quotidien de tout le monde en entreprise.
Que font les gens devant ce problème ?
Sur les bureaux, les icônes vers Access (ou toute autre solution de conception base de données) sont plus que rares. C'est logique. Quand on a créé une table avec Access, quand on a généré un formulaire, un état, on est content, on est fier. Mais quand il s'agit de partager ce travail sur d'autres postes, quand il s'agit d'enchaîner des relations, quand il s'agit de coder, de maintenir et de faire évoluer, alors commence la véritable épreuve : on se rend compte que l'on ne s'improvise pas développeur, on se rend compte que pour que le formulaire "magique" se répande durablement sur tous les postes concernés, il y a un gros investissement et que l'on rentre irrémédiablement dans le cadre du développement à façon. La logique de l'entreprise lui fait parfois penser qu'un petit développement par un stagiaire fera l'affaire, ce qui peut parfois être le cas... mais pas très longtemps, surtout quand les stagiaires défilent sur le même paquet de spaghettis, l'"enrichissant" chacun de sa propre sauce.
Par contre, sur tous les PC il y a Excel, et des tas de gens savent s'en servir. Une majorité d'utilisateurs possède des feuilles de calcul, ne contenant pas de calculs, mais des informations proprement rangées en lignes et en colonnes, avec un entête et avec l'option "filtrer" enclenchée : c'est à dire des bases de données ; locales, non typées, non relationnelles, mais des bases de données quand même.
Et puis tout naturellement dans l'entreprise, un chef de département va un jour concevoir un modèle de feuille de données, c'est-à-dire qu'il va juste mettre des libellés dans la première ligne d'une feuille, figer les panneaux, activer les filtres, colorer tout ça, etc. Ensuite, il va copier-coller ce modèle en divers point du réseau et demander à ses collaborateurs de remplir/maintenir ces feuilles au quotidien. Dans les faits, ce chef de département est ainsi devenu un véritable analyste, qui fait ce qu'il peut avec ce qu'il a pour que le travail soit fait et qui sait que pour cela, le tableur n'est si pas mal. Ce qu'il ne sait pas, ce responsable, c'est que, selon cette réflexion (première réponse à la question initiale, en anglais "Why would you want to disable them?"), il ne devrait surtout pas le faire :
Je ne mets ici que la citation partielle, nous verrons pourquoi.Excel ne doit, en théorie, pas proliférer au-delà des postes de travail des utilisateurs.
Je fais maintenant un petit aparté sur la longueur du temps, qui va nous indiquer l'ampleur du problème. Quand j'ai débuté dans ce domaine, ne sachant pas encore que j'allais faire de la base de données mon activité professionnelle pendant les trente années et plus qui suivraient, au début de la micro-informatique (j'ai développé sur l'IBM PC à disquettes), les entreprises étaient complètement démunies face au problème de la gestion des données. C'était un travail de pro et c'était très, très cher, point barre. La première entreprise de France, les artisans, était dans l'incapacité financière complète de gérer son activité par l'informatique. C'était sans appel. Mon associé et moi avions décidé de faire quelque chose pour cela et le reste est de l'histoire personnelle. Mais la raison qui m'amène à ce point est choquante : trente ans après rien n'a changé. L'entreprise artisanale n'a pas de solution de gestion, à moins d'être très prospère et très décidée, d'avoir un C.A. qui corresponde à plus de dix salariés et, ce n'est pas la moindre des conditions, d'avoir la chance de se trouver un bon développeur, fiable et qui tienne sur la durée, parce que les logiciels tout faits, ça ne marche jamais : essayez d'acheter ou de vendre une paire de chaussures quasiment indéformables et à taille unique... le chausse-pied est rarement utile : comme ça n'entre pas, on marche sur la pointe des pieds.
Enfin, vous l'avez compris, malgré trente années sans évolution significative dans le domaine de l'informatique de gestion, quelque chose à quand même changé, une chose à changé : Multiplan est arrivé. Important changement de paradigme en son temps, il a permis en quelques années aux décideurs des entreprises de commencer à bidouiller leur propre organisation dans des feuilles éminemment locales et personnelles, qui sont vite devenues les piliers de la gestion de l'entreprise. Quand je suis devenu programmeur indépendant en 1995, mon premier nouveau client me résumait son problème, celui de sa profession entière (entreprise du bâtiment requérant un suivi de chantier), ainsi : "Nous voulons savoir si nous sommes morts maintenant, pas dans un an quand le comptable le dira". Évidemment, j'ai démarré son développement selon l'inspiration de ses feuilles Excel, sur lesquelles il avait passé des tas de fins de journées jusqu'à plus d'heures, plus des week-ends entiers, feuilles précieuses, qui commençaient à ressembler à... un tas de spaghettis.
Revenons à notre révolutionnaire décideur qui confie un modèle strict de feuille de données (et non de calcul) à ses collaborateurs. Viendra le moment où il voudra consulter les feuilles, non pas une à une, mais toutes ensemble. Voici la citation complète :
C'est une réflexion de bon sens. On sent le vécu et nous tous, développeurs, le partageons aussi.En général, c'est une décision de conception amateur que de traiter des feuilles Excel qui sont créées par l'utilisateur - elles sont trop volatiles ou imprévisibles et les solutions utilisant de telles feuilles Excel cassent plus souvent qu'elles ne fonctionnent bien. Excel ne doit, en théorie, pas proliférer au-delà des postes de travail des utilisateurs.
Ma réflexion commence véritablement ici, sur cet inflexible point qui est pourtant un important point d'inflexion. Mon texte entre ensuite dans la réalité qui m'y a conduit.
Un client à moi a effectivement créé un modèle de feuille de données, qu'il maintient depuis sur différents chemins réseau, chacun associés à un projet. Différents collaborateurs alimentent ces feuilles en données, s'appuyant sur le verrouillage d'écriture de la feuille en réseau. Ces feuilles contiennent donc une information détaillée que mon développement ne connait pas. Ce décideur aurait pu me commanditer pour développer cette structure au sein de mon application. Mais, au-delà du coût et au-delà du délai, il sait très bien que je lui procurerais quelque chose de figé et sans doute pas aussi pratique qu'une feuille contenant, en plus de la personnalisation, des macros qui peuvent être développées à l'occasion par un bon bidouilleur de la boîte. En effet, la feuille type, en plus des données structurées, contient des colonnes plus ou moins spécifiques à un projet et donc plus ou moins mouvantes.
Nous voici dans le vif du sujet : ce client m'a fait venir pour faire exactement ce que la citation déconseille fortement de faire : il voulait une feuille récapitulative contenant la somme de toutes les feuilles réparties sur le réseau, afin de faire dessus ce que chaque feuille locale permet, c'est à dire, trier, sélectionner, lancer des macros, etc. En me commandant ce développement, il prenait implicitement en charge le point crucial du développement : la responsabilité des données dans les feuilles. Il me suffisait de bien programmer les exceptions pour satisfaire sa demande. Je n'avais pas ce jour là le recul que j'ai ici et maintenant, j'ai juste travaillé comme d'habitude : au mieux. Au bout de la journée, j'ai réalisé que j'étais revenu sur un ancien projet expérimental très amusant et passionnant, mais dans sa vérité la plus épurée. Ce qui arrive parfois, rarement, quand on travaille à l'essentiel du besoin client, c'est de voir finalement une chose nue dans sa plénitude. Cette journée de programmation là parmi tant d'autres m'a bouleversé. Ce client, je crois, ne s'est pas encore rendu compte du potentiel de ce que j'ai ainsi fabriqué, "vite fait".
Si j'écris ici, c'est pour que, si vous comprenez mon point de vue, vous me donniez le votre et, encore plus grand luxe pour moi, l'éventuel avis de vos clients, si vous en avez d'assez disponibles pour entendre et comprendre ce que peut faire un tel outil de maîtrise entre leurs mains.
Vous avez compris la situation, je la résume. Nous avons ces rôles :
- l'analyste ;
- le responsable ;
- l'opérateur ;
- le bidouilleur ;
- le développeur.
L'analyste est implicitement le responsable, mais les deux rôles sont distincts. L'opérateur est bien sûr responsable des données qu'il manipule, données que le responsable hiérarchique vérifie et valide nécessairement à chaque demande de récapitulation. Le bidouilleur est un développeur débutant qui ne sait pas organiser un projet, mais qui sait plus ou moins manipuler certains objets du développement et coder des macros : toute entreprise est susceptible d'avoir ce genre de talent plus ou moins révélé. Le développeur n'est là dans cette idée que temporairement, pour fabriquer l'outil : il est entièrement dégagé de la maintenance de ce que gère cet outil, c'est à dire des données et de leur définition... c'est le but.
Et nous avons ces étapes :
- design : une feuille modèle dessinée par un acteur de l'entreprise qui n'est ni développeur ni bidouilleur, l'analyste, avec pour toute norme des noms de colonnes en guise de déclaration d'entêtes de table de base de données. Un bidouilleur ou un développeur peuvent venir insérer des macros de présentation, d'analyse, d'impression, etc. à la feuille modèle ;
- répandre : ce modèle est réparti sur le réseau, là où les opérateurs peuvent les trouver naturellement ;
- développement : l'outil fabriqué par le développeur dépend de son site d'application. Il est renseigné sur ces différents paramètres :
- le chemin réseau du modèle ;
- la liste des chemins réseau où trouver les feuilles de données ;
- le contenu d'au moins une colonne supplémentaire incontournable pour le récapitulatif, qui informe la ligne de sa provenance, en l'occurrence chez mon client le nom du projet ;
- le chemin réseau du récapitulatif ;
- génération : le responsable lance un code qui lui retourne en premier lieu la validité des feuilles et en second lieu le récapitulatif demandé, qui est bien entendu une copie du modèle initial dans lequel les contenus de toutes les autres feuilles est ajouté par le code.
Cet outil a pour premier effet l'officialisation du regroupement des sources, et leur validation. C'est précisément ce qui permet de transgresser en toute sécurité l'injonction que j'ai donnée en citation. C'est cela qui est décisif, c'est cela que je veux vous faire percevoir.
Chez mon client, je n'ai fait qu'insérer ce petit développement dans la structure bien plus vaste de mon déploiement, qui contient déjà tout naturellement les paramètres requis.
Ce qui débouche de ce petit travail spécifique, c'est l'idée de développer expérimentalement ce concept de façon complètement indépendante, à travers une feuille de code d'administration des modèles, modèles aux déclarations forcément étoffées d'une page de paramètres, dans le but d'autonomiser complètement le processus. La finalité, c'est que le développeur n'ait pas à intervenir quand un acteur décide de gérer de la donnée imprévue en mono-table(2), multi-poste et/ou multi-utilisateur, lui donnant la capacité à être ce qu'il est, un analyste, et à matérialiser lui-même ses besoins sur le réseau, ceci avec le contrôle élémentaire, nécessaire et suffisant, des paquets d'information.
Cette idée m'est littéralement tombée dessus l'autre jour. J'en ai déjà rêvé avant, c'est pourquoi j'ai pu la reconnaître. En confiant à l'analyste non programmeur plus de contrôle sur ses sources hétérogènes qui sont légion, il pourra améliorer pas mal d'organisation en entreprise, je le crois. La clef réside dans le regroupement déclaratif des ressources, c'est à dire dans un passage au niveau "méta" impliqué par un outil générique au départ très modeste, débouchant sur la fiabilisation, au départ problématique, des sources par la responsabilisation des acteurs, faisant sauter un important verrou qui permettrait de faire passer le tableur de rudimentaire à assez bon dans la gestion de bases de données(3).
(1) Quand il y en a un, qui est de toute façon débordé et frémit d'anticipation à chaque intervention sur la construction qui n'est même pas nécessairement la sienne de part en part.
(2) Le relationnel est largement envisageable, mais en faisant passer ce développement à une strate supérieure de complexité déclarative pour l'analyste/le designer.
(3) En attendant que les vrais logiciels de bases de données dépassent enfin leur archaïque et autistique limite, c'est-à-dire leur incapacité crasse à communiquer sur une structure commune étendue en dissociant l'élémentaire de l'élémentaire, c'est à dire la donnée de l'interface utilisateur. C'est ce que démontre, pour ceux qui s'en souviennent ici, Nakedata.
Partager