Interview de Quentin Adam

J’Ă©tais Ă  Devoxx en 2017 Avec mon trĂšs cher Florian OrpeliĂšre et nous avons rencontrĂ© Quentin Adam, CEO de Clever Cloud.

La relecture ayant traĂźnĂ© cĂŽtĂ© Quentin comme du mien, voici enfin l’interview. Mieux vaut tard que jamais.

Bonjour Quentin, comment ça va en cette fin de Devoxx ?

Ça va, c’est une fin de Devoxx du coup tout le monde est un peu fatiguĂ©.

Pour commencer, peux-tu nous parler un peu de toi et de ton parcours ?

Je m’appelle Quentin Adam, je dirige une boĂźte qui s’appelle Clever Cloud qui fait de l’IT Automation. Pour faire rapide, je suis dĂ©veloppeur, je l’ai toujours Ă©tĂ©. J’ai crĂ©Ă© ma premiĂšre boĂźte, qui faisait des jeux vidĂ©os, Ă  18 ou 19 ans, et depuis je crĂ©e des boĂźtes, mais essentiellement Clever Cloud.

Et maintenant tu as quel Ăąge si ce n’est pas indiscret ?

J’en ai 28 je crois.

«Tu crois» ?

Ouais, on est en fin de Devoxx…

Surtout que l’apĂ©ro fonctionnel hier Ă©tait dĂ»r ?

C’est Ă  dire qu’au dĂ©but je pensais qu’on allait faire du thĂ©Ăątre sur cette histoire d’apĂ©ro fonctionnel. AprĂšs ils m’ont dit «si si, on va boire un coup» donc j’avais pensĂ© qu’on boirait un coup de vin rouge. Non non, les mecs ont Ă©tĂ© acheter de l’eau de vie de poire. C’est pas du tout le mĂȘme dĂ©lire.

Ok, on reparlera de tout ça juste aprĂšs. Pour revenir Ă  Clever Cloud, en gros c’est quoi et comment ça se positionne par rapport Ă  d’autres solutions cloud ?

En fait, on fait de l’IT automation. En tant que dĂ©veloppeur, on tape du code et on l’envoie. Donc nous, on prend en charge les plateformes standards: le Node, le Java, tu peux faire du vieux JEE parce que souvent les gens nous disent ouais mais on peut pas faire du cloud. Non, tu peux faire du vieux JEE qui tourne dans un WebSphere… On en a…

Donc tu tapes ton code, nous on le dĂ©ploie. On va le monitorer, le relancer s’il se crash, on va sortir toutes les mĂ©triques dont on a besoin pour qu’il vive, on a des features d’auto-scalabilitĂ© oĂč l’on va mettre des machines plus grosses ou plus de machines et les rĂ©duire en fonction de la charge. On met Ă  jour tout l’OS qui est en dessous, donc tu n’as pas de problĂšme de sĂ©curitĂ© etc puisque c’est notre problĂšme.

Toi en fait, tu codes, tu git push et c’est tout. Et Ă  cĂŽtĂ© tu peux utiliser des database as a service, tu peux mĂȘme si t’as envie pousser un docker mais en gĂ©nĂ©ral t’as pas besoin.

Et le tout tourne aprĂšs dans des machines et tout, des machines virtuelles et pas des containers, ce qui fait qu’on s’entend bien avec les mecs de la sĂ©curitĂ©, parce que du coup de loin ça fait presque leur infra. C’est assez traditionnel.

Quelle est l’origine de la boĂźte, et comment tu en viens Ă  monter une plateforme comme ça ? C’Ă©tait quoi le besoin au dĂ©part, un truc perso ?

C’est exactement ça. En fait moi Ă  la base ça m’emmerdait de gĂ©rer les serveurs du coup j’ai commencĂ© Ă  automatiser la gestion des serveurs. Bon aprĂšs je me suis retrouvĂ© Ă  gĂ©rer plusieurs milliers de serveurs, mais en fait on s’en occupe pas beaucoup. Il y en a beaucoup, avec des milliers d’applications dessus, mais ils sont gĂ©rĂ©s par des robots donc on fait pas grand chose en fait dessus. Il y a une astreinte etc mais le tĂ©lĂ©phone d’astreinte, il ne nous rĂ©veille pas une fois par mois. C’est vraiment trĂšs automatisĂ©.

Et vous ĂȘtes combien chez Clever maintenant ?

Maintenant on est 12, avec l’arrivĂ©e de Laurent Doguin et Philippe CharriĂšre cette semaine.

On a vu il y a quelques temps un article sur la santĂ© de Clever Cloud, suite Ă  un redressement judiciaire. DĂ©jĂ , fĂ©licitations car c’est top de vous en ĂȘtre bien sortis, et du coup est-ce que ça va bien ?

