Vous êtes un programmeur talentueux, expérimenté et rempli de potentiel? Tant mieux! Eh bien, c’est le temps de mettre l’orgueil de côté et de préparer votre prochaine entrevue.
Que vous soyez un ingénieur logiciel ou un programmeur aguerri, il existe toujours une portion du processus de sélection qui est dédiée à l’évaluation des compétences techniques. Celle-ci sert notamment à évaluer votre niveau de compréhension de principes de base, mais avant tout, elle permet de voir comment vous réfléchissez dans un contexte qui s’apparente à celui du travail.
En tant que recruteur, j’adore cette partie de l’entrevue! Elle me permet de voir un candidat dans son état le plus naturel. C’est ce qui se rapproche le plus d’un échantillon de travail véritable. Impossible pour le candidat de se défiler en me donnant une réponse entièrement préparée à l’avance.
Le candidat doit répondre quelque chose et surtout, ne pas répondre n’importe quoi. C’est plutôt exigeant mais ça peut être très payant en bout de ligne! Suffit de savoir quels sont les comportements et le type de réponses attendus. Voici mes recommandations.
Identifiez l’intention derrière la question
J’entends souvent le candidat répondre: « Hmm, drôle de question! Vous essayez de me coincer avec votre question? » Ou… « Ayoye, ce ne sera pas facile à répondre sous pression cette question-là ». Et pourtant, le candidat a la formation et la compétence pour y répondre. Il suffit de pousser sa logique un peu plus loin et de prendre le temps de réfléchir avant de répondre.
La réalité, c’est que la grande majorité des candidats qui ont été retenus pour une entrevue en personne savent déjà comment résoudre ces problèmes/énigmes. Après un certain temps de réflexion, ils arrivent généralement à un résultat tout à fait satisfaisant.
Maintenant, comment allez-vous vous différencier des autres candidats en répondant à ces questions? C’est exactement ce sur quoi vous devriez vous concentrer.
La clé c’est de connaître l’intention derrière la question. Si la solution qui vous semble la plus logique est un patron de conception (design pattern), sachez que l’intention de l’intervieweur est de connaître votre compréhension de ce concept, pas seulement le nom du patron de conception que vous allez choisir.
Vous devriez donc non seulement identifier la bonne solution mais aussi l’expliquer en détail.
Voici ce que tous les chefs d’équipe en programmation vont chercher à évaluer pendant les questions techniques:
- votre compréhension de base des concepts théoriques;
- vos habiletés de communication et d’explication;
- votre rigueur dans la résolution de problèmes;
- votre utilisation des bons outils/méthodes pour arriver à vos fins;
- et votre débrouillardise face aux défis.
Posez des questions complémentaires
Il arrive souvent qu’une question technique soit volontairement courte. Certaines informations sont parfois disponibles auprès de l’intervieweur qui peut volontairement vous les cacher. Un peu comme dans la vraie vie, vous pourriez recevoir des informations incomplètes.
Le réflexe du candidat junior sera d’essayer de tout résoudre seul. Le réflexe du senior sera de questionner l’intervieweur pour en savoir plus sur le contexte.
Par exemple, si l’intervieweur vous demande d’expliquer le développement d’une application comptable, mais qu’il omet de mentionner la plateforme (desktop, mobile, etc.), les fonctionnalités attendues, le langage exigé (C#, C++, Java, etc.) ou le délai accordé de développement, vous démontrerez votre professionnalisme en posant des questions additionnelles.
Si les réponses sont vagues, pas de panique. Profitez-en pour émettre vos propres hypothèses en citant des expériences vécues.
Parlez de votre raisonnement à voix haute
C’est sans conteste le conseil le plus difficile à suivre… mais le plus payant.
Malheureusement, nous avons tous été conditionnés dans les examens à l’école à se réfugier dans notre tête dans un silence absolu pour résoudre les énoncés. Vous l’aurez deviné, cela n’aidera aucunement votre interlocuteur à comprendre votre raisonnement.
J’en conviens, il vaut mieux rester silencieux quelques secondes avant de choisir sa réponse plutôt que de dire n’importe quoi. Mais une fois fixé sur votre solution, parlez-en en détail.
Avant tout, l’intervieweur souhaite tester votre logique, comprendre comment votre raisonnement fonctionne, identifier les éléments auxquels vous apportez le plus d’importance. Si vous ne dites rien, vous ne l’aidez pas à se faire une tête là-dessus.
Certains candidats sont plus habiles à l’écrit. Il n’y aucune gêne à vouloir gribouiller votre résolution de problèmes. Il sera d’autant plus facile pour vous de présenter votre résultat.
Plusieurs employeurs mettront volontairement à la disposition des candidats un tableau blanc avec des crayons. S’ils ont déployé cet arsenal, c’est qu’ils s’attendent à ce que vous l’utilisiez pour illustrer votre propos ;)
Offrez une 2e solution
La plupart des problèmes ont plusieurs bonnes solutions et une série infinie de mauvaises solutions.
Votre premier instinct vous a sûrement offert une des bonnes solutions possibles. Bravo!
Pourquoi ne pas parler d’une autre solution que vous aviez envisagée durant votre réflexion? Mentionnez-la et dites pourquoi vous ne l’avez pas choisie. Vous démontrez ainsi que vous êtes conscient que le problème peut être approché de différentes façons. Et les gestionnaires aiment ça, les gens ouverts d’esprit!
Là aussi, vous vous démarquerez des autres candidats qui se seront arrêtés à la première solution. Ne manquez pas cette opportunité de démonter l’ampleur de vos compétences.
C’est correct d’avoir une opinion
Lorsqu’on est appelé à résoudre des questions techniques, il arrive que la solution revienne à une question de préférence personnelle. Choisir entre tel ou tel langage, utiliser telle ou telle méthode. C’est tout à fait naturel d’avoir des préférences!
L’employeur s’attend à ce que vous puissiez exprimer votre opinion lorsque nécessaire. Cela démontre votre maturité professionnelle en tant que développeur.
Au final, aucun employeur ne veut embaucher un robot, sans opinion et sans saveur, qui répète des recettes apprises par cœur!
Ne laissez jamais un « blanc »
Hésiter, réfléchir, revenir sur son idée initiale. Tous ces comportements sont naturels et attendus par votre interlocuteurs au cours d’une entrevue. Par contre, personne ne souhaite voir un candidat répondre « Je ne sais pas ».
Vous ne « savez pas » quoi exactement? La réponse? Ce n’est pas grave. Vous savez plein d’autres choses. Vous ne devriez pas avoir à dire « Je ne sais pas ».
Commencez par mentionner ce que vous comprenez de la question. Dites ce que vous savez sur le sujet et ce que vous avez appris récemment en la matière. Mentionnez ensuite l’élément qui vous bloque. Avec un peu de chance, l’intervieweur pourrait vous débloquer en vous donnant un indice supplémentaire.
Personne ne connaît toutes les réponses. En milieu de travail, vous ne dites pas « Je ne sais pas comment faire » lorsque votre superviseur vous demande une nouvelle tâche. Vous devriez plutôt démontrer que vous avez une stratégie pour apprendre ce qui vous ignorez sur cette question.
Par exemple, expliquez les hypothèses que vous tenteriez d’aller valider sur Internet ou les tests que vous feriez dans votre environnement de développement pour tenter de résoudre le problème.
Révisez vos bases
Vous devriez accorder une partie de votre temps à la préparation de votre entrevue. Oui, oui! Vous êtes sûrement un excellent programmeur, mais dans le feu de l’action et dans le stress de l’entrevue, des éléments théoriques peuvent certainement vous échapper.
Vous connaissez les classiques: algorithmes, structures de données, langages de programmation, patrons de conception. Plusieurs candidats d’expérience se font prendre par surprise car ils n’ont pas utilisé ces connaissances récemment et ne les ont pas révisées avant l’entrevue.
Cliquez ici pour en apprendre plus sur la préparation d’entrevue technique recommandée par un chef programmeur chez Google.
Chers programmeurs, on se revoit bientôt en entrevue!
super blogue, Je commence seulement a te suivre, tres pertinent et interessant