Un problème, une solution
Aaaah les Shadoks ! Le souvenir de ces 3 minutes diffusées sur la première chaîne chaque soir à 20h30, après le JT. Mon frère et moi nous précipitions devant le téléviseur noir & blanc (Papa et Maman n'avaient pas encore de poste couleur à l'époque) et…
Oh boulette… Oooooh la boulette !
Nous n'étions pas nés 😁
Bon, revenons à nos moutons. Si pas de solution implique pas de problème, alors par contraposée, tout problème a une solution.
Ce serait beau, hein ? Trop beau, bien sûr.
Et pourtant, c'est bien ce qu'on nous enseigne du CP jusqu'à la Terminale.
Un train quitte Paris à 6h et roule à 56km/h. Un autre train quitte Lyon à 8h et roule à 69km/h. Sachant que la distance entre Paris et Lyon est de 512km, à quelle heure les trains vont-ils se croiser ?
Aucune ambiguïté, une solution unique (que je n'ai même pas envie de calculer), unique parce qu'il le faut. Oui, il faut bien enseigner quelques bases mathématiques, apprendre à poser une équation, la résoudre etc. Et puis donner systématiquement une note. Ça, c'est plus discutable, mais là n'est pas le sujet.
Sauf que la vraie vie, c'est tout le contraire :
- On sait qu'il y a un problème mais on n'arrive pas à mettre des mots dessus (exemple : je n'arrive pas à tester mon système dans son ensemble, question angoissante au possible) ;
- On ne sait pas s'il y a une solution ;
- Et s'il y en a plusieurs, on ne sait pas laquelle choisir.
Avec tout ça, on n'est pas dans la 💩.
Et là, le fait que les 2 trains se croisent à 11h12 ne va pas tellement nous aider (1)…
Donc après des années à poser des bases qui restent essentielles, l'enjeu principal des études supérieures, c'est la "dé-scolarisation". Comprenez : l'apprentissage d'un mode de pensée moins scolaire, histoire de se préparer à un monde VUCA.
Tout l'enjeu réside dans l'analyse du problème : identifier les composantes à l'œuvre, les leviers d'action, prioriser sur base des enjeux métier. Le pragmatisme devient alors une qualité incontournable.
Au final, on en revient toujours à Einstein, qui avait tout dit avant tout le monde :
"Si j'avais une heure pour résoudre un problème dont ma vie dépendait, je passerais les 55 premières minutes à chercher la meilleure question à me poser, et lorsque je l'aurais trouvée il me suffirait de 5 minutes pour y répondre."
Pour conclure, rajoutons la dimension collective. Peut-être la solution A est-elle meilleure que la B dans l'absolu. Mais si elle ne fait pas consensus, elle ne sert à rien, et mieux vaut encore la solution B que pas de solution !
C'est très visible dans une codebase : pas de solution, ce sont des pratiques divergentes, "là le code d'Hippolyte" et "là le code de Cunégonde". Reprendre le code d'un tiers devient alors très difficile.
Mieux vaut donc une pratique perfectible mais partagée que des pratiques divergentes : ce sera toujours plus simple à refactorer.
Ainsi, la meilleure solution est avant tout celle qui convient aux individus et à l'équipe.
Je considère que mon rôle en tant que coach technique, outre celui de former, est de faire émerger un consensus, technique et organisationnel. Mon rôle est de faciliter la prise de décision même si cette dernière n'est pas celle que j'aurais le plus volontiers favorisée.
Qu'un développeur fasse du Test-driven development "parce que le coach me l'a demandé" serait un échec pour moi (2). Je préfère que l'on me dise "honnêtement, ce n'est pas mon truc" : au moins, la discussion est ouverte.
À la semaine prochaine 👋 !
(1) Ah ben finalement j'ai fait le calcul.
(2) Voir à ce sujet l'excellent article de Martin Fowler : https://martinfowler.com/articles/authorial-stance.html