L’app à 100 millions d’installations

Salut,
Dans mon email précédent je te racontais comment j’en étais arrivé au point d’avoir la boule au ventre en venant travailler alors que j’adorais mon travail. 
Je m’étais fait la promesse de ne plus retomber dans le même piège, asservi par le monstre spaghetti.

Je profitais de cette occasion de recommencer à zéro pour revoir complètement ma manière de coder. 
C’était un défi incroyable car il fallait que je dés-apprenne les réflexes que j’avais acquis pendant des années.

Au bout de quelques semaines, nous avions un prototype montrable (aujourd’hui on dirait un MVP) que nous avons pu emmener au CES de Las Vegas, la grande messe annuelle technologique.
Nous avions pris les derniers euros du compte en banque pour payer les billets d’avions et nous squattions la chambre d’un ami pour économiser l’hôtel.

Et tu veux savoir le plus dingue de cette histoire?

Mes démos marchaient.

Toutes.

Fini murphy.

J’étais devenu serein et j’avais confiance dans ce que j’avais produit.
Même si l’app faisait vraiment peu de choses, elle le faisait bien. 
Alors j’enchainais les démos… Jusqu’à LA démo.

En voyant arriver ce petit monsieur au ventre rebondis, j’ignorais, et tant mieux, qu’on jouait le contrat de notre vie.
J’avais commencé à me méfier en voyant mon boss et notre prospect devenir tout blancs.
Je me doutais que ce petit monsieur était important, mais je m’efforçais de sortir ça de ma tête pour faire la meilleur démo possible.
Et tu sais quoi ? C’est passé comme une lettre à la poste.

Ce petit monsieur était juste l’inventeur de la mémoire flash et fondateur d’une belle boîte du Nasdaq. 
Après cet échange, on a eu le feu vert pour distribuer l’app qu’on était en train de fabriquer. Au bout de quelques années, nous avions distribué des dizaines de millions d’exemplaires de l’app pré-installé sur les clefs USB et les disques durs portables de grandes marques renommées dans plus de 150 pays. En fait, tu as même probablement été utilisateur de notre solution dans les année 2002 à 2008 si tu as acheté certaines clefs USB ou disques portables.

Pour commercialiser la solution, j’ai voyagé dans le monde entier sur les plus grands salons et c’était trop cool !

Le plus intéressant dans cette histoire un peu folle c’est que la solution, je l’avais sous les yeux depuis longtemps. Cela faisait un moment que j’avais acheté le livre qui allait me donner les clefs pour écrire du code durable, me permettre de coder à la vitesse de l’éclair tout en restant complètement serein pour le passage en prod et rendre mon quotidien *beaucoup* plus épanouissant.

Mais en première lecture je n’avais retenu que ce qui m’intéressait. Jusqu’à ce jour où je me suis fait la promesse de changer les choses. 
Alors j’ai repris mon livre et je l’ai étudié à fond. Je l’ai tellement usé à force d’en retourner les pages, qu’elles finissaient par se détacher et j’ai du en acheter un autre.

Tu veux savoir quel est ce livre?
Tu veux, toi aussi, comprendre ce qui a changé ma vie de développeur ?
Je te raconte tout ça dans mon prochain email…

D’ici là, je t’invite à venir  découvrir le cursus Artisan Développeur  : c’est une synthèse de 20 ans de vie professionnelle à coder et transmettre.

Si tu as la moindre question, je suis à ton écoute.
A demain.

Benoit Gantaume
Artisan Développeur

Le p’tit jeune qui se prenait pour un cador

Salut,
Je vais te raconter une histoire qui pourrait changer ta vie si tu es développeur : fraîchement sorti de mon école d’ingénieur, je me prenais pour un cador.
Je codais depuis l’âge de 14 ans et je murmurais à l’oreille des ordinateurs.
Il faut dire que j’avais des facilités. J’avais l’impression que mon cerveau était câblé comme un microprocesseur. 
Mais comme disait Brassens, sans technique le talent n’est qu’une sale manie.

