Bienvenue dans notre newsletter de la rentrĂ©e ! đ Pour cette Ă©dition, et comme la pĂ©riode est propice, nous parlerons formation en rĂ©pondant Ă une question cruciale : "Comment et pourquoi former un dĂ©veloppeur qui rejoint votre Ă©quipe ?". Pour cela, nous avons laissĂ© la parole Ă Lucien, fraĂźchement formĂ© chez Capsens, qui se porte volontaire pour vous Ă©clairer.
Dans un premier temps il interviewera Eliot, notre lead dĂ©v, pour vous en dire plus sur lâobjectif de la formation. Ensuite, ça sera avec Nicolas, notre patron, pour vous parler de lâinvestissement que celle-ci reprĂ©sente pour lâentreprise. Enfin, il vous partagera son expĂ©rience et son ressenti sur son mois de formation.
Au programme :
Ce que je peux vous dire sur mon mois de formation par Lucien
Le job de tes rĂȘves !
Temps de lecture : 8 min
Hello les petits Biscuits !
Bienvenue sur la 13Úme édition de Ruby Biscuit.
Vous ĂȘtes maintenant 282 abonnĂ©s đ„ł Si vous nâĂȘtes pas dĂ©jĂ inscrit :
Ce que je peux vous dire sur mon mois de formation
Chez Capsens, la formation est un passage obligatoire pour tous les dĂ©vs, du senior grisonnant au junior en stage, personne nây Ă©chappe ! C'est Eliot, notre lead dĂ©v, qui mâa encadrĂ© tout au long de ce processus.
Le format était le suivant : 1 mois pour créer une plateforme de crowdfunding de A à Z. Pour cela, j'ai eu à ma disposition, un board Trello avec toutes les specs pour créer ma plateforme step by step.
Avant de vous partager ce que jâai pu y apprendre, il mâa semblĂ© important de vous donner plus dâinformation sur lâobjectif de la formation et sur lâinvestissement quâelle reprĂ©sente pour lâentreprise.
1. L'objectif de la formation
đïž Eliot, quel est pour toi l'objectif principal de la formation ?
La formation a été créée pour répondre à une problématique d'adaptation des nouveaux dévs à un nouvel environnement de travail, une norme précise, des process spécifiques, etc. C'est une maniÚre de commencer chez Capsens, en apprenant plutÎt qu'en produisant tout de suite afin d'harmoniser la façon de faire entre tous les dévs. Cela permet aussi, selon son niveau, de rassurer le dév sur ses compétences, ou de replonger dans Ruby/Rails aprÚs une longue période avec une autre techno, ou de progresser. Pour les managers elle permet aussi de se faire une idée plus précise du niveau technique du dév et de sa façon de travailler.
2. L'investissement initial
đïž Nicolas, quel investissement reprĂ©sente la formation initiale des salariĂ©s ? Est-ce rentable pour lâentreprise ?
IndĂ©niablement la formation initiale est un gros investissement pour Capsens. Puisquâelle reprĂ©sente :
- 1 mois de salaire du nouveau salariĂ© oĂč il nâest pas directement productif
- 1/5Úme du temps de son formateur, qui est un dév senior
Si lâon recrute six dĂ©veloppeurs dans lâannĂ©e, cela reprĂ©sente plus de 6 mois de salaires que nous nâallouons pas Ă des projets de clients (puisque nous sommes une agence) !
On pourrait penser que câest trop, dans la mesure oĂč la quasi totalitĂ© des salariĂ©s recrutĂ©s sont totalement aptes Ă dĂ©marrer tout de suite de façon productive sur des projets de clients. CâĂ©tait complĂštement le cas de Lucien par exemple. Nous prenons le risque de ne pas rentabiliser les coĂ»ts de recrutement et de formation si le salariĂ© formĂ© ne reste que quelques mois.
Donc le bĂ©nĂ©fice est dâautant plus important que le turnover est faible. Je comprends quâune entreprise oĂč les dĂ©vs ne restent pas longtemps rechigne Ă prendre le temps de former. Je comprends aussi quâune startup qui a levĂ© des fonds veut des dĂ©veloppeurs qui dĂ©marrent dĂšs que possible car ils ont une roadmap trĂšs serrĂ©e. Mais Capsens (et plein dâautres entreprises) est dans une configuration diffĂ©rente : nous avons plusieurs dĂ©vs qui sont lĂ depuis plus de 6 ans et la durĂ©e dâun dĂ©v chez Capsens dĂ©passe souvent les 3 ans. Donc nous sommes dans le temps long. Et si lâon veut quâun arbre (un dĂ©veloppeur đ) pousse haut, il faut bien planter la graine et lâarroser rĂ©guliĂšrement. Car la formation continue est aussi un sujet. Nous en avions parlĂ© dans cette newsletter oĂč MĂ©lanie sâest formĂ©e aux tests, et nous y reviendrons bientĂŽt dans une prochaine newsletter.
3. Ce que j'ai appris pendant ma formation
Appliquer la norme
Avec des dizaines de projets en cours, une certaine uniformisation du code est nĂ©cessaire. Elle permet aux dĂ©veloppeurs de se rĂ©adapter efficacement Ă chaque rotation de projet, de conserver ses repĂšres, dâavoir une meilleure lisibilitĂ© et aussi facilite la maintenance. Chez Capsens la norme existe depuis un grand nombre d'annĂ©es et est en amĂ©lioration continue.
Elle est, sans aucun doute l'Ă©lĂ©ment le plus important Ă transmettre et Ă assimiler. Câest grace Ă cette norme, que jâai pu apprendre Ă adapter mon code Ă la maniĂšre de faire de l'Ă©quipe.
En voici un extrait
## RAILS
- Services
La logique métier est extraite dans des services réutilisables et testés. Par exemple la création d'un profil utilisateur, la publication d'un projet, etc ...
Il est possible d'utiliser une Gem comme DryTransaction ou des PORO en fonction du besoin
## CODING STYLE
- 120 caractĂšres par ligne maximum
## SĂCURITĂ
- Utilisation systématique de Pundit pour implémenter les autorisations sur les différentes routes de la plateforme.
Jâai dĂ©couvert que lâamĂ©lioration de la norme Ă©tait un travail d'Ă©quipe. Un document appelĂ© "Propositions" est mis Ă disposition de tous les dĂ©vs. Chacun, peu importe son niveau, est invitĂ© Ă ajouter ses propositions sur divers sujets (architecture, style, sĂ©curitĂ© etc). Puis, chaque mois, l'ensemble de l'Ă©quipe se rĂ©unit pour dĂ©battre des propositions une Ă une. Chacun donne son avis, puis nous dĂ©cidons de si oui ou non nous transformons la proposition en point de norme.
Voici par exemple une proposition débattue et ajoutée à la norme la semaine derniÚre :
# JAVASCRIPT
Scoper le JS par vues, au lieu de tout mettre dans application.js. Comme son nom l'indique, application.js ne devrait contenir que du code servant Ă toute l'application (comme les ApplicationController ou ApplicationRecord ).
Par exemple, views/funds/index.html.erb fera un appel explicite Ă assets/javascripts/funds/index.js via un javascript_include_tag.
Ainsi, le js est plus simple Ă maintenir, et l'on ne risque pas de changer le comportement JS d'une autre page sans que ce soit voulu.
(Spoiler alerte au passage : Il n'est pas impossible que nous rendions la nĂŽtre publique un de ces jours đ )
Le flow git
Dans la continuitĂ© de la norme, nous avons naturellement le flow git propre Ă l'entreprise. On a tous notre background et nos petites habitudes qui sont souvent la somme de nos prĂ©fĂ©rences et de nos acquis. Son uniformisation au sein d'une entreprise est essentielle. On sait tous que les commandes git peuvent avoir tendance Ă nous effrayer lors d'une premiĂšre embauche. C'est pourquoi, l'assimiler dans le cadre d'une formation oĂč les erreurs sont sans consĂ©quences est plutĂŽt rassurant !
Voici un schéma caricaturé de notre flow git :
La petite particularitĂ© que je nâavais jamais vu avant dâarriver chez Capsens câest de crĂ©er des branches pour fixer les conflits.
Le process est le suivant :
Je tire ma branche
001-my_feature
de mainJe code
Je crée une PR de ma branche
001-my_feature
vers stagingđ„ Elle a des conflits
Je tire une nouvelle branche de
001-my_feature
et je la nommeconflicts/001-my_feature
Je merge
staging
dedansJe fixe mes conflits
Je créer une PR pour
conflicts/001-my_feature
vers staging
Si ce flow git vous intrigue et que vous aimeriez plus de détails, nous pourrons envisager d'en faire une newsletter à part entiÚre !
Les outils techniques
Au delĂ des pratiques propres Ă l'entreprise, il y a les outils utilisĂ©s. Jây dĂ©couvre une panoplie dâoutils tant sur le plan organisationnel que technique.
Pour l'organisation il y a par exemple Trello et l'intra de la boite.
Sur la technique, ce qui nous intĂ©resse d'avantage đ, je dĂ©couvre des gems ou encore les APIs des prestataires de paiement avec lesquels on travaille.
C'est l'occasion de prendre le temps pour lire leurs documentations et pouvoir m'amuser un peu avec.
Quelques découvertes marquantes :
Apparemment inconnue au bataillon pour la plus grande majorité des développeurs qui intÚgrent l'entreprise, cette gem est utilisée sur chacune des plateformes.
On l'utilise pour encapsuler notre logique mĂ©tier. Ce sont nos services, avec la particularitĂ© que cette gem nous fournit un moyen simple de dĂ©finir une "transaction". En d'autres termes : un objet Ruby dans lequel on dĂ©finit un nombre arbitraire dâĂ©tapes Ă exĂ©cuter sĂ©quentiellement. Elle nous permet dâorganiser la gestion des erreurs en adoptant une approche appelĂ©e "Railway Oriented Programming" pour capturer et renvoyer les erreurs Ă partir de n'importe quelle Ă©tape de la transaction.
Dans cet exemple les étapes sont définies par les mots-clés step
et tee
.
step
est une étape basique, qui renvoie Success
ou Failure
, tandis que tee
est une étape qui renvoie systématiquement Success
.
Pour exĂ©cuter une transaction on lâinstancie et on appelle simplement sa mĂ©thode #call
La documentation de dry-transaction étant peu développée, je peux dire que je suis bien content d'avoir eu le temps de me faire la main dessus.
Cette gem, elle aussi présente sur tous les projets, nous permet d'extraire toutes les méthodes qui ont une logique d'affichage, liées à un model, et utilisées dans les vues.
Les API des prestataires de paiement
Ătant dans une agence web spĂ©cialisĂ©e dans le crowdfunding / crowdlending, chacune de nos plateformes est dotĂ©e d'un service de paiement. Pour cela nos clients et nous-mĂȘme travaillons avec des prestataires de paiement. Il est nĂ©cessaire de savoir implĂ©menter et comprendre leurs API. On pourrait presque dire que c'est le cĆur de nos plateformes.
J'ai dû implémenter différentes fonctionnalités sur ma plateforme de formation, comme par exemple le paiement par virement avec l'API de MangoPay.
C'est dans ce contexte que j'ai aussi découvert les Stubs ! Utilisés dans les tests pour simuler le résultat d'un appel à une méthode. TrÚs utiles pour tester une fonctionnalité de paiement sans avoir à appeler l'API en réel.
D'ailleurs, je pense que je nâai jamais autant testĂ© une app auparavant. đ„”
Cette gem que je connaissais de nom mais que je n'avais encore jamais implĂ©mentĂ©e⊠Câest chose faite ! Et on me dit Ă l'oreillette qu'une newsletter sur le sujet Active Admin vs Back-Office "fait maison" pourrait voir le jour, stay tuned đ.
La logique métier
Comprendre son secteur d'activité est tout aussi important que la technique. Il est impératif que tous les dévs soient formés aux outils spécifiques pour nos types de plateforme mais aussi et surtout qu'ils puissent comprendre les logiques métier.
C'est important pour pouvoir communiquer avec les clients en RDV, pour fluidifier la communication avec les chefs de projets et enfin pour avoir une vision macro de ce qu'on code et de pourquoi on le fait.
C'est encore une fois Eliot, mais aussi les chefs de projets, qui m'ont accompagnés dans cette étape.
Grace à eux, je me suis familiarisé dÚs mon premier mois avec des notions comme :
Les KYC (Know Your Customer).
Les obligations légales qui permettent à nos clients d'avoir leurs agréments auprÚs des Autorités des Marchés Financiers.
Les échéanciers, qui sont en somme des grands registres qui permettent de savoir qui doit combien d'argent à qui et à quel moment.
Les flows de paiement : qui détient l'argent à chaque étape du flow de souscription, les délais de rétractation, etc.

Je ne vous cache pas qu'au début j'étais comme ça...
4. Mon ressenti maintenant que je travaille sur de vrais projets
Ma formation est terminée depuis 1 mois maintenant, voilà ce que je peux en dire avec un peu de recul :
Le fait d'avoir Ă©tĂ© formĂ© m'a rassurĂ©, c'est Ă©normĂ©ment de stress en moins. Ă la fin de ma formation, je me sentais capable de travailler sur un vrai projet, et mĂȘme confiant. C'est un poids en moins de savoir qu'on a pas tout Ă apprendre sur le tas. MĂȘme si la formation n'est Ă©videmment pas exhaustive.
Les process sont aussi des filets de sĂ©curitĂ©, je sais qu'en suivant le git flow et la norme j'Ă©tais dĂ©jĂ bien rodĂ©, et j'avais peu de risques de tout casser. đŁ
Outre le cĂŽtĂ© technique, c'Ă©tait aussi un premier mois qui m'a permis de prendre doucement le rythme et de profiter de l'ambiance studieuse du bureau. J'ai pu apprendre les diffĂ©rents postes quâoccupent mes collĂšgues et ainsi savoir Ă qui mâadresser lorsque jâavais besoin dâaide. Car oui, pendant la formation on nous incite Ă ĂȘtre 100% en prĂ©sentiel đ.
Bonus : Quelques conseils pour que vous aussi, vous ayez la chance de trouver une entreprise qui vous forme :
Souvenez-vous dâune chose : les tests techniques en disent beaucoup sur lâentreprise.
Une entreprise qui prend le temps, et du temps de ses dĂ©vs, pour vous accompagner dans les diffĂ©rentes Ă©tapes de votre embauche et de vos tests techniques, est une entreprise qui sait prendre le temps dâaccompagner ses nouveaux arrivants. Au contraire, une entreprise qui vous envoie des tests techniques sans proposer de rĂ©pondre Ă vos questions et/ou de rediscuter des tests a posteriori, peut ĂȘtre le signe dâun manque dâaccompagnement et de disponibilitĂ©.Si vous ĂȘtes junior, mĂ©fiez-vous des entreprises qui ont besoin dâun dĂ©v en urgence.
Pour vos entretiens, préparez des questions axées sur la formation.
Comment formez-vous les dévs que vous embauchez ?
Est-il possible de voir le support de la formation que jâaurai si jâintĂšgre lâentreprise ?
Ă qui pourrais-je mâadresser lors de mes premiĂšres semaines si jâai des questions ou des blocages ?
Qui a créé la formation ?
Pendant combien de temps vais-je ĂȘtre formĂ© ?
Le job de tes rĂȘves !
Comme vous le savez, derriĂšre Ruby Biscuit, il y a Capsens đ , nous sommes une agence web spĂ©cialisĂ©e dans le Ruby on Rails depuis 10 ans.
Avec le temps on s'est rendu compte que beaucoup de dévs choisissent leur entreprise un peu par hasard alors qu'ils pourraient mieux s'épanouir et se valoriser dans des structures qui leur correspondent bien.
Ce qui tombe super bien c'est que chez Capsens nous avons une excellente connaissance de l'écosystÚme Ruby on Rails en France, avec un réseau d'entreprises considérable.
C'est pourquoi on vous annonce Ă travers cette newsletter que nous mettons Ă profit notre connaissance du mĂ©tier pour vous aider Ă trouver le poste de vos rĂȘves !
ConcrĂštement :
Tu souhaites trouver le job de tes rĂȘves ? Alors rĂ©ponds Ă cet e-mail ! Tu peux dire "Coucou", ça suffit !
On te proposera aussitÎt des créneaux pour une visio afin de faire connaissance
Puis nous te proposerons 3 entreprises qui correspondent Ă qui tu es. Et pour chacun de ces postes :
Tu pourras discuter avec un dĂ©veloppeur de l'Ă©quipe (pas le recruteur lui-mĂȘme) afin de savoir comment ça se passe de l'intĂ©rieur. No bullshit
Un développeur de Capsens t'aidera à :
Analyser le poste : ce qui a l'air bien, les dangers, quelles conditions poser pour que tout se passe bien
Te préparer pour que tu décroches le bon poste
Tu veux aller vers une vie professionnelle plus Ă©panouie ? đ Eh bien, on attend ton e-mail ! Et si tu aimes dĂ©jĂ ton travail, ne nous contacte surtout pas ! Ou alors fais-le pour nous recommander ta boite đ
Si cette édition vous à plus, je compte sur vous pour la partager !
Lucien & Mélanie
Et si on a dĂ©couvert la newsletter via le web et que l'on a pas reçu de mail, on fait comment pour vous dire "coucou đ" et recevoir de l'aide pour trouver le job de ses rĂȘves đ ?
Bravo et merci pour cet article en tout cas !
Coucou MĂ©lanie et Lucienđ
Je souhaiterais Ă©galement recevoir de l'aide pour trouver le job de mes rĂȘves aprĂšs avoir complĂ©tĂ© ma formation de dĂ©veloppeur web!
Merci !