Ça va vraiment bien maintenant en fait. La boĂźte s’est vraiment bien dĂ©ployĂ©e; ça a Ă©tĂ© trĂšs dĂ»r Ă  un moment, et il y a beaucoup d’emmerdes qui nous sont tombĂ©es sur le coin de la gueule en mĂȘme temps, et en fait Ă  ce moment lĂ . Il y a 2 façons: il y a des startups qui vont faire un mauvais deal en levĂ©e et essayer de financer en haut de bilan des choses qu’on ne pourrait pas financer comme ça. Nous, quand on a vu que c’Ă©tait le bordel, notre position a Ă©tĂ© de dire «bon, notre position est assez rude, on va faire un redressement judiciaire», qui est une mĂ©thode pour remettre la boĂźte debout. Ça a mauvaise rĂ©putation pour diffĂ©rentes raisons, mais on Ă©tait dans la rudesse donc on a vu le truc jusqu’au bout. On en est sorti, ça s’est trĂšs bien passĂ©, et c’est vrai qu’on a signĂ© des clients assez corporate. On a une offre cloud public mais on a aussi une offre on-premises (cloud privĂ©), ça intĂ©resse certains corporate principalement banque et assurance.

Du coup, ça marche bien, on bosse avec ces gens là, ils sont heureux et nous aussi ! La croissance est bonne et comme je veux que la boßte se structure pour grossir, je me suis posé la question de qui va nous rejoindre pour structurer les équipes, qui pourrait travailler sur certains sujets.

Le sujet de la vente chez Clever Cloud a toujours Ă©tĂ© un sujet compliquĂ© parce qu’on a une façon de penser et de vendre un peu particuliĂšre; on est des techs, on fait un produit tech pour des techs. C’est un produit qui est assez touchy Ă  vendre si tu comprends pas ce que tu vends. On a usĂ© beaucoup de commerciaux: des gens qui sont venus chez nous, qui ont essayĂ© et qui sont partis en disant «franchement je comprends rien, je sers Ă  rien en rendez-vous, ça me dĂ©prime», et donc on est arrivĂ© Ă  un modĂšle trĂšs sales faites par les techs. Et j’en ai beaucoup parlĂ© avec Philippe, et du coup Philippe nous rejoint pour diriger la vente en fait. Donc ça reste un dĂ©veloppeur qui sera Ă  la tĂȘte des ventes, mais en fait Philippe arrive pour m’enlever beaucoup de travail. DĂ©jĂ  c’est une bonne chose.

Le deuxiĂšme sujet sur lequel on Ă©tait au taquet et sur lequel j’Ă©tais excessivement pris aussi en tant que CEO c’Ă©tait l’Ă©vangĂ©lisme, le «developer relation», la crĂ©ation de ce lien en face du dĂ©veloppeur qu’on veut faire, et en fait j’en ai beaucoup parlĂ© avec Laurent, et du coup Laurent nous a rejoint pour prendre la direction de ce pĂŽle lĂ  pour qu’on puisse grossir sereinement en fait.

Aujourd’hui c’est bien, la techno est gĂ©rĂ©e par ClĂ©ment, le marketing est gĂ©rĂ© par un autre ClĂ©ment, les sales chez Philippe et le devrel chez Laurent. Nous avons annoncĂ© Philippe et Laurent cette semaine.

Il y a beaucoup de barbus chez Clever, est-ce que c’est un prĂ©requis pour rentrer ?

Alors c’est pas un prĂ©requis pour rentrer, on a mĂȘme des gens qui ne sont pas barbus ! C’est vrai qu’on en a beaucoup, mais la barbe en gĂ©nĂ©ral a vachement pris de galon ces derniĂšres annĂ©es. Y’a quand mĂȘme vachement plus de barbus maintenant qu’avant. C’est juste que chez nous on ne dit pas aux gens «arrĂȘte toi Ă  3 jours» !

Tu es «tout jeune», par rapport Ă  certains, mais on dirait que tu as touchĂ© Ă  tout. C’est quoi ton secret ? Est-ce que tu dors ?

Je ne dors pas beaucoup. J’essaie de changer ça, parce que je vieillis comme tout le monde. Ça Ă©nerve beaucoup Philippe quand je dis ça, il me dit Ă  chaque fois «t’es vraiment qu’un branleur».

Mais du coup non je ne dors pas beaucoup, et j’ai fait beaucoup Ă  une Ă©poque, et j’essaie de toujours faire beaucoup, et de suivre toutes les technos.

Je pense qu’un des secrets c’est aussi qu’Ă  un moment l’Ă©quipe technique m’a expliquĂ© que j’Ă©tais tout Ă  fait sympathique, que c’Ă©tait bien que je continue Ă  faire de la techno, par contre que j’arrĂȘte de pousser des trucs en prod, et ne plus prendre les sujets critiques mais prendre que des sujets prospectifs. C’est ce qui m’a permis de continuer Ă  ĂȘtre productif, sans les emmerder. Sinon il y a quand mĂȘme des semaines oĂč je fais autre chose.