Pour m’en rendre compte, il m’aura fallu taper un mur…

Ce mur c’était le spaghetti monster.
Il m’avait mis à terre, mais j’allais me relever.

La côté positif dans cette histoire, c’est que je ne pouvais guère m’en prendre qu’à moi-même. J’étais entré stagiaire dans cette boîte et rapidement je me retrouvais seul à prendre en charge tout le coeur de l’application : un algorithme de tri d’emails.
Bon, on était en 2000, à cette époque l’IA n’existait pas encore et on codait ça à la main.
Au bout de quelques mois je ne maîtrisais plus rien.
Tel Frankenstein, j’avais créé un monstre dont je perdais le contrôle et qui me soumettait à sa volonté, au gré de ses caprices et des aléas du jour.
Le pire moment c’est quand on fait planter le serveur d’emails d’un grand quotidien régional à cause de notre produit. La grosse cata…

Le truc c’est que je prenais ça très à coeur, et je portais ce fardeau tel Frodon qui porte l’anneau.
Je me souviens encore de sentir mon estomac se nouer à chaque fois qu’on me remontait un bug, du stress de devoir annoncer un délai ou une estimation sans savoir si j’allais pouvoir la tenir.

Le pire, c’est que je la voyais l’oasis : comme un voyageur assoiffé, perdu dans le désert, pris par l’illusion du ciel qui se reflète dans les dunes, je croyais chaque semaine que la prochaine serait la dernière. C’en serait fini de cette traversé du tunnel et je serai enfin libéré : j’allais terminer le dev.

Enfin on pourrait commercialiser la solution et assurer les salaires sans être obligés tous les jours d’attendre que la dernière subvention arrive.
La libération a fini par arriver, même si ce n’était pas celle que j’attendais…

On arrêtait le projet.

On allait récupérer tout le savoir faire acquis sur la première application pour en faire une autre avec un potentiel commercial plus prometteur.
Alors ce jour là je me suis fait une promesse : plus jamais ça.

Je ne sais pas si tu as déjà vécu ce genre de sensation.
C’est le genre de moment qui définit un avant et un après. Cet instant où ta détermination est telle que tu sais que quoi qu’il en coûte, tu vas changer les choses.
Comment ? A ce moment, on en sait rien. Mais ça doit changer.

Je ne revivrai plus jamais ce stress dévorant, ces angoisses à me réveiller la nuit, ces longues heures stériles à chercher en vain des bugs perfides.

Je ne te cache pas que je suis passé par une phase difficile qui m’a donné mal à la tête plus d’une fois. Mais j’y suis arrivé.

Veux-tu savoir comment, après toutes ces épreuves, j’ai parcouru le Monde et distribué des millions de copies de cette nouvelle app dans 150 pays?

Alors, à demain…

D’ici là, je t’invite à venir découvrir le cursus Artisan Développeur, qui condense tout ce que j’ai appris sur mon chemin. 
https://artisandeveloppeur.systeme.io/cursus-artisan-developpeur

Benoit Gantaume
Artisan Développeur

Les racines du projet Artisan Développeur

Salut,
Aujourd’hui je vais te parler des racines du projet.
Après plus de 6 ans à porter ce projet, il n’est pas trop tard pour en expliquer les racines…

Le poing levé fait clairement référence à la révolution. Mais contre qui ?
Un indice : la roue crantée fait référence à l’industrie.
Le thème graphique ainsi que l’étoile à 5 branches renvoie à la lutte soviétique.
Pourquoi 3 étoiles ? 3 est le symbole de l’apprenti.
Pourquoi 5 branches ? 5 est le symbole du compagnon.
Pourquoi une étoile ? Elle nous guide dans l’obscurité.

Alors non, je ne suis pas devenu un marxiste ésotérique sur le tard, quoi que…

Ce logo, c’est pas juste un design.

C’est une revendication.

