Conseils pour trouver un travail dans la tech
Fin 2023, mon aventure de CTO se finit abruptement par manque d’argent dans ma startup, à moi les joies du chômage et surtout de la recherche d’un nouveau job.
La bonne nouvelle c’est que j’ai réussi à trouver chez Payfit dans un contexte extrêmement intéressant.
Dans cet article, j’aimerais partager un peu de mon expérience et donc des conseils pour ceux qui se retrouveraient dans la même situation.
D’abord une mise en contexte:
j’ai 18 ans d’XP et je cherchais un poste d’EM ou de Staff dans une “scale up” donc les exigences de ces entreprises deviennent assez importantes avec un processus de recrutement souvent long
J’ai un CV “riche” constitué de nombreuses années dans le monde des sociétés de service et du consulting. J’ai beaucoup bougé et peu d’XP dans les “scale up”
je n’ai jamais essayé de passer des entretiens dans une GAFAM donc peu voir pas habitué à la nature des entretiens typiques de ces entreprises
Pour information, chaque entreprise va avoir son style de parcours de recrutement mais, pour beaucoup, celui-ci va être proche de celui-ci:
1er entretien avec une personne du recrutement où vous allez vous présenter rapidement. Cette personne vous présentera l’entreprise et le parcours de recrutement.
un entretien de code (oui souvent même pour les managers), très souvent en direct sur une plateforme type Coderpad
un entretien de System Design
un entretien “culture fit”
(bonus) un entretien orienté manager … pour les futurs managers (étonnant, non ?)
Avant de rentrer dans les conseils tirés de mon expérience (donc limité 😉) sur chacune de ces parties, quelques éléments plus généraux:
Vous allez avoir beaucoup de frustration, de rejets, parfois la personne en face n’est pas de bonne humeur et n’importe quelle raison sera la bonne pour arrêter la. Sur 18 candidatures, j’ai eu que 3 propositions au final.
Vous allez avoir des retours WTF (un des meilleurs pour moi est de m’entendre dire que je suis rouillé… après 100k lignes de code en 1 an, c’est assez “ironique”), voir carrément pas de retour d’entreprise pourtant reconnue…
Restez un maximum neutre lors de vos interactions avec vos interlocuteurs. Placer une critique ou blague, par exemple, sur un langage … peut parfois se révéler fatal 😀
Préparez des questions avant chaque étape des entretiens, comme ça vous en avez toujours une ou deux sous le coude même si vous êtes rincés à la fin d’un entretien tech assez intense.
On va maintenant se concentrer sur certaines parties !
———
Le CV
Commençons par le CV. Oui car c’est votre porte d’entrée. Vous aurez à le présenter lors du 1er entretien … mais sûrement aussi lors des autres.
1 ou 2 pages max. Le choix dépend du nombre d’années d’expérience et du nombre d’expériences différentes.
L’objectif est de mettre en avant ses réussites, d’un point de vue technologique bien sûr, mais savoir les relier à des succès business ou organisationnel est un point très important si vous pouvez le faire. Mettre des chiffres de style OKR est aussi un gros plus, par exemple, “en standardisant nos Github Actions nous avons diminué le temps de build de 25% réduisant les coûts mensuels de 300€ / mois” (j’invente totalement).
Voici le mien, qui vaut ce qu’il vaut 🙂
Notez que je n’ai pas utilisé de design très “fancy” mais je ne suis pas sûr que ce soit le plus important.
Ensuite, viens le plus important, savoir le raconter comme une histoire en 5–10 min max en suivant ses pratiques:
Être synthétique
Raconter une histoire avec des chapitres
Définir l’idée principale de chaque chapitre (souvent lié à un nouveau poste)
Expliquer la transition
Enfin n’hésitez pas à poser des questions pour ne pas être monotone et faire en sorte de “réveiller” l’attention des personnes en face (par exemple : “Connaissez vous la société Sunday ?”)
———
Le live coding
Dans l’exercice de live coding, le but est de savoir si vous avez les bases du code (if, for, class, function …) mais surtout, très souvent, les bases de l’algorithmique. Malheureusement notre travail de tous les jours, nous faisons rarement de l’algo au sens académique du terme … et encore moins des algos avancées comme la programmation dynamique, voir juste des parcours d’arbres. Bizarrement un dev junior sortant d’une formation avancée (aka pas le bootcamp) a plus de chance de s’en sortir qu’un dev senior et surtout qu’un manager.
C’est finalement l’exercice des entretiens le plus ennuyeux car il va nécessiter d’avoir bachoter un peu avant, voir d’y avoir passer des heures, pour des connaissances que vous n’utiliserez très certainement pas dans votre vie de tous les jours ensuite.
On peut rentrer dans l’exercice uniquement adapté aux personnes faisant des concours d’algo ou l’Advent of Code. Heureusement je n’ai pas rencontré ce genre d’exercice mais je n’ai peut être pas viser assez haut 😀
Alors comment se préparer ?
D’abord il faut être sur d’avoir les bases et pour ça, j’ai croisé 2 ressources vraiment intéressantes:
Ce cours en ligne est vraiment excellent en étant, pour l’instant, gratuit https://frontendmasters.com/courses/algorithms/
Ce livre clair et efficace que vous pouvez trouver en anglais et français https://www.manning.com/books/grokking-algorithms
L’avantage c’est que ce sont des bases qui sont toujours intéressantes à avoir en tête.
Pour valider, il faut s’entraîner et, perso, j’ai opté pour les exos “LeetCode” sur le site https://neetcode.io/practice qui liste 75 ou 150 exercices de niveau easy, medium ou hard. Mon sentiment c’est que vous devriez pouvoir faire les exercices faciles sans soucis, vous entraîner sur du moyen et que le niveau difficile n’est pas nécessaire (enfin j’espère 😀)
Ensuite, la question devient: est-ce que je vais plus loin soit par nécessité car vous visez des entreprises qui vont demander plus, soit pour être ultra prêt pour du plus classique.
Dans ce cas, je conseille la bible Cracking the coding interview (et il y aussi Elements of Programming Interviews mais je n’ai pas accroché). Oui presque 800 pages, peu agréables à lire, mais qui font le tour de tous les sujets possibles avec des exercices.
Une stratégie d’optimisation peut être d’essayer de progresser dans les exercices LeetCode puis de lire les passages du gros livre vert au besoin.
De mon côté, étant au chômage, je me suis fait plusieurs chapitres (en lisant les solutions des exercices) tout en avançant sur mes entretiens. Je pense que ce livre, dans un cadre idéal, doit se digérer en plusieurs mois.
Le system design
C’est l’entretien que je trouve le plus intéressant mais aussi potentiellement le plus difficile, surtout pour les juniors, car il faut accumuler un grand nombre de connaissances notamment en architecture.
C’est intéressant car, pour le préparer, il va falloir que vous ayez un certain nombre de connaissances en tête.
Pour ça, le mieux est de commencer par le System Design Primer sur Github qui est gratuitement accessible. Les éléments présentés dans ces différentes pages sont pour moi la base (de tout développeur sénior au passage 😉).
Si vous voulez aller plus loin, les deux volumes “System Design Interview” de Alex Xu permettent au cours des différents chapitres de découvrir différents problèmes d’architecture et leurs solutions (discussion temps réel, paiement, réservation d’hôtel …). Ce sont parfois des sujets très pointus comme le consistent hashing ou la gestion des cartes dans Google Map.
Vous allez voir qu’on vous parle aussi des calculs à savoir faire sur le dos d’une enveloppe et c’est assez important car cela va vous permettre d’être à l’aise pendant l’exercice en lui même qui devrait se passer, dans un monde idéal, de cette façon:
l’interviewer (ou le binôme souvent) vous présente un contexte et une problématique (comment gérer la réservation d’un hotel) avec peut être certaines précisions en terme de chiffres
vous posez un maximum de question sur le besoin métier (doit-on être sûr qu’il reste une chambre quand l’utilisateur essaie de réserver ? peut on être éventuellement consistant ?), sur la volumétrie (nombre d’hôtel, de chambres par hôtel, du nombre de Daily Active User pour calculer le nombre de requête par seconde ..) ou encore sur les besoins “non fonctionnels comme la sécurité ou l’UX.
Vous allez utiliser les “back-of-the-envelope-calculations” pour vous faire une idée de la nature de l’architecture nécessaire. Vous n’aurez pas du tout les mêmes solutions si vous avez 10 req/s ou 1 million. De même si le besoin tient sur 1 Go en mémoire ou 1 To. Ne pas hésiter à présenter vos calculs pour demander si vous partez dans la bonne direction.
Vous allez dessiner et présenter l’architecture la plus simple possible en la commentant en direct. Il faut savoir avancer doucement en montrant qu’on répond globalement au besoin.
A partir de là, on va très surement commencer à vous rajouter des contraintes ou des besoins supplémentaires et le fun commence … ou pas 😀
Pour moi, les clés de cet entretien (en dehors des connaissances) sont:
ne jamais partir sur la solution parfaite et complexe dès le début (attendez avant de mettre Kubernetes, Neo4J et de l’event sourcing 😛)
montrer que vous maîtriser les bases avant de sortir les archis les plus avancées (un script peut suffire sans sortir la Kappa architecture …). A minima, expliquez pourquoi vous partez la dessus directement à partir des chiffres et de la volumétrie.
réfléchir à haute voix
ouvrir une réelle discussion et poser autant de question que possible (tout en ressentant la qualité de l’échange avec la ou les personnes en face)
Cet entretien se fait souvent autour d’un outil comme Miro ou Excalidraw donc n’hésitez pas à les explorer si vous ne les connaissez pas déjà.
Des exemples de vidéos intéressantes montrant à quoi peut ressembler cet entretien:
Les vidéos de ces 2 chaînes sont de qualités parfois inégales mais intéressantes pour mieux comprendre l’exercice. Par contre, je ne les utiliserais pas pour avoir des connaissances.
———
Le “culture” fit et manager
Ce sont des entretiens qui peuvent plus ressembler à des exercices plus RH. Vous allez donc être confronté à ce genre de questions:
Avez-vous ajouté des situations de travail stressantes et comment les avez-vous gérées?
Comment gérez-vous une situation difficile?
Comment gérez-vous les conflits?
Quel est votre plus grand accomplissement professionnel?
Décrivez un moment où vous avez pris l’initiative?
Avez-vous appris quelque chose au cours des derniers mois?
Décrivez un moment où vous étiez responsable d’une tâche, vous n’avez reçu aucune formation et vous ne saviez pas comment l’accomplir?
Comment prenez-vous des décisions difficiles?
Avez-vous commis une erreur au cours des derniers mois? Comment l’avez-vous gérée?
Décrivez votre processus de résolution de problèmes.
En suivant des conseils j’avais préparé, à l’avance, des réponses à ces questions en m’inspirant de la méthode “STAR”. L’acronyme signifie Situation, Tâche, Action et Résultat. Voici une explication de chaque élément :
Situation : Décrivez le contexte dans lequel vous avez accompli une tâche ou relevé un défi au travail. Cela peut inclure des détails sur le projet, l’équipe ou le défi auquel vous avez été confronté.
Tâche : Expliquez la tâche réelle qui devait être accomplie suite à la situation. Il peut s’agir d’un problème que vous deviez résoudre ou d’un objectif que vous deviez atteindre.
Action : Parlez des actions spécifiques que vous avez entreprises pour accomplir la tâche. C’est la partie la plus critique de votre réponse, car elle met en valeur vos compétences, vos connaissances et votre initiative.
Résultat : Partagez les résultats ou les retombées des actions que vous avez entreprises. Idéalement, ces résultats devraient être quantifiables et démontrer l’impact que vous avez eu sur l’organisation.
A vous de voir aussi si vous voulez être vous-même ou maximiser vos chances de convaincre votre interlocuteur en répondant à ces questions. Si vous voulez maximiser vos chances, n’hésitez pas à “tuner” votre message en vous mettant en résonance avec les valeurs qui sont souvent mises en avant sur le site de l’entreprise.
Ces valeurs sont rarement ultra spécifiques et c’est normalement assez simple de trouver des contextes de votre expérience où vous avez été assez proche de ces valeurs.
Dans le cadre du manager, on vous posera des questions comme:
les “outils” et rituels que vous utilisez
votre façon de gérer les livraisons et de les planifier
votre communication avec votre management et le reste de l’entreprise
votre capacité à faire grandir vos managés et de gérer les problèmes
Vous devrez mettre en avant l’étendu de vos qualités de leader 😀
De nouvelles questions peuvent apparaître comme:
Si on allait interroger vos anciens managés, que dirait-il de vous ?
Quel type de manager êtes-vous ?
Des liens pour explorer la richesse de ces entretiens:
https://www.techinterviewhandbook.org/software-engineering-interview-guide/
https://leetcode.ca/2010-09-03-Software-Engineer-Behavioral-Interview-Questions/
https://leetcode.com/discuss/interview-question/462901/behavioralleadership-questions-for-interviews
https://www.engineeringleadership.xyz/p/lesson-29-interviewing-for-an-em
———
Pour conclure
Le conseil le plus important: prenez soin de vous et essayez de vous détacher émotionnellement rapidement des refus car le contexte du marché de l’emploi peut être (très) difficile.
N’hésitez pas à faire jouer votre “réseau” quel qu’il soit, c’est un vrai multiplicateur de vos chances.
Vous pouvez aller aussi lire cet article complet et plein de liens d’un américain qui lui à réussi à avoir 18 offres de FAANG+ (un vrai winner :p ). Cet article a été partagé dans la newsletter de The Allyance.
J’aimerais finir sur les très bons conseils de Karim Cassam Chenaï qu’il a résumé sur le slack de tech.rocks. Je voulais en copier une partie mais l’ensemble est bon donc je mets ici un simple copier coller !
Le contexte est une recherche de poste de CTO mais les conseils sont majoritairement applicables à n’importe quel rôle.
Le marché de l’emploi s’est inversé par rapport à ce qu’il était pré-Covid. L’offre est maintenant largement supérieure à la demande (j’exclus évidemment les rock stars). Vous êtes dans un rapport de force qui ne vous est pas favorable. Tenez en compte.
Ayez une liste de questions préalable qui déterminent le go/nogo (en respectant quand même les susceptibilités françaises, notamment vis-à-vis du salaire par ex. Soignez quand même votre première impression).
Vous êtes en compétition avec d’autres. Même si vous n’êtes pas choisi, ça ne dit rien de vous, ne déprimez pas, il y avait peut-être un profil imbattable en face de vous.
Vous méritez un retour honnête de l’employeur pour vous améliorer.
L’entretien d’embauche c’est un exercice de séduction, c’est de la vente (de soi-même) qui n’a rien à voir avec le job en lui-même. Deal with it.
Les entretiens peuvent prendre une tournure très différente suivant les personnes en face. De la discussion à baton rompue (plutôt sympa, vous pouvez dérouler votre jeu) à l’entretien “RH” sur la base de questions précises voire déstabilisantes et minutées (moins sympa la première fois…). Soyez prêt.e.s. Préparez bien les entretiens.
Ayez un ensemble de convictions concrètes et complémentaires (voir contraires) que vous pouvez distiller en fonction de la réceptivité et que vous pouvez raccrocher à des succès dans vos expériences passées.
Ayez des highlights à raconter : des moments clés qui ont fait la différence et que vous pouvez mettre en valeur.
Mettez en avant vos forces plutôt que vos limites
Énumérez ce que vous pouvez apporter spécifiquement à l’entreprise
Même sur du hands off, vous aurez à rassurer sur la partie technique. Les gens “s’offrent” un CTO, ils veulent absolument être rassuré.e.s sur ce sujet. Le CTO incarne la technique, le “comment” ne devrait pas trop les intéresser si eux-même ne sont pas tech. Soyez rassurant.e Oubliez un peu l’humilité, l’éloge du doute et les vertus de l’intelligence collective, montrez que vous êtes un.e “chef” (Évidemment, lorsque vous rencontrez l’équipe technique, vous changerez de discours).
Les recruteurs vont vous mettre dans une case (par ex en fonction du nombre de personnes que vous managiez en simultanée lors de votre dernière expérience). Il est difficile de convaincre que vous pouvez sortir de la case (même si on vous dit qu’il est important de think out of the box ! ça ne s’applique pas à ce moment là). Il vaut donc mieux rester dans sa case pour réussir la vente, vous n’allez pas changer le recruteur en 1h. Rappelez-vous que vous êtes un.e candidate parmi plusieurs.
Venez avec des questions et bossez votre connaissance de l’entreprise. Certains recruteur.euse.s veulent que vous leur disiez ce que vous avez compris de leur boite (n’oubliez pas, vous êtes 1 candidat.e.s parmi 10).
Il vaut mieux cibler plus finement et bosser plus les entretiens que viser large… mais, faire de la masse, c’est bien aussi, ça multiplie mécaniquement les chances (augmentation de la fréquence essais/erreurs)
Attention à la fatigue après avoir passé une demi douzaine d’entretiens. Assurez-vous de garder un enthousiasme communicatif lors de vos échanges et si ce n’est pas le cas, faites une pause.
Be ready to switch in English anytime!
Protégez votre santé mentale. Chercher un job et essuyer des refus peut être particulièrement difficile à vivre. Faites-vous aider si besoin
Utilisez un outil de suivi de vos candidatures. Une simple feuille de tableur avec quelques colonnes devrait suffire
Ne pas se focus que sur les postes de CTO : d’autres intitulés recouvrent les mêmes responsabilités, par exemple : VP engineering, head of software ou engineering manager dans des structures plus grosses.
———
✔️ Want more?
L’accompagnement proposé par The Allyance est décrit ici.