Ce qui s’est passĂ© c’est que j’ai souvent aidĂ© beaucoup dans le boulot, et j’ai commencĂ© trĂšs jeune aussi. En fait quand j’Ă©tais au collĂšge mes parents m’ont laissĂ© faire, je ne sais pas comment ils ont pĂ» ne pas se rendre compte de ça, ils m’ont laissĂ© avoir mon propre ordinateur Ă  cĂŽtĂ© de mon pieu. J’avoue que j’ai commencĂ© les nuits blanches assez tĂŽt sur le code. Tu sais c’est Windows 95 tout ça, assez rapidement fallait itĂ©rer tu sais, c’Ă©tait le moment oĂč tu faisais une erreur de mĂ©moire vive tu coredumpais pas tu vois, c’Ă©tait pas l’OS qui shutdownait ton programme, c’Ă©tait ton ordinateur qui passait Ă©cran bleu quoi. Ah merde… Et aprĂšs fallait rebooter le bordel, c’Ă©tait chiant.

On va parler un peu de ta prez ApĂ©ro fonctionnel. On Ă©tait lĂ , c’Ă©tait rigolo. Ça va les cheveux ce matin ?

Nickel. En fait faut savoir que c’Ă©tait bien Ă©videmment complĂštement jouĂ© et que nous n’avions que de l’eau, hein.

Absolument ^^. Alors: est-ce qu’il faut un doctorat pour faire du fonctionnel, ou est-ce que c’est juste «map» et «reduce» sur un tableau ?

Alors je sais que personne ne me croit, parce que j’ai souvent parlĂ© fonctionnel, que j’ai parlĂ© Ă  des LambdaCon, Ă  des ScalaDays, on me voit souvent manipuler des trucs en Scala, mais avant de prĂ©parer l’apĂ©ro fonctionnel avec Philippe, je ne savais pas ce qu’Ă©tait une monade. C’est vrai.

Mais tu en faisais quand mĂȘme, maintenant tu sais ce que c’est ?

C’est juste qu’en fonctionnelle, tu te sers de concept mathĂ©matique, soit. Y’a souvent dans l’univers fonctionnel, un vocabulaire soutenu. C’est pas que les mecs veulent se la pĂ©ter, c’est juste qu’en gĂ©nĂ©ral ils viennent d’un endroit oĂč ils ont fait vraiment des maths et du coup ils connaissent le mot qui Ă  une dĂ©finition. Par exemple, on dit que ça c’est une table, parce qu’on sait tous que ça veut dire, on dit pas le machin qui a quatre pieds et un trĂ©teau, on dit c’est une table. En fait, pour ces mecs ça paraĂźt naturel parce que quand tu as fais une prĂ©pa avec des maths, ça parait logique de dire Endofunctor Ă  un moment. Je pense que ça leur parait naturel. Moi c’est vrai que j’ai pas eu cette chance lĂ .

Pourtant tu l’as placĂ© quelquefois hier ?

Du coup on m’a expliquĂ© ce que c’Ă©tait.

Parce que je trouve que :

Mais non une monade c’est simple, c’est un monoĂŻde dans la catĂ©gorie des endofunctor.

C’est l’une des phrase les plus drĂŽle possible. De base, quand tu as envie de dire au mec “c’est simple une monade c’est un monoĂŻde dans la catĂ©gorie des endofunctor”, le mec est lĂ  “oh non putain …”. En fait y’a un magma associatif, parce que le monoĂŻde en lui mĂȘme se dĂ©finit autrement. Mais bref. Tu es pas obligĂ© de connaĂźtre tout le vocabulaire par coeur. C’est utile aprĂšs, quand tu veux avoir des Ă©changes de haut niveau avec les gens et t’assurer que tu comprends quand tu veux travailler sur certains concepts. Surtout que c’est un endroit ou y’a encore beaucoup de recherche, tu as tout les concepts de free monade, oĂč les mecs se font encore un peu chier Ă  dĂ©finir comment on va pouvoir modĂ©liser les effets de bords pour plus qu’ils t’emmerdent, donc c’est assez intĂ©ressant d’avoir le vocabulaire. Mais en vrai, pour faire du pure fonctionnel tout simple, tu as pas besoin d’apprendre ce vocabulaire lĂ , tu as pas besoin de lancer des stacks techno trĂšs compliquĂ©es. C’est plus un changement dans la façon de rĂ©flĂ©chir, donc le changement des fois tu le payes un peu cher au dĂ©but parce que ça fait mal Ă  la tĂȘte.

Plus que la poire ?

Oh ouais franchement. Moi la premiĂšre fois, c’est une des rares fois oĂč j’ai bien merdĂ© sur une vente oĂč j’avais dit “ça on le fera en Scala et bidule et machin”. J’avais des mecs dans ma team qui faisait du Scala et ils galĂ©raient et on pas rĂ©ussi et du coup on c’est retrouver Ă  livrer le client deux jours plus tard sur un truc important et qui Ă©tait Ă©vĂ©nementiel, donc pas de deadline possible Ă  dĂ©caler et je me suis retrouvĂ© dans le code ce bordel lĂ  deux nuits blanches d’affilĂ©es. C’Ă©tait du temps oĂč j’Ă©tais jeune et que je pouvais faire deux nuits blanches d’affilĂ©es. J’avoue que je pense que j’ai pas Ă©tĂ© efficace pendant un bon 32h, franchement je regardais le code, j’essayais de comprendre, je copiais collais des trucs, je rajoutais des lettres, ça pĂ©tait je sais pas trop. Et en fait Ă  la fin de la nuit ça marchait. Mais c’est vrai que ça a Ă©tĂ© d’une douleur intense. Pour la petite histoire, au bout de deux nuit blanche, du coup on c’est regardĂ© avec Bastien, en disant : “Ben du coup on fait quoi ? On rentre se coucher ? Ouais, Ă  ce niveau lĂ  on peut lancer Starcraft 2.” Et lĂ  a dĂ©barquĂ© un des mecs qui rentrait de vacances dans les pays de l’est. Le mec Ă  dĂ©barquĂ© Ă  8h du matin avec des croissants et des biĂšres et on Ă©tait sur Starcraft 2. Royal !

