Faites coder vos futures recrues (une journée entière, en conditions réelles)

Cela fait quelques fois désormais qu’en discutant recrutement tech deci delà avec d’autres startupers / CTOs je me rends compte que mon process se démarque un peu et dénote parfois avec originalité par “sa journée test”.

Je ne pense pas avoir là trouvé la solution idéale, puisque malgré cela je n’ai pas fait que des recrutements heureux, parce que cela prends du temps et que ce n’est pas adapté à toutes les typologies de boîtes (cela marche pour nous en tout cas en ce moment), mais je pense que cela vaut le coup d’être tenté au moins pour quelques profils clés.

Dans mon process type de recrutement, il y a tout d’abord une phase amont où on apprends mon candidat et moi à se connaître sur le papier, puis ensuite lors d’un premier entretien. Là, je présente de la façon la plus limpide et franche ce que nous faisons, là où nous sommes bons, là où nous sommes mauvais, comment nous fonctionnons, et surtout, ce que j’attends du candidat pour le poste en question : pour pas qu’il n’y ait de zones d’ombres pour le candidat, sur l’environnement de travail et la mission envisagée. Et aussi pour le mettre en confiance en commençant à parler. Là, j’attends ensuite qu’il joue cartes sur table et me montre via des projets (open source, perso, pro, académiques) ce qu’il sait faire, ce qu’il aime faire, ce qu’il aime moins faire, et ce qu’il aimerait faire. Je pense qu’à cet entretien, j’essaye de jauger durant 40% du temps de l’entretien les compétences techniques de mon candidat, et le reste du temps sa personnalité, sa motivation, et le fit potentiel pour l’équipe. Et aussi occasionnellement ses “prétentions salariales” ;)

En général, sur 10 candidats initiaux, deux réellement se démarquent et m’intéressent suite à ce process. C’est à ce moment là que je propose une journée de test en condition réelle dans nos locaux.

L’intérêt de cette journée est double:

  • Pour le candidat : ça lui permet de voir réellement la qualité du code, des développements, de ses futurs collègues et l’ambiance de la startup durant toute une journée. Ce point est très important pour moi, car c’est à mon sens un raison majeure des mauvais recrutements: de fausses / mauvaises promesses (involontaires la plupart du temps) à l’embauche qui vont rapidement démotiver le développeur une fois in situ.
  • Pour moi recruteur, mais aussi pour mes développeurs, c’est le moyen de tester le candidat en live / en pair coding sur des réels problèmes de codes de la solution. Cela ne me sert pas à grand chose à priori un cador dans un domaine si au bout d’une demie journée je ne le vois pas force de propositions ingénieuses (pas forcément correctes hein) sur une réflexion réelle et business appliquée à mon cas réel. Certains candidats performent étonnamment bien sur des entretiens amont et des problèmes “types” d’entretien, et sont relativement “plats” en vrai. Cette journée permet aussi de jauger de la rapidité d’assimilation / réflexion / implémentation / proposition d’idées du candidat, en situation réelle toujours. C’est un point important que j’ai toujours trouvé difficilement quantifiable sans cette journée de test. Enfin, cela me permet de récolter plusieurs points de vue suite à cette journée, ceux de mes développeurs (trouvent-ils qu’il a le niveau ? se voient-ils travailler avec lui ?) et même ceux de mes commerciaux, ou tout autre domaine-related employé de la boite. Une nouvelle recrue dans une équipe, c’est certes un nouveau profil qui doit correspondre à une certaine attente, un certain profil, mais aussi une pièce de puzzle qui doit s’assembler avec les existantes déjà présentes, et cela a parfois autant de poids que la nouvelle pièce en elle-même.

Attention, cette journée est une journée bien huilée et préparée. Sans un minimum de préparation, cela ne servirait pas à grand chose, et serait plus une perte de temps. On ne catapulte pas un nouveau venu n’importe comment dans l’arène ;)