Une revendication contre l’industrialisation.
Quand je l’ai pensé, j’étais en colère contre les donneurs d’ordre qui achètent du temps de développeur comme on achète des tomates au marché :
“Vous me mettrez 3 mois de NodeJS/React, bien mûr s’il vous plaît”.

D’ailleurs, pendant longtemps, voici ce que tu pouvais lire sur le site :

“C’est avant tout une revendication faite par des professionnels passionnés par leur travail. Nous le considérons comme un art. Notre quête d’excellence est l’étoile qui nous guide. Notre recherche du beau s’exprime autant dans le visible que l’invisible.

Une revendication à contre courant de ceux qui veulent industrialiser notre métier ou ceux qui négocient les développeurs au kilo.

L’industrie reproduit des milliers de fois la même chose. Elle standardise et rejette tout ce qui sort de la norme. Au contraire l’artisan produit chaque jour quelque chose d’unique. Notre métier relève autant d’un processus créatif que technique.

Si cette revendication fait écho, rejoins-nous !”

L’industrialisation cherche à gommer les différences, rendre les gens remplaçables et interchangeables.
De là à dire qu’elle appauvrit les développeurs en les enfermant dans des logiques productivistes, c’est un pas largement franchi dans plusieurs entreprises.

Hum… J’ai peut-être trop lu Marx…
C’était juste l’abbrégé, rassure toi !

Derrière cette revendication, il y a l’envie d’aider mes confrères à s’émanciper : de leur boss qui ne comprend rien à leur métier, de leur PO qui a pour seule mesure d’avancement le nombre de points de vélocité.
S’émanciper et prendre leur part de pouvoir pour gagner leur dignité, être fier de leur travail et prendre du plaisir à faire ce métier.

Faire une révolution, non pas violente, mais ferme : prenons le droit de faire du bon boulot.

Mais attention, avec le pouvoir viennent les responsabilités.

Cette responsabilité, c’est non seulement de donner le meilleur de nous même, mais aussi de travailler à faire mieux chaque jour.
Pour ne plus être traités comme de simples exécutants, encore faut-il se comporter comme tel : la première révolution est donc intérieure.

C’est pour ça que je me passionne pour le craft : je vois le chemin technique comme un levier d’épanouissement.
En devenant bon techniquement, je prends du plaisir à faire ce que je fais.
Quand j’apporte de la valeur à mon client par un travail de qualité, je suis fier de moi.

Cette fierté n’est pas un dû, elle se mérite.

A nous, de manière responsable, de monter le niveau d’exigence, d’imposer des standards de qualité élevés.
Pas juste pour se faire plaisir : pour être fier de notre travail et servir au mieux l’entreprise qui nous paye.
J’ai attaqué la lecture d’un livre sur le DDD. Certes j’ai apprécié la palette d’outils mise à disposition. 
Mais ce qui m’a le plus frappé en première lecture, c’est le lien direct que l’auteur faisait entre la capacité à concevoir du code durable et la performance économique de l’entreprise. 
Je l’ai toujours pensé et ça fait du bien de voir d’autres le dire aussi distinctement.

Donc en faisant du bon travail, on rend service à nos entreprises.
Le souci, c’est que les donneurs d’ordre ne le comprennent pas toujours.
A nous de relever le niveau, quitte à être confrontants.
Après ça dépend de la culture de ta boite : si la culture est celle de l’échange et du partage, alors ça sera d’autant plus simple, rapide et vertueux.
Si la culture est celle de la domination et de la confrontation, a nous de nous opposer.
Personnellement, je sais ou je préfère travailler.

Pour y arriver, il faut commencer par monter son niveau technique.
C’est pour ça que j’ai mis au point le Cursus Artisan Développeur : aider les développeurs à élever le niveau en conception de code.
D’ailleurs, pour la première, et probablement dernière fois, je fais une promotion du le cursus complet : -60%.
Si tu hésitais à t’inscrire au cursus, c’est le moment d’en profiter. La promotion termine dans 10 jours.

Donc si tu as envie d’apprendre à écrire du code durable, tu peux venir jeter un oeil ici : 
https://artisandeveloppeur.systeme.io/cursus-artisan-developpeur