Nous on avait discutĂ© avec Philippe au Jug Summer Camp et il avait fait une prĂ©sentation sur quelques concepts fonctionnels. Et il racontait qu’il aimait bien adapter ça Ă  certains trucs, par exemple la gestion d’erreurs. Et du coup, quel est ton avis ? Tu penses qu’il faut tout faire en fonctionnel , c’est la rĂ©ponse Ă  tout ? Ou est ce que cela s’applique seulement Ă  des problĂšmes particuliers ?

De toute façon, on peut pas tout faire en fonctionnel. A la fin, ton processeur, il prend des instructions les unes Ă  la suite des autres et il est procĂ©dural. Le concept du fonctionnel, c’est comme quand on explique nous qu’on ne va pas faire de changement dynamique de conf en fait c’est pas vrai. Du coup on fait tous les changements dynamiques de conf au sein du reverse-proxy. Mais en fait, une idĂ©e du fonctionnel, c’est de dire, on va mettre tout ce qui pose problĂšme dans un tout petite endroit trĂšs sĂ»r dans lequel on aura relu 25 fois le code et on aura aucun problĂšme avec ce truc lĂ  et tout le reste sera diffĂ©rent. En fait dans le fonctionnel, la gestion d’erreur est mieux construite parce que le systĂšme de type t’oblige Ă  gĂ©rer les erreurs. C’est pas tant que c’est fait pour gĂ©rer les erreurs, mais du coup tu te retrouves obligĂ© de traiter les erreurs. C’est du coup trĂšs utile pour tout le code mĂ©tier un peu compliquĂ©, qui doit avoir des chemins de branchement… OĂč, au lieu d’avoir des bugs bizarre qui sont liĂ©s Ă  un contexte, tu vas avoir un schĂ©ma de dĂ©cision trĂšs carrĂ© et tu auras pas de surprise. AprĂšs il faut ĂȘtre clair, le fonctionnel est plus lent sur certains sujets. C’est juste que l’on va regagner de la performance Ă  d’autres endroits parce que le parallĂ©lisme va ĂȘtre plus calme. Mais y’a pleins de sujet que l’on va pas faire en fonctionnel mais tu peux quand mĂȘme les modĂ©liser en fonctionnel. AprĂšs des trucs comme Optional c’est simple, c’est agrĂ©able, je le trouve pas trĂšs compliquĂ© et ça te supprime tellement de problĂšmes, c’est un vrai bonheur.

Tu peux nous parler du reverse-proxy que vous allez bientĂŽt sortir en open-source ?

Alors ça c’est trĂšs simple. C’est un projet qui sera complĂštement Open Source sous la licence AGPL. Avec des exceptions de licence pour que l’on puisse en crĂ©er des produits propriĂ©taires sur certains sujets. Parce que c’est quelque chose qui est fait pour des gros systĂšmes, et de toute façon, les gens qui mettrons leur prod dessus seront tout Ă  fait heureux de pouvoir filer un coup de tĂ©lĂ©phone Ă  ceux qui l’ont fait, et ça, ça se monĂ©tise, faut ĂȘtre clair on doit manger.

C’est un projet dont nous avons besoin donc on l’abandonnera jamais. Il est Ă©vident que les contributions seront les bienvenues. C’est du Rust, c’est marrant, c’est le langage en ce moment dans lequel il se passe pleins de choses, y’a plein de nouveautĂ©s. Rust c’est un langage qui s’attaque comme rarement on en voit au low-level. C’est le premier langage low-level qui sort depuis C++. Il permet par exemple d’Ă©crire des drivers. Ca existe pour remplacer C++. Les mecs de Mozilla font ça pour rĂ©pondre Ă  des problĂšmes de concurrence. Je pense que n’importe qui ayant fait un sĂ©maphore en C++ dans ces annĂ©es d’Ă©tudes voit Ă  quoi je fais rĂ©fĂ©rence. C’est quand mĂȘme super chiant. C’est comment tu vas gĂ©rer du traitement multiple massivement parallĂšle mais en natif. Donc c’est quand mĂȘme trĂšs excitant et il se passe plein de trucs dans ces systĂšmes lĂ .

