L’importance de l’usine logicielle, expliqué à mon patron

Durant plusieurs années nous allons développer des logiciels. C’est une nouvelle activité pour l’entreprise. Ils seront utilisés en interne (back-office), par les professionnels du domaine de l’entreprise et par des clients externes, des particuliers. Ce seront des services en mode Web. Je suis en responsabilité sur ces développements et tu aimerais que ces développements se fassent dans des délais records. Vite et bien ne vont pas toujours bien ensemble.

Il faut comprendre que durant les premiers mois de développement, nous n’allons pas uniquement développer une première solution, nous allons surtout poser les fondations des développements futurs qui vont s’échelonner sur plusieurs années. Ces fondations vont déterminer la productivité des développeurs qui vont nous rejoindre, mais aussi la charge de travail pour la maintenance des systèmes et in-fine, la qualité des services rendus aux utilisateurs finaux, nos clients.

Je vais faire un parallèle un peu simpliste. Au début, nous allons passer une partie de notre temps à construire une usine, non pas à produire ce que l’usine est censé fabriquer. Si, par exemple, nous fabriquons une usine qui produit des aspirateurs, la conception de l’usines est déterminante :

  • On ne produit rien sans une usine, sans une production à la chaîne mécanisée, donc il nous faut une usine – sinon c’est de l’artisanat, à des coûts incompatibles avec le marché car chaque aspirateur est alors une pièce unique.
  • Les défauts de conception d’une usine se traduisent par une baisse de la productivité des ouvriers, des dysfonctionnements dans la production et des problèmes de qualité dans les aspirateurs livrés.
  • Ces défauts se traduisent par une sanction sur le marché : les clients, mécontents, vont se tourner vers d’autres fournisseurs.

La conception de l’usine est fondamentale, car elle définit comment les ouvriers vont travailler et quel est le niveau d’expertise nécessaire des ouvriers. Une usine ne se change pas facilement : il y a des choses que l’on peut faire évoluer au fur et à mesure qu’on avance dans la production (l’équipement, l’organisation, les processus, la distribution des taches, etc), et des choses que l’on ne peut pas changer facilement, voir que l’on ne peut pas changer du tout (la taille du bâtiment, les ouvrants, l’orientation du bâtiment, le câblage, les puissances, les limites mécaniques des dalles, etc).

C’est pour cela que, dans un premier temps, on confie la conception des usines aux personnes les plus compétentes que l’on est capable de se payer. Si on est capable de prendre les meilleurs ingénieurs, bureaux d’étude ou prestataires, on le fait, car nous amortissons cet investissement sur la productivité de chaque ouvrier, sur le coût de revient des aspirateurs, sur la baisse des retours en SAV. Dans certains cas, pour des projets industriels stratégiques, des entreprises prennent plusieurs équipes (cabinet, prestataires) pour qu’ils surveillent, valident, certifient mutuellement les choix et travaux qu’ils réalisent.

Encore une fois, l’enjeux de la fabrication d’une usine est souvent de permettre d’avoir des ouvriers faiblement qualifiés : si l’usines est tellement compliqué qu’il faut des ingénieurs pour produire et assembler nos aspirateurs, le prix de nos aspirateurs sera hors marché. C’est ce que font certains constructeurs automobile très haut de gamme : certaines voitures sont assemblées à la main par des ingénieurs payé 4 fois plus qu’un ouvrier de chez Renault. L’objectif est bien d’avoir un outil de production aligné sur le marché, compatible avec le ratio volume / prix cible et donc concevoir l’usine en fonction de ces contraintes.

Dans le domaine du logiciel, c’est un peu la même chose. L’usine s’appelle l’architecture, l’intégration continue, le processus qualité, la stratégie de déploiement et de mise à jour, l’automatisation de l’infrastructure, les processus de maintenance, les critères de disponibilité, le plan de continuité, l’anticipation des situations critiques, etc. Ce qui est produit, ce sont des fonctionnalités pour les utilisateurs finaux. La fonction de l’usine logicielle est d’assurer la production de ces fonctionnalités et assurer leur accessibilité par le client et les utilisateurs finaux dans les meilleures conditions. Quand on a défini toutes ces fondations logicielles, on a défini la manière dont les développeurs, les devOps, les administrateurs, des designers, les ergonomes vont travailler durant des années, car une usine logicielle ne se change pas facilement. Quand on a pris de mauvaises décisions au début, on en subie les conséquences durant des années. Dans certains projets logiciels, quand ces décisions ont été réalisées par des personnes qui manquaient d’expérience, cela s’est terminé par une réécriture de la totalité du logiciel quelques années plus tard. L’impacte sur l’entreprise sont importants.

Ma mission consiste à anticiper les besoins à court, moyen et long terme :

  • Une infrastructure distribuée entre ordinateurs sur site et dans les Data-Center.
  • Des modules logiciels relativement nombreux et divers, qui devront être développés par des personnes moins qualifiées, moins chers si elles sont nombreuses.
  • Un nombre de développeurs, devops, et assistants en croissance, pouvant se compter en dizaines de personnes – d’où la nécessité de ne pas recruter que des expérimentés, mais d’avoir une usine logicielle et des processus qui permettent de recruter des juniors sans sortir de nos exigences en termes de qualité.
  • La volonté de faire des fonctionnalités grand public. Cela veut dire un niveau de qualité perçu similaire à ceux de Google ou la Sncf, bien au delà du petit outil interne moyennement bien finit.
  • La nécessité d’un haut niveau de sécurité des données propres à chaque client, à chaque utilisateur et d’un haut niveau de fiabilité parce que cela touche à la sécurité des personnes.
  • Une maintenance centralisée et automatisée.
  • Un support pro-actif.
  • Etc.

Tu conviendra que ces exigences sont inflexibles. Sans une usine logicielle et une architecture bien pensé pour répondre aux critères de qualité exigés par le marché sur lequel nous allons, je te le dis, point de salut !

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s