Cette responsabilité, c’est aussi de rester pragmatique et éviter de tomber dans un dogmatisme stérile. Car si le savoir-faire technique est important, il est par contre insuffisant pour travailler en équipe efficacement.
Peut-être l’occasion d’un autre email…

A bientôt,
Benoit Gantaume
Artisan Développeur

TDD or not TDD ? On a remis ça avec Kevin

Oups, je l’ai encore fait.

J’ai posté un truc pour chauffer mon ami Kevin (que j’apprécie vraiment, c’est pas juste une tournure de phrase). Et c’est encore parti en sucette.

Il a répondu via un post, et là, c’est parti en bataille rangée.

Si tu regardes bien, chacun a rallié son camp : les pro-TDD VS les on-peut-faire-sans-TDD.

Au-delà des tacles biens sentis, il faut dire qu’il a une sacré répartie Kevin, on trouve des questions et remarques qui m’ont fait réfléchir. Autant faire quelque chose d’utile de tout ce bruit.

“Si en 4h sans TDD tu as des régressions en cascade : change de métier.”

Uppercut direct au foie. Il m’a fallu un petit moment pour l’encaisser celle-là.

Suis-je devenu mauvais ?
Ai-je été bon un jour ?
Qu’est-ce qui fait que je reste convaincu de ma démarche ?

J’avoue que le doute s’est instillé.

Et c’est un commentaire qui m’a donné la réponse : “Je pars du principe que le code que j’écris marche et je vérifie ensuite”.

Alors que pour moi c’est tout l’inverse : je pars du principe que je vais faire des erreurs. Du coup je code d’une manière qui me rassure. Et le TDD rassure beaucoup.
Ce n’est pas sa seule vertu, et ce serait dommage de réduire le TDD à des tests, et en même temps, c’est le cœur de la démarche. Parler de TDD sans test est juste un non sens.
Car les tests rassurent : que le code marche, que je vais pouvoir le faire évoluer, que je suis sur la bonne voie vers l’objectif.

Alors oui, quand j’étais jeune, mon cerveau était capable de coder des heures entières sans le moindre de test, mais la charge cognitive n’était pas la même. 

Coder sans TDD, c’est juste super fatigant : le TDD est au développement ce que le GTD est à la productivité. Un outil pour baisser la charge mentale et garder son énergie pour ce qui permet de créer de la valeur. 

Est-ce que tu apportes plus de valeur en te demandant ce que tu vas ou pas casser, comment tu vas designer ci ou ça, ou bien en créant les fonctionnalités qui vont ravir tes utilisateurs ?
Et bien sûr que tu peux faire les deux. Mais je suis convaincu que l’énergie se dissipe.

Alors est-ce que je n’en suis plus capable ?
Est-ce que je suis devenu mauvais parce que je n’anticipe pas les régressions que je pourrais causer ou que je préfère me laisser guider par les tests pour concevoir mon app ?

Peut-être. 

Ou alors peut-être que je n’en n’ai juste plus envie parce que j’ai trouvé une autre manière de faire beaucoup plus efficace et satisfaisante. Difficile de faire la part des choses. En tout cas, je pense que je suis devenu inadapté pour travailler sans.

D’ailleurs j’adorerais bosser sur un gros chantier de refactoring pour tester l’expérience. Et si tu veux connaître la démarche que j’applique pour aider mes clients à reprendre en main leur legacy, c’est ici et c’est gratuit.

“Twitter, instagram bossent sans TDD”

Alors dans la série des arguments foireux, celui-là tient la palme.
Depuis quand le nombre ou la taille est un argument recevable ?
On se fait un rappel historique ? Certains dictateurs ont été élus par suffrage…

Ensuite, mentionner des boites qui ont des moyens quasiment illimités est-il bien sérieux ?
J’ai eu le plaisir d’inviter le lead dev android d’ubber sur le podcast. Ils ont réécrit l’app 3 fois, tous les deux à trois ans environ.