Et nous, on a commencĂ© par Ă©crire un truc qui s’appelle Nom, enfin, quand je dis nous, moi j’ai rien foutu. Y’a un mec qui a essentiellement bossĂ© dessus qui s’appelle Geoffroy Couprie, qui est dans mon Ă©quipe. Il est leader sur tous ces sujets lĂ . Geoffroy peut Ă©ventuellement avoir des discussions architecturales avec nous, mais en gĂ©nĂ©ral c’est lui qui tape le code aujourd’hui. Et du coup il a contaminĂ© tout le monde au Rust. Geoffroy a Ă©crit Nom qui est un parser combinator qui permet de faire du safe parsing. En fait le gros problĂšme quand tu fais du parsing, c’est que tu dois gĂ©rer des buffers et lĂ  l’idĂ©e c’est comment est ce que l’on peut garantir que personne ne pourra sortir du parser pour aller faire du buffer overflow et te pourrir ton environnement de code. Donc c’est un truc pour la sĂ©curitĂ© Ă  la base, il se trouve qu’en optimisant bien, ce que tu fais, fait des instructions du processeur hyper con, c’est donc procĂ©dural et llvm te donne un code trĂšs optimisĂ© en sortie. Nom est sorti y’a un an et demie, il a Ă©tĂ© prĂ©sentĂ© Ă  LangSec, Ă  StrangeLoop et tout le monde c’est mis Ă  l’utiliser, ils ont mĂȘmes commencĂ© Ă  l’utiliser dans Rust lui mĂȘme. Et pour nous, Nom existe pour deux raisons: un, rĂ©gler un problĂšme de parsing dans VLC, ça c’Ă©tait le cĂŽtĂ© lol du gars qui est contributeur VLC depuis toujours et deux, rĂ©Ă©crire le reverse-proxy qui est un projet que l’on a depuis deux ans et demi ou trois ans. C’est un projet qui a commencĂ© parce que j’ai toujours dit que l’on aurait des problĂšmes avec le reverse-proxy. On a commencĂ© Ă  rĂ©flĂ©chir et on avait fait un POC en NodeJS avec aucune intention de le mettre en production, mais on voulait vĂ©rifier le niveau de fonctionnalitĂ© que l’on attendait. J’avais Ă©crit un POC en NodeJS en une nuit et c’est pour ça qu’on allait pas le mettre en prod le machin. On a cherchĂ© la technologie pour le rĂ©Ă©crire sĂ©rieusement, et on avait deux candidats, on avait Erlang et Rust. Erlang Ă©tait gĂ©nial sur la concurrence et sur la distribution mais Ă  chaque fois que l’on voulait optimiser des choses low-levels sur le rĂ©seau, et je pense que le talk de Geal t’expliquait bien ça, parce que en Erlang tu as une VM, on aurait dĂ» optimiser la VM et pour ĂȘtre honnĂȘte le code de l’Erlang VM on a rien compris. On partait pas dans le bon sens, on voulait avoir la main sur le binaire gĂ©nĂ©rĂ©, sur les instructions du processeur, pouvoir compiler avec certaines instructions du processeur prĂ©cises qui font tel truc, faire de l’affinitĂ© de core sur l’exĂ©cution sinon on aura un problĂšme etc. Donc on savait que l’on avait des problĂšmes relativement compliquĂ© trĂšs low-level. Rust Ă©tait donc tout indiquĂ© car c’est massivement parallĂšle et massivement checkĂ©. Donc on a choisi Rust, enfin c’est essentiellement Geoffroy, faut pas bullshiter.

Donc ce produit lĂ  sort, c’est un reverse proxy construit pour la prod rapide, extrĂȘmement safe, qui a des choses intĂ©ressantes dont on a discutĂ©es en design: par exemple, tu dĂ©finis le nombre de connexions concurrentes qu’il peut traiter, au delĂ  de ça il n’en prendra plus; c’est Ă  dire qu’il sera prĂ©dictif au niveau de la performance, mais il ne dĂ©gradera pas l’ensemble du comportement pour prendre une connexion de plus. Ce sont des visions comme ça qui apporte des nouveautĂ©s dans le monde de l’ops, et les autres reverse proxies n’ont pas du tout Ă©tĂ© pensĂ©s autour de ce truc lĂ . Il est capable de se mettre Ă  jour rĂ©ellement. A la diffĂ©rence d’autres systĂšmes, il ne se gĂ©nĂšre pas une conf qu’il sĂ©rialise dans un TOML, qu’il envoie en string Ă  une autre fonction qui va bricoler des machins, non. C’est une rĂ©elle mise Ă  jour de la configuration et derriĂšre on a des runners capables de prendre la configuration d’autres systĂšmes: le systĂšme Clever Cloud oĂč on a notre propre protocole de mise Ă  jour, mais il est Ă©galement capable de choper de l’information dans du consul, du etcd, du Ingress pour Kubernetes, ça doit bosser avec Swarm mais je n’ai jamais fait le test, et ça peut marcher avec Marathon aussi. Le truc supporte tout ce qui est «immutable infrastructure».

Vous ĂȘtes bien Ă  fond sur Rust en ce moment… Est-ce qu’il y a un langage pour les gouverner tous ?

Oui enfin on fait plein de trucs en ce moment, mais sur la partie low-level effectivement c’est Rust.