Le programme :

  • Bien souvent, je fais un petit tour du propriétaire avec le candidat, aussi bien au niveau de l’équipe que de l’archi et de certains bouts de code. Cela dure une petite heure.
  • Le candidat va ensuite rejoindre la team qu’il serait amené à compléter, et va cotoyer chaque dev de celle-ci entre 30 minutes et une heure. Ce temps sert pour chaque dev à expliquer son quotidien, et passer un peu de temps en pair coding afin de challenger le candidat et le jauger, chacun un peu à sa sauce (certains sont plus vicieux que d’autres, et bien plus souvent que moi).
  • Tout cela nous porte généralement au déjeuner tardif (14h): là c’est l’occasion pour une grande partie de la team de partager le repas avec le candidat et de se détendre autour d’un ping pong.
  • Suite à cela, il reste 1-2 heures de travail où le candidat est placé seul sur un sujet qu’il aura abordé et auquel il aura été “formé” par un autre dev le matin, afin de le continuer seul et de jauger en fin de journée sa rapidité, sa rigueur, sa technicité.

Cela fait une journée bien remplie, pour le candidat comme pour moi, où je dois trouver le plus de disponibilité au sein de mon équipe et avec un ou deux challenges techniques accessibles pour ce candidat (une matinée pour apprendre et s’immerger en pair coding, une aprèm pour y travailler seul).

Cela doit facilement prendre 4 heures de temps homme à la boite au niveau de la salle dev, 3 heures de “formation”/”culture gé” dispensé au candidat, et 2-3 heures de travail “effectif” réalisé par ce dernier. Il est à noter que cette journée n’est jamais rémunérée (mais dédommagée niveau transport et dejeuner) et que le travail effectué par le candidat est rarement repris (car même si le travail est bon, il ne sera jamais suffisant en l’état pour intégrer la branche principale, sans être lourdement refactorisé, et par conséquent, souvent repris from scratch par un des devs de la team).

Et vous, avez-vous ce genre de journée dans vos process de recrutement ? Avez-vous d’autres “curiosités” notables ?

Ce complot mondial des hackathons

Mon ami Liam a récemment jeté un pavé dans la mare avec ce billet au sujet des hackathons et introduisant son nouveau concept de coding in the dark.

Je n’ai pas souvenir d’avoir lu déjà (si vous avez de bonnes ressources, je suis preneur) de point de vue similaire à ce sujet, et une telle vérité sans masque ni hypocrisie:

Let’s face it. Hackathons suck. I’ve been to about a dozen of them, as a developer, as a mentor, as a jury member, and as press. Here’s what I’ve noticed.

Developers just want to code, but they have to pitch a business at the end. Juries just want to meet developers, but they get stuck with some B-School student talking about viral engagement and the mobile revolution. And Sponsors – well, Sponsors, after a weekend of hocking your company, you get the stiff reward of knowing that the 3rd place winner and the runner up for best UX used your API. Congratulations.

Pour avoir participé / suivi / sponsorisé des rendez-vous de la sorte, au bout d’un certain temps je suis arrivé à un constat similaire. Ces hackathons, qui, sur le papier, sont une bonne initiative pleine de bonne volonté et éventuellement de potentiel fun, business, etc. sont à mon sens souvent une perte de temps pour les participants et une bonne intention maladroite de la part des organisateurs.

Les bonnes idées/valeurs sur le papier du hackathon :

  • Se sortir les doigts du c** et taffer pour faire des rencontres et gagner en XP, en apprendre plus sur soi même en équipe et temps limité
  • Valider une idée business, faire adhérer des personnes / adhérer à une idée business et travailler dessus avec des personnes
  • Rencontrer de potentiels co-founders de tous horizons
  • Apprendre : en général et sur soi-même

Et je dois en oublier quelques unes.

Les (plus réelles) vérités de la plupart des hackathons :

  • Des teams bancales (90% de devs ou 90% de biz/produit)
  • Des sites statiques (limite powerpoint) qui ne prouvent rien niveau techno ou produit
  • Du crappy code spaghetti qui a juste fait perdre un week end à des devs et qui ne leur a rien appris
  • Des bizguys persuadés de tenir l’idée du siècle et qui perdurent des mois sur l’idée bancale trouvée du week end (et qui sortent le sempiternel “go viral” pitch)
  • Une horde de rapaces qui gravitent au sein de l’écosystème startup et qui cherchent de nouveaux pigeons à encadrer / mentorer dans leur projet et projets futurs (moyennant finance, parts de boite, etc..)
  • Des serials hackathoniens drogués qui se font leur fix et que l’on retrouvera au prochain sur une idée nouvelle (et peu évolué entre les deux)
  • De la fatigue, du bruit et pas de tant de fun que cela

Et je dois en oublier à nouveau quelques unes.