Il faut être lucide : peu de sociétés ont autant de moyens. Dans mon quotidien, je vois surtout des start-up qui calent au moment de monter en pression et qui n’arrivent pas à financer un re-développement. Les devs restent englués dans un code qui les engloutit petit à petit et le business avec.

Peut-être que les start-ups ont plus de moyens outre atlantique, c’est bien possible. Mais ce n’est pas le reflet de ce que je vois en France. 

Une question d’efficacité

On m’a reproché de parler de régression en cascade pour un pauvre changement de champ de base qui générait une régression non anticipée.

Comme si j’en faisais des caisses pour pas grand chose. Ok je suis Marseillais dans l’âme et à moitié Italien. Mais il y a plus que ça.

Je pense que j’ai développé une sensibilité élevée à la perte d’efficacité.
Du coup, je me suis demandé comment je pourrais objectiver ce ressenti :

  • Je me rends compte que quand je dois ouvrir l’app à chaque modification pour me rassurer, je commence à être tendu.
  • Quand l’idée d’implémenter un algo basique me rebute, c’est que je suis sur une mauvaise trajectoire.
  • Le pire : quand je ne me rends pas compte que je casse quelque chose au moment de coder. Là, je me tends beaucoup. Entendre par là : je lance l’app en pensant que ça va marcher et ce n’est pas le cas.

Alors je sais que pour beaucoup de développeurs ces choses sont banales. Pourquoi en faire tout un plat ?

Parce que c’est désagréable ! 
J’aime bien me savonner avec un gant doux et moelleux. A la rigueur un gant de crin peut avoir des vertus. Mais la brosse métallique, non merci.

Bien sûr qu’on peut développer de grosses apps sans TDD, des tas de développeurs le font au quotidien.

Mais est-ce efficace ?

La seule vraie question qui m’échappe est plutôt l’inverse : pourquoi faire sans ?

Et si Kevin avait (un peu) raison ?

L’expérience n’a pas été vaine. 

Je remets un peu de contexte : avec 2 amis, on se chauffe pour faire un bot telegram dans la crypto. Je suis super excité par le projet, mais…

Je ne connais ni le langage, ni la stack. J’ai toujours bossé à l’intérieur de la blockchain en écrivant des smart contracts, très peu de l’extérieur pour les opérer avec un bot.

Je n’ai jamais fait de bot telegram.

Le projet est plus un concept qu’un truc défini : on a une direction, quelques API à intégrer et roule.

Autant dire que le product-market-investors fit n’est pas encore là.

Pourtant j’ai très envie de poser quelque chose rapidement. Et je dois ingérer beaucoup d’informations nouvelles en peu de temps. Alors je fonce et je code un bot dans un fichier à plat de quelques centaines de lignes. 

0 design.

0 tests.

Tout ça donne une orgie de code sans laquelle toutes les couches se mélangent gaiement : la base de données échange directement avec la logique de génération de wallet. L’affichage se fait à même le traitement de données. La gestion d’erreur se mélange avec l’ihm.

Une hérésie.

Et c’était très bien : j’ai pu tester l’idée, me rassurer sur la faisabilité. Voir quelque chose qui marche donne envie de faire un pas de plus ce qui est motivant pour l’équipe.

Mais je tremble déjà à l’idée de mettre en prod en l’état : on parle de quelque chose qui pourrait manipuler des millions. Ça peut aller très vite dans la crypto. Et je ne serais pas serein de faire ça sans savoir que je vais pouvoir continuer à faire évoluer l’app tranquillement. Certains savent faire ça sans TDD. Moi j’en ai besoin.

Donc si aller droit au but et explorer a été vertueux pour découvrir, je sens que je perds maintenant en efficacité et qu’il est temps d’installer Chai.

En plus, ça va me faire du legacy à reprendre !

Tu veux dynamiter ton legacy sans te prendre la tête : clique ici.

Alors, est-ce que Kevin a raison ? 