Donc non, il n’y a pas de langage pour les gouverner tous. Nous, comme je l’ai expliquĂ©, on est polyglotte depuis le dĂ©but. La raison pour laquelle on fait beaucoup de Rust en ce moment et que ça se voit, c’est parce qu’en fait peu de gens font des trucs low-level et nous on en fait, et l’histoire c’est que les trucs low-level avant on les faisait en C et on Ă©vitait de le montrer parce qu’on Ă©tait pas trop sĂ»rs de notre coup (on pensait que c’Ă©tait un peu de la merde). Et donc, lĂ  on rĂ©Ă©crit massivement en Rust parce qu’on remplace ces trucs lĂ  qu’on faisait en C par du Rust. Et c’est le rĂŽle qu’on lui a dĂ©volu. Alors il se trouve que pour le lol on fait aussi des APIs HTTP avec rocket.rs en disant «voilĂ  on peut le faire» mais c’est plus pour se marrer qu’autre chose; on ne fait pas rĂ©ellement des sites webs en Rust. Ce qui dĂ©verrouille la porte d’entrĂ©e de l’immeuble est en Rust: tu peux lui demander sur Slack «tu peux ouvrir la porte» et le machin ouvre la porte.

Mais sorti de ça, il n’y a pas de langage pour les gouverner tous.

Le coeur de Clever est toujours sur le JEE initial. Il y a pas mal de trucs qui sont du streaming d’API au dessus d’HTTP et tout, c’est beaucoup de Scala parce qu’on en a fait beaucoup, ça marche trĂšs bien et on n’a pas de problĂšme avec ça, c’est cool. Il y a du scripting Ruby un peu partout, lĂ  on est en train de rĂ©Ă©crire notre intĂ©gration avec Github pour faire un truc vraiment neat, on l’Ă©crit en Ruby, parce que la meilleur intĂ©gration qu’il y a eu avec Github c’est vraiment la Ruby, et qu’on prĂ©fĂšre se faire chier Ă  Ă©crire notre librairie d’intĂ©gration dans un autre langage plutĂŽt que de refaire la lib nous mĂȘmes dans un langage qu’on maĂźtrise mieux. Chez nous il y a beaucoup de Java, y’a pas trop de Python. Il y a du Go sur certains cas d’usage oĂč c’est pratique d’avoir un fat binaire qui Ă  la fin inclus son runtime, son garbage collector tout seul comme un grand garçon. AprĂšs dans Go, j’aime pas trop le cĂŽtĂ© «tu vas devoir gĂ©rer tes propres boucles Ă  la mano», j’ai un peu l’impression de faire du Java 1.3 et ça me les casse un peu… Mais ça c’est personnel, y’a d’autres mecs chez Clever qui font plein de Go. Et j’ai pas les generics, et la derniĂšre fois que j’ai fait un langage dans lequel y’avait pas les generics c’Ă©tait ActionScript 3…

Ah ouais toi t’as souffert pendant ton enfance…

Ah ouais non mais c’Ă©tait rude ! J’aime pas quand dans l’API ça te dit «lĂ  on prend un Array». Ok, mais un Array de quoi ? Et lĂ  t’es obligĂ© de lire la doc, et moi je veux que mon ide me dise «c’est un Array de bidule». J’avais trouvĂ© ça brillant les generics quand j’avais dĂ©couvert ça. Et j’aime pas le systĂšme de build aussi. Ceci dit, on en fait, le systĂšme de backup est essentiellement rĂ©Ă©crit en Go si je ne dis pas de connerie, parce qu’en fait des fois il y a des trucs qui sont changĂ©s et comme je ne suis plus le CTO, des fois je ne suis pas nĂ©cessairement hyper au courant. Enfin… Les trucs qui marchent, je ne suis pas au courant en fait.

Qu’est-ce qu’on peut avoir d’autre chez nous… Ah y’a pas mal de Node aussi, donc en JavaScript, et tout le frontal donc en JavaScript pur.

On a oublié des questions ?

Si tu me lances autour d’une question ouverte on va en avoir pour un moment ^^

Tu nous as dit au dĂ©but que tu es toujours dĂ©veloppeur, comment tu t’organises avec toutes tes activitĂ©s ?

Alors je ne suis plus CTO de la boĂźte et toutes les dĂ©cisions techniques sont prises par ClĂ©ment. Des fois, ClĂ©ment Ă©change avec moi parce qu’il se trouve que nous sommes beaucoup alignĂ©s. Il se trouve qu’on en parle relativement peu souvent parce que je sais dĂ©jĂ  ce que pense ClĂ©ment la plupart du temps, et il sait ce que je pense.

Il y a un «je ne sais quoi» entre vous ?

Non mais c’est vrai ! La rencontre technologique entre ClĂ©ment et moi a Ă©tĂ© foudroyante, ça a Ă©tĂ© incroyable. Et c’est un vrai plaisir de tous les instants.

