🍪🕟 "Je travaillais beaucoup moins et j'avais l'impression de donner beaucoup plus"
Développeur depuis “tout petit” comme il dit, son métier est à la fois sa passion et son art de vivre. Le parcours de Nicolas Besnard (passé par Doctolib, Getaround, Capsens, l’Australie, Berlin, Paris, …) donne des clés pour comprendre ce qu’est un développeur sénior. Il nous raconte différentes façons de travailler, ses gems préférées et l’évolution de sa carrière. N’est ce pas la meilleure source d’inspiration et de ressource de que laisser un passionné se livrer à nous ?
Bonjour et bienvenue sur la 4ème édition de Ruby Biscuit.
Vous êtes maintenant 71 abonnés 🥳 Si vous n’êtes pas déjà inscrit :
Comment es-tu devenu développeur ?
J'ai commencé à développer depuis tout petit, vers 14 ans parce que je devais faire un truc sur Excel mais ça me soûlait, alors j'ai appris le PHP. Quant au Ruby, je l'ai découvert en 2012/2013 à l'Epitech car il y avait un petit club de gens qui s’amusaient à faire des sites web et ils le faisaient en Ruby on Rails. A l’époque j’y comprenais rien du tout, du coup comme je faisais du PHP j’avais appris Cake PHP qui ressemblait beaucoup à Rails. Je me disais que le RoR était incompréhensible pour moi, notamment le système MVC.
Puis pour un stage j'ai postulé chez "Pretty fun therapy" qui recherchait un dév Ruby pour leur app de dating "Play Me" basée sur un quiz. Ils m'ont recalé parce que je ne savais pas en faire. Alors j'ai envoyé un e-mail pour leur dire que j'étais méga motivé et que le Cake PHP ça ressemblait à Rails ce qui me permettrai d'apprendre plus vite. Ils ont donc fini par me prendre. J'ai beaucoup galéré au début, le CTO m'a bien accompagné et ça l'a fait. Donc finalement je suis devenu développeur Ruby parce que je cherchais un stage et qu’une boite a accepté de me prendre. Sinon j’aurai sûrement fini développeur PHP ou autre chose.
Maintenant j’en fais moins, dans ma carrière il y a eu d’autres besoins, je m’y suis adapté, aujourd’hui je suis principalement en node mais je garde le RoR pour mes projets perso.
Aussi c'est marrant, mais avant j'avais horreur du front (CSS et JS) et maintenant j'aime bien. De même chez Capsens en 2016 je n'étais pas du tout intéressé par le devOps mais quand j'ai travaillé en Australie j'ai travaillé avec un lead dev qui m'a montré ce qu'il savait faire et maintenant ça me fait bien kiffer. On évolue tous...
Est-ce qu’on peut dire que tu es devenu développeur Ruby un peu malgré toi ?
Oui il y a pas mal de choses dans ma carrière qui ont eu lieu par hasard, mais au final ça se goupille bien.
Est-ce que maintenant que tu fais du Node le Ruby te manque ?
J'aime beaucoup le Ruby, je trouve ce langage super sympa. J'aime trop que tout soit objet, que tu puisses faire des monkey patch facilement et bien sûr le côté verbeux de Ruby est très agréable, parfois on me reprochait même d’en abuser trop. Je suis ultra fan des predicate avec des méthodes avec des “?” à la fin. Je trouve ça joli. Quand je vois un predicate je me dis "ahh j'adore ça".
Aussi ce qui est super avec Ruby c'est la communauté qui s'entend sur des bonnes pratiques de sorte que les gems font consensus. Par exemple pour authentifier un user tu utilises Devise. Pour faire des backgrounds jobs tu utilises Sidekiq alors que quand tu fais du Node (souffle) il y a mille librairies. Le coût d'entrée est non seulement important mais en changeant de boite c'est jamais les mêmes librairies pour authentifier un user par exemple. La librairie la plus courante c’est passeport-js mais je ne l'ai retrouvée dans aucune boite où j'ai bossé. C'est chacun ses conventions. Alors qu'avec Ruby tu retrouves toujours Devise, ce qui est vraiment pratique. Idem en Ruby on retrouve Active Record alors qu'en JS il y a plein de solutions différentes. D'ailleurs en RoR on crache beaucoup sur Active Record mais c'est tellement pratique et tellement répandu donc pas besoin de lire une nouvelle doc à chaque fois qu'on entre dans un nouveau projet.
La raison pour laquelle j'aime revenir sur Ruby c'est surtout Sidekiq parce que la librairie est super bien. J'ai aussi passé énormément de temps sur les problématiques de scaling donc j'ai pas mal de snippets qui traînent qui m'aident notamment pour le monitoring de Sidekiq, ce qui me permet d'être super efficient pour mettre en place un système de queue.
Par contre sur Ruby je suis un peu frustré de ne pas avoir de typage fort, ça existe mais la communauté ne l’a pas adopté. Sur certains projets je commence en Ruby parce que je sais que je vais aller vite, et après je veux refactor, mais j’ai pas mes types pour sécuriser mon app, du coup faut faire plus de tests, mais j’ai pas envie car c’est juste un side-project. Bref…
C’est un truc qui est assez marrant, mais ma copine a fait le Wagon comme toi, et je la pousse à aller vers d’autres langages. Pour moi il faut pas avoir peur de sortir de son langage préféré, j’ai beaucoup appris en voulant tester d’autres choses justement.
C'est fou la capacité des développeurs à donner envie aux autres de devenir développeur…
Oui, dans mon couple c'est aussi parce que ce métier permet de voyager et on adore voyager. On vivait à Paris au départ, puis en Australie, maintenant à Berlin depuis un an et demi, et demain on ira vivre vers Oslo.
Mais je vois surtout avec ma copine que c'est super dur de devenir dév en faisant le Wagon, ça demande tellement d’énergie et de volonté car après 9 semaines on a appris beaucoup de choses mais on ne sait pas faire grand chose encore, donc il faut vraiment s'accrocher. Je l'ai beaucoup soutenue pour ça.
Là tu vis à Berlin, mais ta boite est-elle allemande ?
Non je suis à Berlin mais elle est américaine. Il y a beaucoup de salariés en full remote et d’ailleurs on va bientôt tous se retrouver à Denver pour skier tous ensemble.
Penses-tu que le métier de développeur est différent d'un pays à l'autre ?
C'est souvent assez similaire. Tu retrouves les tickets, le backlog, les sprints, même si c'est chacun à sa façon. Mais ma meilleure expérience de travail c'est en Australie chez Realestate.com.au, l'équivalent de Se Loger là-bas. Déjà parce qu'ils finissent le travail à 16h30. C'est très déconcertant au départ mais je peux t'assurer qu'on s'y habitue très vite ! On fait du sport, on boit des verres, etc. Et comme on finit tôt on travail de façon très focus pendant la journée. Je travaillais beaucoup moins, mais j’avais l’impression de fournir beaucoup plus ! Toute l'ambiance de la boite était excellente, ça se ressentait au niveau des boss qui parlaient des gens avant de parler de leurs résultats. Et il y avait de la bouffe tout le temps et j'adore manger. En plus on était très libres sur les choix technologiques. J'y ai appris à faire du React notamment.
On voit bien qu'un poste ce n'est pas qu'un salaire mais aussi une formation, une ambiance, des avantages. À chacun de tes changements de poste ton salaire a augmenté ou as-tu parfois consenti à une baisse pour d'autres avantages ?
Personnellement mon salaire a toujours augmenté. Mais je n'ai pas changé de boite pour le salaire. C'était plus pour des choix de vie, pour quitter Paris, revenir en Europe, etc. J'ai aussi quitté Doctolib parce qu'il y avait beaucoup de mouvement dans mon équipe et que je recherchais plus de stabilité. Quant à Getaround ils ont licencié pas mal de développeurs à cause du premier confinement et j'y étais depuis moins d'un an.
Maintenant que tu as vu beaucoup de boites, quels sont tes critères ou tes warnings ?
En vrai je ne suis pas quelqu'un qui cherche beaucoup. En général on me contacte pour un besoin précis et si ça fit je rejoins la boite, c'est pas plus compliqué. Et j'ai besoin de liberté au travail. Je suis un grand garçon, je ne veux pas de management trop rigide, sur les horaires notamment.
Est-ce que comme certains développeurs, passée une certaine expérience, tu as envie d'arrêter de développer pour manager ?
Au début je ne voulais vraiment pas manager, je voulais juste résoudre des problèmes. Mais avec le temps j'ai compris que pour être un bon développeur il faut aussi avoir la vision produit, participer activement aux spécifications et bien comprendre le reste du business pour avoir du poids dans les décisions. Donc j'ai évolué là-dessus.
Crois-tu qu'un jour tu arrêteras de coder pour manager ou faire du produit à 100% ?
C'est impossible ! J'aime trop développer ! Même en vacances je code sur des projets personnels. Même quand je flâne mon esprit divague vers un problème de code rencontré au travail et je peux trouver de l'inspiration comme ça. In fine faire 50/50 code/produit ça m'irait.
Comment est-ce que tu continues à progresser ?
J'adore coder, donc le weekend je code et à force de bloquer face à des problèmes puis à force de les résoudre, on progresse... Ce qui est particulier avec mes projets perso, c'est qu'aucun n'est parti en production donc on pourrait penser que tout ce temps passé n'a pas été utile mais c'est faux. D'abord j'y ai pris du plaisir et ensuite c'est grâce à ça que je me débrouille pas trop mal aujourd'hui.
Aussi pour progresser je teste de nouveaux frameworks, de nouvelles librairies, je lis hacker news, Twitter et Ruby Biscuit maintenant. Par exemple récemment j’ai découvert Remix qui m'a beaucoup plus. C'est une sorte de framework autour de React, c'est passionnant.
C'est vrai que ça peut paraître bizarre tous ces projets perso qui ne finissent jamais en production. Tu n’as jamais prospecté d'éventuels clients ou partenaires pour tes projets ?
Non jamais ! Peut-être que je devrais m'associer avec quelqu'un plus orienté business. Mais je crois que mes projets sont avant tout des prétextes pour résoudre des problèmes de code. Et il y a trop de choses qui m'intéressent donc j'abandonne souvent un projet perso au profit d'un nouveau sujet.
Le projet sur lequel j'ai le plus bossé c'est Avocado : un service pour les avocats qui permet de générer des contrats facilement à partir de templates et de les faire signer éléctroniquement. Ce qui m'éclatait c'est de faire remplir des formulaires complexes de façon simple pour l'utilisateur, c'est à la fois de l'UX et un challenge technique.
Pour finir peux-tu me dire quelles sont tes deux gems préférées en Ruby ?
D'abord Sidekiq dont je vous ai parlé. C'est vraiment top ! Et ensuite dry-monads. C'est inspiré de la programmation fonctionnelle en Scala que j'ai adoré. La gem s'en inspire beaucoup et permet de faire des services objets. Dry font plein de super gems d'ailleurs, dont le bien connu dry-transaction pour gérer ses états.
Pour découvrir des nouveaux tips Ruby on Rails tous les mercredis à 16h, ne cherche plus, tu es au bon endroit !
Rendez-vous la semaine prochaine 😉
Mélanie