Disons qu’il n’a pas complètement tort. Si j’avais ralenti le dev du prototype, peut-être que je serais encore à réfléchir à comment architecturer la couche métier et le momentum entre nous serait passé. Peut-être.

Mais attention : le monstre spaghetti grandit vite et peu de développeurs s’en rendent compte à temps. Considérer qu’on pourra tout jeter et refaire ne me semble pas très responsable. C’est peut-être moi qui en fait tout un plat. Après tout, si ce n’était que de l’argent, pourquoi pas. Mais je parle aussi de bien être dans son travail. 

On se le fait quand cet octogone ?

Ca n’apporterait pas grand chose au débat, mais ça ferait certainement une belle hype ! 🚀

On ferait des vidéos youtube de nos entraînements, on continuerait à se mettre dessus sur LinkedIn et on irait boire des bières après. ❤️

Code Legacy : Le mignon compagnon devenu monstre

Le Legacy peut devenir un monstre vorace !

Il était une fois, dans une petite start-up en plein essor, un jeune développeur nommé Léo. Lors de son premier jour, on lui présenta son compagnon : un petit bout de code, tout mignon, tout simple, destiné à être le cœur de leur nouvelle application. Léo était ravi. Il le nourrissait régulièrement de nouvelles fonctionnalités, et le code grandissait, s’épanouissait.

Continuer la lecture de « Code Legacy : Le mignon compagnon devenu monstre »

Identifier le code mort : Pourquoi et comment s’en débarrasser ?

Si tu es là, c’est que tu as peut-être déjà croisé ce fameux « code mort » qui traîne dans les recoins sombres de ton projet. Et si tu n’as pas encore osé le supprimer, tu n’es pas seul. Beaucoup d’entre nous hésitent, par peur de casser quelque chose. Mais laisse-moi te dire : un bon nettoyage n’a jamais fait de mal à personne ! Alors, comment repérer ce code inutile ? C’est parti !

Nettoyer son code mort, c’est comme élaguer un arbre
Continuer la lecture de « Identifier le code mort : Pourquoi et comment s’en débarrasser ? »

Refactoring de code : le guide pour bien débuter

Le refactoring est un travail continue de patience

Salut à toi, jeune padawan du code ! Si tu es ici, c’est que tu as entendu parler du refactoring de code et que tu veux te lancer.

Bravo ! Tu es sur la bonne voie.

Le refactoring, c’est un peu comme apprendre à entretenir ton vélo pour qu’il roule toujours bien. Alors, enfile tes gants de mécano, et plongeons ensemble dans ce guide pratique.

Continuer la lecture de « Refactoring de code : le guide pour bien débuter »

Négocier le craft comme un pro du FBI

Tu aimerais embarquer ton équipe dans le software craftsmanship, mais tu sens des réticences ? Cette mini série est faite pour toi.

Je m’inspire du livre de Chris Voss, Ne coupez jamais la poire en deux, pour te proposer des exercices concrets afin d’influencer ton équipe.

Et si tu veux aller plus loin, rejoins moi dans TCaftLab, c’est gratuit : https://systeme.artisandeveloppeur.fr/tcraftlab

Software Craftsmanship ou la déchéance ?

Suite aux attaques en règle de Kevin et le drama qui s’en est suivi, j’ai beaucoup réfléchi car j’entendais une petite musique qui me gênait.
Dans mon enthousiasme, et même une forme de ferveur, de défendre une cause noble à mes yeux, le bonheur des développeurs, j’ai eu l’impression de franchir une ligne rouge.
Alors je me suis remis en question.

Développeur perdu
Continuer la lecture de « Software Craftsmanship ou la déchéance ? »

Software craftsmanship & TDD drama

Comment en est-on arrivé là ?

C’est une bonne question. Intéressant de voir comment les choses dérapent, un peu au début, beaucoup ensuite ! 

Tout commence avec un post un brin provocateur de Kevin sur linkedin : 

https://www.linkedin.com/feed/update/urn:li:activity:6943520332855054336/

Continuer la lecture de « Software craftsmanship & TDD drama »