Mais du coup on n’en parle pas souvent, donc je ne prends plus de dĂ©cisions techniques, je fais des hacks mais j’essaie de ne plus intervenir sur des trucs core/systĂšme. Il reste quelques briques oĂč je garde un peu de maintenance mais je ne suis jamais le principal mainteneur sur une brique, c’est toujours quelqu’un d’autre qui est owner et je fais une pull request. Il se trouve que parfois je dĂ©barque et je fais une pull request, mais je ne fais jamais genre «il faut que ce soit prĂȘt pour demain. Le mec pourra la relire et la rĂ©Ă©crire intĂ©gralement parce que je suis teubĂ© si ça lui fait plaisir, ce qui arrive assez rĂ©guliĂšrement quand mĂȘme, faut pas dĂ©conner.

LĂ  dessus, il y a des projets qui me font marrer, sur lesquels je code des machins, et ça m’amuse et c’est cool. Par exemple on a fait une grosse verrue Ă  un moment dans rabbitMQ, je suis en train d’essayer de le rĂ©Ă©crire propre en Erlang. Alors en vrai je ne suis pas un bon dĂ©veloppeur Erlang, et j’ai pas forcĂ©ment le temps, mais j’essaie de faire un truc propre pour qu’on puisse l’open-sourcer. Donc en fait ça emmerde personne chez Clever. Tout continuer Ă  tourner et quand ça marche Marc Antoine pourra dĂ©cider si ça part en prod ou pas. Moi j’aurai fait mon gros bordel en open-source et il fera ce qu’il veut.

AprĂšs, je continue Ă  beaucoup m’informer, Ă  beaucoup tester de trucs, parce que je considĂšre que je dois rester un dĂ©veloppeur. Et je considĂšre que je dois continuer Ă  faire de l’ops. J’ai des serveurs sous management, sur lesquels on lance des trucs qui ne sont pas Clever. C’est Ă  dire que j’ai des stacks, par exemple toutes les stacks d’orchestration, sur des serveurs sur lesquels on lance des trucs et tout. Donc je continue Ă  en faire, par contre ce n’est pas sur des trucs critiques quoi. En vrai, mon mĂ©tier aujourd’hui est de faire des ventes, de l’administratif, de la reprĂ©sentation, du marketing, de dire oui ou non Ă  des gens, de rĂ©pondre Ă  mes mails, ce qui dĂ©sespĂšre complĂštement les mecs qui attendent des rĂ©ponses… Et de faire du recrutement, ce qui Ă©tait derniĂšrement une grosse occupation chez moi, parce que vous ne le savez pas mais on a aussi recrutĂ© un mec hyper cool qui s’appelle Yoann au marketing. Toutes ces nouvelles arrivĂ©es, ça m’a pris beaucoup de temps. Donc des fois je vais pouvoir faire de la techno dans la journĂ©e, ou pas, mais j’essaie de rester dĂ©veloppeur.

Par exemple, les diodes qui clignotaient sur le stand c’Ă©tait moi ! «VoilĂ , Quentin a joué» quoi. Mais quand il a fallu rajouter le plugin MQTT, les mecs ont dit «Ouais… C’est Alexandre qui va le faire, tu risques de faire une merde, tu seras pressĂ©, ça va ĂȘtre sur le chemin critique et ça va emmerder tout le monde». Ok, bah Alexandre le fera, et Alexandre l’a fait. Mais c’est moi qui ai fait les diodes, qui m’amusait tout ça. C’est Ă  cause d’Emmanuel Feller, il m’a filĂ© des paquets de diodes et j’ai commencĂ© Ă  jouer avec. Non mais en vrai, il a dĂ©barquĂ© au bureau avec des caisses et tout, et j’ai commencĂ© Ă  jouer avec, en me disant «bon, il faudrait que je pense Ă  commander un truc Ă  bouffer», puis «faudrait que je pense Ă  appeler ma copine pour lui dire que je vais pas rentrer dĂźner parce que je suis en train de jouer», puis «bon aller j’y vais» et quand je lĂšve les yeux il est 5 heures du matin. Donc non seulement je vais me faire engueuler, en plus j’ai pas mangĂ©, et il faut que je rentre me coucher.

Et j’essaie toujours de faire un peu d’Ă©vangĂ©lisme, un peu de conf, et ça va passer sous la responsabilitĂ© de Laurent et c’est donc lui qui dĂ©cidera si j’y vais ou pas. Sachant que Laurent a une idĂ©e trĂšs conservatrice sur le fait que j’y aille ou pas parce qu’en fait Laurent lui-mĂȘme attendant des rĂ©ponses Ă  mes mails, je pense qu’il va faire des trucs du genre «non, t’y vas pas, ou alors tu rĂ©ponds Ă  tes mails».

L’orga interne est trĂšs claire, tu prends bien ton rĂŽle et le changement

C’est ça qui m’amuse. En fait en temps que CEO je suis le dernier responsable aprĂšs Dieu du truc. En clair, il faut que je fasse le boulot. Si personne ne fait le boulot, c’est dans ma corbeille. C’est pour ça que je suis toujours over-work. Parce qu’en fait j’essaie de protĂ©ger ma team, donc moi je prend tout, par dĂ©finition, et je m’assure que eux aient des pipelines de boulot stables et qui leur permettent d’avancer. Donc moi je sais trĂšs bien qu’il y a plein de trucs que j’avais dit que je ferai, et que je ne ferai pas. Et tout le monde en est conscient, et c’est pas grave. J’essaie de faire ce qui est rĂ©ellement important. Bon y’a des fois je me loupe hein, je dis pas que j’ai raison Ă  chaque fois.