Et tous les gens qui auront perdu leur week end diront le lundi matin à leurs collègues qu’ils ont taffé sur un truc énorme, avec une team sympa, une organisation en or, des gens très intéressants et intéressés par eux et leurs projets avec qui ils ont gardé contact: et rejoindront ainsi le complot mondial des hackathons..

Bon, ok, je force un peu le trait.. Tous les hackathons ne sont pas tous mauvais, bien entendu :)

Les hackathons sont sur le papier une bonne idée, mais chaque personne doit en amont bien cibler son hackathon en fonction de ce qu’il recherche et de son niveau de connaissance startup / technique, sous peine de ne pas trouver ce qu’il recherche et perdre son temps.

  • Pour les tous novices, un petit hackathon “général” (startup weekend, bemyapp..) est un bon moyen de rentrer dans le bain startup. Pour des bizguys tous frais et des devs troglodytes, c’est l’occasion de se frotter un peu les uns aux autres et de faire connaissance, de voir comment travailler ensembles. Mais ce n’est pas là que vous trouverez (sauf exception) votre prochaine team et idée startup. N’en abusez pas, un ou deux suffisent, après c’est de la pure perte de temps. Sortez différemment.
  • Pour les plus expérimentés et pour les profils plus techno/produit, les hackathons plus “spécifiques/spécialisés” (hackathon sur une techno donnée, sur une API donnée organisés par une boite (Eg: Twitter, Dropbox, Foursquare), sur un framework donné) seront eux l’occasion d’apprendre réellement plus et d’aller plus loin: pour le coup, des possibilités réelles d’embauches sont là à la clé et une bonne émulsion techno / produit au rendez-vous avec des gens moins novices. On rentre plus dans le sujet.. Par contre ça ne sera pas là que vous rencontrerez le plus de variété de profils, et bizguys vous risqueriez de vous ennuyer un peu.
  • Enfin, fuyez comme la peste tous les hackathons mercantiles à la “Meilleur développeur de France” et consorts qui ne seront que perte de temps et d’argent !

Et vous, quelle est votre expérience / ressenti sur les hackathons que vous avez pu faire ? Faites vous partie du complot modial ?

Recherche devs spécialistes, et non de couteaux-suisses techniques

Aujourd’hui, petit billet à dominante recrutement, cela faisait bien longtemps tiens :)

Chez Wisembly, nous recherchons en permanence des personnes talentueuses pour rejoindre nos équipes. Souvent en postant des offres bien précises, parfois, au détour d’un chemin, par pur hasard, au grés des rencontres.

Et si je n’ai toujours pas changé d’avis sur l’inutilité d’un CV académique sans projets perso et / ou profile Github (ou Dribble, Pen.io, Stackoverflow..), je me rends compte que trop de candidats à mon goût se présentent à moi comme véritables “couteaux-suisses” techniques sachant tout faire, indispensables pour ma startup.

Dans mon cas, ainsi que celui de nombreuses startups, je pense que c’est totalement faux. Je vais essayer de détailler un peu ici pourquoi.

Tout d’abord, ce qui nous différencie nous startups du reste du monde à mon sens, c’est la capacité à concevoir et délivrer de nouveaux produits ou usages comblant de la façon la plus élégante / efficace qu’il soit un cruel manque business.

Pour ce faire, il ne suffit pas d’aligner superficiellement quelques lignes dans deux trois langages et frameworks différents et pusher le tout sur un serveur. Il faut (et ceci est le rôle du CTO normalement) étudier quel est le meilleur mix techno à adapter pour mener à bien son développement produit, composé normalement de quelques techos “standards / classiques” mais aussi de techos plus méconnues, innovantes et qui évoluent rapidement.

Dans ce contexte là, il faut:

  • être capable de maitriser et pousser dans ses retranchements chaque techno employée, pour en tirer sa quintessence, gagner en performance, efficacité de développement et expérience utilisateur.
  • connaitre sur le bouts des doigts ses technos pour les agencer efficacement et avoir une archi robuste mais souple qui permet de shipper vite, pivoter aisément et iterer agilement sur ses features.
  • savoir placer ses meilleurs ressources sur du front, d’autres sur du back, d’autre sur de l’algo, d’autres sur ceci ou cela

