Et si on refaisait booking ?
Pour apprendre, rien de mieux que de partir d'un projet réaliste.
Les exercices d'entraînement au code se nomment des "katas". C'est un vocabulaire inspiré des arts martiaux. Souvent, les katas servent à s'entrainer à l'algorithmique.
Nous allons opter pour une approche différente, centrée sur l'architecture globale d'un projet.
Le brief
Un entrepreneur vous sollicite pour concrétiser son idée : une plateforme de réservation de maisons de vacances.
L'objectif est de faciliter la location des maisons inoccupées. Des vacanciers recherchent des maisons correspondant à leurs critères (dates de vacances, nombre de personnes), et peuvent effectuer une réservation en ligne si la maison est disponible.
Lorsque la réservation est faîte, le propriétaire et le vacancier reçoivent une notification par mail.
Ils finalisent les détails (contrat de location, paiement) hors de la plateforme ... pour le moment.
L'importance des mots
Arrêtons-nous sur le vocabulaire utilisé par le porteur du projet. Dans la suite, nous l'appellerons "Expert métier".
Abordons avec lui quelques questions.
- des "maisons de vacances" -> peut-on louer aussi des appartements ?
- des "propriétaires" -> la plateforme concerne-t-elle aussi des hôteliers ?
- des "vacanciers" -> peut-on louer pour d'autres raisons, comme un déplacement professionnel ?
- une "notification par mail" -> est-ce le seul mode de notification ?
- une "réservation" -> est-elle annulable ?
Avant de se jeter sur son clavier et de rechercher le nouveau framework tendance pour coder ASAP, commençons par des questions.
Le développeur doit s'imprégner du projet. Il doit parvenir à une vision détaillée et alignée avec celle du demandeur.
Ce dialogue sera la clé de réussite du projet. Loin devant la maîtrise des techniques de code.
Le langage ubiquitaire.
Mal traduit de "ubiquitous language", le concept est simple : votre code doit exprimer le métier.
Si j'ouvre n'importe quel fichier de votre code, je dois tout de suite comprendre que ça parle de réservations de logements locatifs.
Chaque nom de variable, de classe ou de fonction doit utiliser le champs sémantique de votre domaine.
Si vous louez des logements, on ne parle pas d'asset
, ni de subject
.
On parle de d' accomodation
en anglais ou d'hébergement
en français.
Français ou Anglais ?
Mais avant d'être rigoureux sur le vocabulaire, il faut choisir une langue.
Choisir.
Rien de pire qu'un code en franglish, mélangeant les 2.
Parlez-en avec le demandeur. L'enjeu concerne l'internationalisation du projet, en particulier si d'autres développeurs non francophones rejoindront le projet.
Voici quelques éléments pour aider à décider :
- pour un projet interne, destiné à une entreprise ou une association, dont les experts métiers ne sont pas à l'aise avec l'anglais, choisissez le français.
- pour un SaaS, disposant d'un potentiel de croissance et d'internationalisation, optez pour l'anglais.
Dans les 2 cas, mettez-vous à la place du porteur du projet qui n'est pas développeur : en ouvrant n'importe quel fichier de votre code base, reconnaîtra-t-il immédiatement son projet ?
Ici, nous codons un SaaS avec un potentiel à l'international. Donc on choisit l'anglais.