Il y a des mĂ©tiers qu’on a besoin de faire. A une Ă©poque il fallait qu’on soit des bons ops, il fallait qu’on soit des bons devs, donc lĂ  Ă  chaque fois j’y Ă©tais. Par exemple le rĂŽle de CTO Ă©tait trĂšs compliquĂ© Ă  dĂ©finir donc j’Ă©tais de facto le CTO. Puis j’ai compris ce qu’il fallait comme rĂŽle donc j’ai cherchĂ© et j’ai trouvĂ© quelqu’un qui est CTO. Et il est donc CTO et je le ne suis plus. En marketing, pendant longtemps y’avait jamais trop personne et c’Ă©tait compliquĂ© et tout, et il se trouve que dans la team il y avait toujours un mec qui donnait toujours les bonnes rĂ©ponses, et donc il est patron du marketing. En sales, j’Ă©tais d’abord le seul sales puis le chef des sales. Donc dans les faits je dirigeais les ventes. Mais pourquoi je l’ai fait: parce que je pensais que c’Ă©tait bien, parce qu’il fallait que je comprenne ce que ça veut dire de faire des ventes dans notre mĂ©tier, pourquoi, dans quel sens etc. Donc j’apprends le mĂ©tier, je ne dis pas que je le fais bien mais je l’apprends, je comprends sa culture, ses aboutissants, et je cherche quelqu’un de meilleur que moi pour le faire Ă  qui je file le poste en lui disant «bah maintenant y’a assez de boulot et je comprends», et en plus du coup quand on en parlera on pourra Ă©changer. Et donc lĂ  j’ai filĂ© le bĂ©bĂ© Ă  Philippe. EvangĂ©liste, la mĂȘme chose, Ă  Laurent. Laurent et moi on est alignĂ©s, on a une vision, et je sais exactement ce que ça veut dire que la devrel, c’est carrĂ©, et quand je lui file le poste, c’est carrĂ©. Reste que ces gens lĂ  ont parfois besoin de moi, donc Ă  ce moment lĂ  je deviens une de leur ressource. C’est juste que je ne suis pas une ressource full-time donc il faut me demander s’ils ont besoin de moi. LĂ , faut que je fasse de l’administratif, du financier, du juridique. LĂ  dĂ©jĂ  on a retapĂ© tous nos contrats par exemple. Mais incessamment sous peu je devrais pouvoir recruter dans ce domaine lĂ  parce que j’aurai compris ce qu’il nous faut. C’est Ă  peu prĂšs comme ça que je fonctionne, et je suis Ă  disposition des mecs quand ils ont besoin de moi. Si aprĂšs personne n’a besoin de moi Ă  un instant T c’est parfait, je vais aller committer sur mes trucs en open-source tranquille. Mon objectif c’est ça: mon boulot change en fonction des besoins de la boĂźte, de façon au fur et Ă  mesure Ă  pouvoir fournir les bonnes personnes pour que tout le monde puisse bosser et arrĂȘter d’ĂȘtre un goulot d’Ă©tranglement. Petit Ă  petit je supprime des parties de mon boulot et normalement Ă  la fin je n’ai plus rien Ă  faire. C’est trĂšs thĂ©orique, je ne sais pas si ça va marcher, mais normalement Ă  la fin je suis juste lĂ  pour rĂ©pondre aux questions. AprĂšs je suis lĂ  aussi pour leur renvoyer la balle. On va aller dĂ©jeuner ensemble, ça va durer 3 heures, on va en discuter longuement, c’est pas une vraie rĂ©union mais une discussion informelle entre lui et moi, et on dĂ©cide ce qu’on fait.

C’est trĂšs honorable parce que je pense que c’est dĂ»r et c’est une super bonne mĂ©thode. Est-ce que tu as une petite citation pour finir ?

Une citation… De quelqu’un d’autre ?

Ou de toi !

Je pense que ce que j’ai dit… Tiens oui, ça va ĂȘtre mon dernier leitmotiv. Je pense que orienter son architecture de code et son architecture globale quand on fait de la techno sur la «developer happiness» c’est pas mal, parce qu’en fait des gens qui sont heureux, ce sont des gens qui sont motivĂ©s, des gens motivĂ©s sont des gens productifs, et puis en plus ils ne font pas la gueule quand tu vas les voir et c’est dĂ©jĂ  vachement cool. C’est quand mĂȘme beaucoup plus agrĂ©able pour la relation que tu entretiens avec les gens.

Et donc du coup, faire du «developer happiness oriented» c’est un bon modĂšle.

J’espĂšre que Ă  la fois la boĂźte qu’on porte pour les gens qui vont ĂȘtre en interne et qui normalement va continuer Ă  grossir aussi, ça va ĂȘtre ça, et surtout qu’on va ĂȘtre l’outil qui permet ça aux gens pour leur faire gagner des points de productivitĂ© et de bonheur dans leur vie professionnelle.

Et bien c’est super, merci beaucoup, et bonne continuation !

Merci !