Je pense que pour être le meilleur compétiteur dans son domaine technique / business, il faut être le plus exigeant et le plus perfectionniste tout en restant le plus efficace / performant possible (rien que ça!). Dans le monde de la technique, cela ne peut venir sans expériences et kilométrage au compteur dans le code en général, et dans quelques techno en particulier. Bien que ce billet sonne très vrai, et qu’un excellent codeur dans un langage donné peut être tout aussi bon dans plein d’autres, je suis convaincu qu’une personne faisant à longueur de journée du front, du back, du js et du dev ops sera juste moyen en tout et excellent en rien.

Attention, ne me faites pas dire ce que je n’ai pas écrit. Il est important d’être pluridisciplinaire et de pouvoir mixer les sensibilités / technos: c’est une preuve d’ouverture d’esprit qui ne peut qu’être bénéfique !

Mais lorsque je rencontre un candidat et que l’entretien tourne ainsi:

- “Bonjour, c’est quoi ton kiff dans le code au quotidien, au boulot ou le soir chez toi ?”
- “Alors moi ce que j’aime, c’est faire du Python sous Django et du Symfony2 en PHP, tout en faisant du javascript MVC sous Ember ou Angular, en utilisant HTML boilerplate et Bootstrap en less. Parfois du Saas”
- “Ah, très bien, et tu préfères travailler plus sur quoi? Du gros back, du gros js ou de la UI/UX ?”
- “Ah mais j’aime tout moi !”
- “Bon, et du coup, tu te vois plus travailler dans une team back, js ou front ?”
- “Bah, comme vous voulez, je sais tout faire et j’aime tout faire”
- “Bon… t’as des projets à me montrer ?”
- “Oui, 5 sites, avec des potes à chaque fois, j’ai un peu touché à tout, j’adore ça hihihi”
- “Très bien, on se rappelle !..”

Et bien ça ne va pas être possible mon garçon. Pour moi en tout cas.

Peut-être qu’au sein d’une startup sans CTO ce genre de profil peut faire l’affaire, peut-être qu’au tout début d’une startup en employé dev n°1 ou n°2 cela peut passer. Mais rapidement je pense il faut veiller à former des teams par technos / compétences afin de les pousser à l’excellence, et ce genre de profil “indécis”, non “spécialisé” aura difficilement sa place.

Et vous qu’en pensez-vous ? Quelles sont les teams que vous avez constitué ? Recruteriez-vous ce genre de profil et dans quels cas ?

Les différentes vies d’un CTO (en startup bootstrap)

Ce week end, je discutais avec Nicolas, Lead Dev d’une petite startup Belge qui endosse désormais le costume de CTO alors que sa start up recrute et étoffe son équipe technique. En réfléchissant aux différences de responsabilités, de travail au quotidien que cela occasionnerait, cela m’a donné à réfléchir à mon parcours depuis ces 2 dernières années à mon poste de CTO.

So far, je distingue 3 phases différentes pour ce poste, dépendant très fortement de la taille de la société, de son/ses produits, de sa croissance et de l’équipe en charge de la technique. Trois vies donc, deux que j’ai vécu ou que je vis actuellement, et une troisième dont je commence seulement à dessiner les contours.

Continue reading

Qu’est ce qu’un Lead Dev (en startup)

Il arrive un temps dans une startup, plus ou moins tôt en fonction du profil des associés, de leur niveau et appétence technique, où il devient nécessaire de recruter un Lead Developeur (comprenez en français, “développeur en chef”. Oui, c’est beurk).

C’est mon cas actuellement. Et avant que de poster une offre, il convient de se poser et de réfléchir aux points suivants, afin d’avoir les idées claires:

  • À quoi correspond ce poste exactement? Quelles sont ses caractéristiques, comment s’insère-t-il par rapport aux postes existants?
  • Une fois ceci défini, de quel profil j’ai besoin au juste? De qui ai-je besoin?

Mon expérience personnelle m’a donné à réfléchir à ces points en deux fois, par une période d’essai d’intervalle..

Continue reading

La traite des stagiaires (dev, en startup)

Ces derniers temps, plusieurs signes fugaces, diffus mais bien présents ne m’ont pas échappé: sur Twitter des “stage développement en startup non rémunéré, excellente ambiance” tandis que sur Linkedin, Remixjobs ou autre job board des “recherche stagiaire(s) expérimenté(s)” ou encore “stagiaire excellente connaissance en [remplacez ici par votre techno]” éclosent deci delà. A ne pas s’y méprendre, la saison 2012 des stages abusés est désormais ouverte!

Continue reading