Loi de l'instrument : vous n'y échappez pas.

Loi de l'instrument : vous n'y échappez pas.
Photo de Jozsef Hocza sur Unsplash

On doit à A. Maslow (oui, le même !) la formulation de ce biais cognitif :

"Si le seul outil dont vous disposez est un marteau, il est tentant de tout traiter comme s'il s'agissait d'un clou."

Elle fait des ravages dans l'informatique. Voyez plutôt :

  • Je suis un développeur front-end, donc toute la logique de mes applications est mise en œuvre côté front, sur le navigateur. C'est comme ça qu'on m'a montré dans le bootcamp. Le back-end ? Vous voulez dire le code qui permet de parler à la base de données ?

  • Je suis un développeur back-end, donc je fais du back. Dans mes rêves les plus fous, l'utilisateur final tape directement mon API. Dans la vraie vie, puisqu'il faut un front, je génère les pages côté serveur. Pas besoin de plus : les SPAs, c'est un truc de fronteux qui passent leur temps à fixer du CSS. L'expérience utilisateur ? Connais pas.

  • Moi, mon truc, c'est le domaine, la modélisation, le DDD. Par contre, le SQL, pas trop trop. Alors pour mes relations 1–1, je requête la base de données une première fois, ça me donne la clé étrangère, et puis je lance une seconde requête. Pour les relations 1–N, je vous laisse deviner comment je fais. Les jointures ? À la main, mon cousin, dans le domaine.

  • Moi, au contraire, je pense SQL, je vis SQL, je suis SQL. SQL is everything. Mon chien s'appelle "Sequel". Le domaine ? Pas de problème, je m'en charge : des procédures stockées et des triggers. C'est pratique : tu mets tout dans la même base de données et tout se passe là-dedans. Couplage ? Qué couplage ?

Vous m'avez compris.

Attention, il n'y a pas de jugement de valeur : nous avons tous nos préférences, nos tropismes. Moi le premier : je viens du front, du JavaScript, et ça me vaut les railleries éternelles d'un certain Stéphane Dalbera 😉 C'est mon péché originel, ma croix en tant que développeur.

Bon, mais comment échapper à la loi de l'instrument, alors ?

Eh bien comme souvent, en avoir conscience est déjà une bonne chose. Je suis malade, mais je me soigne. Au-delà, il n'y a pas de solution miracle : il faut apprendre à se servir d'autres outils. SQL vous fait peur ? Faites du SQL. Ça n'est pas plus compliqué qu'autre chose.

À notre décharge, il faut dire que les écosystèmes de développement regorgent d'outils qui favorisent le moindre effort. Je pense en particulier aux librairies ORM (object-relational mapping), qui nous offrent le confort d'interagir avec une base de données en manipulant des entités dans un langage qui nous est familier (Java, C#, JavaScript etc.)

Ces outils ont à peu près tous les inconvénients :

  • Ils vous évitent d'apprendre le SQL, qui est pourtant un standard incontournable.

  • Ils vous obligent à apprendre leur propre API, c'est-à-dire leur propre syntaxe. Quitte à faire un apprentissage, pourquoi ne pas apprendre directement le SQL ?

  • Ils fonctionnent bien pour les 80% de cas simples mais vous compliquent la vie pour les 20% de requêtes complexes, notamment celles qui requièrent de l'optimisation. Pour ces requêtes, vous serez de toute façon obligé de revenir à du SQL natif, et là bon courage puisque vous n'en écrivez jamais.

Voilà (ça, c'est de la conclusion).

Subscribe to Mathieu Eveillard

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe