Article original : How answer — and ask — questions intelligently in tech interviews

Par Salma Elshahawy

Tout le monde aime changer d'entreprise pour trouver le meilleur poste qui lui convient. Actuellement, je postule pour des emplois dans des entreprises qui ont une culture d'équilibre entre vie professionnelle et vie privée.

J'ai postulé pour un poste d'ingénieur logiciel chez X-company. C'était l'entreprise la plus professionnelle pour laquelle j'ai jamais passé d'entretien. L'intervieweur était bien préparé et a laissé suffisamment de temps dans notre réunion pour échanger des questions.

Dans cet article, je vais partager les questions que l'intervieweur m'a posées (questions mixtes, comportementales et techniques). Je vais également partager les questions que je lui ai posées lorsque ce fut mon tour de lui poser des questions.

J'ai décidé de documenter cet entretien parce que je crois que ce fut une expérience précieuse dans l'entretien technique et comportemental. Peut-être que cela aidera d'autres ingénieurs à se faire une idée de la manière de répondre à ce type de questions.

Q1 : Parlez-moi de vous

Ce type de question est posé pour que vous puissiez vous exprimer brièvement et capter toute l'attention de votre intervieweur. Vous devez donc vous entraîner à répondre à cette question avant de la rencontrer. Je préfère écrire un résumé abstrait sur moi-même et m'entraîner à le dire en un maximum de 30 secondes ou un pitch d'ascenseur.

A1 : Je suis ingénieur logiciel avec un parcours en ingénierie mécanique. Je suis passionnée par le code bien écrit, organisé et testé. J'ai de l'expérience dans les langages de script et fonctionnels.

J'ai construit de nombreuses applications SaaS incluant l'authentification, l'autorisation et les paiements sécurisés. J'ai découvert la programmation grâce à ma carrière précédente où j'ai construit des applications pour aider dans le processus de conception.

Maintenant, je cherche à apporter mes compétences variées à une équipe qui a besoin d'un performer dédié avec une large compréhension des technologies.

Q2 : Décrivez une situation où vous n'aviez aucune ressource et où vous deviez livrer une fonctionnalité entièrement développée dans un délai spécifique

Pour ce type de question, vous devez expliquer trois choses à l'auditeur — le problème, la solution et l'action — sous forme d'histoire.

A2 : Je devais livrer une fonctionnalité pour un sprint en deux semaines en tant que démonstration. L'histoire utilisateur pour la tâche n'était pas claire et n'était pas encore décidée. De plus, le chef de produit était une nouvelle recrue et n'avait aucune idée de la fonctionnalité suggérée. Pendant ce temps, je n'avais pas assez de ressources pour identifier les entrées, les sorties et les dépendances.

J'ai donc décidé de parler au chef de produit et à mon chef d'équipe pour échanger des idées sur la façon de façonner une histoire utilisateur de base qui pourrait simuler la fonctionnalité. Nous avons eu une histoire utilisateur approuvée par le chef de produit. Enfin, j'ai commencé à écrire la logique métier qui implémentait la fonctionnalité.

Q3 : Parlez-moi d'une situation où vous avez dû escalader le problème à une autorité supérieure

A3 : Je devais écrire des tests unitaires pour la logique métier d'un autre développeur afin d'augmenter la couverture. Il y avait un bug dans le code qui faisait que le test unitaire pour un bloc particulier échouait toujours.

J'ai commencé une session de débogage pour trouver où se trouvait le bug afin de pouvoir le corriger. J'ai trouvé le bug — une requête de base de données. J'ai vérifié le propriétaire de la fonctionnalité et lui ai envoyé un email détaillé sur le problème pour le corriger. Il a répondu que je devais ajuster les tests unitaires au code qui existait déjà avec le bug parce que nous avions une démonstration de sprint le lendemain matin. Il n'était pas sûr de pouvoir le corriger avant cela.

Dans cette situation, j'ai décidé d'escalader le problème à notre chef d'équipe — écrire des tests unitaires pour un bug, c'est comme conduire une voiture en marche arrière. Notre chef d'équipe a enquêté sur la question et lui a demandé de corriger la logique métier.

Q4 : Comment vous assurez-vous que les instructions qui vous sont données sont précises et correctes ?

A4 : Je peux m'assurer que les instructions sont correctes par audit et examen minutieux. Par exemple, lorsque j'ai besoin d'apprendre quelque chose de nouveau à partir d'un tutoriel écrit, j'essaie de vérifier la sortie à chaque étape que j'ai faite pour m'assurer qu'elle correspond à ce qui est écrit dans le tutoriel.

Q5 : Comment vous assurez-vous que vos données sont stockées avec succès dans la base de données ?

A5 : Il existe plusieurs façons de faire cela. Je peux utiliser une méthode auxiliaire pour vérifier cette donnée dans la base de données. Si elle existe, mettre un drapeau et le définir sur vrai, sinon le définir sur faux. Peut-être que différentes façons sont plus intelligentes que celle-ci, mais je préfère la confirmation visuelle.

Q6 : Comment vous assurez-vous que la sortie est exactement celle de l'histoire utilisateur ?

A6 : Lorsque j'ai ma tâche assignée, je dessine un organigramme visuel qui démontre les entrées, les sorties et les dépendances pour me faciliter la tâche de rattrapage rapide au cas où je serais distrait par d'autres choses. De plus, il sera facile pour quelqu'un d'autre qui n'est pas familier avec ma logique métier de m'aider dans une situation où je suis bloqué.

Q7 : Parlez-moi en détail d'une situation où vous avez décidé de vous en tenir à la politique de l'entreprise ?

A7 : Je n'ai pas rencontré une telle situation dans mon expérience personnelle, mais j'ai vu cela arriver à l'un de mes collègues. Il devait faire un appel à un service externe pour tester la logique métier et s'assurer qu'il obtenait la sortie souhaitée. Pour faire cet appel externe, vous devez avoir un certificat pour activer un proxy qui vous redirigera vers des sites externes. Mon collègue a attendu la permission conformément à la politique de l'entreprise.

L'intervieweur m'a ensuite demandé ce que je ferais à sa place jusqu'à obtenir la permission ? Si cela m'arrivait, je préférerais aider d'autres personnes dans leurs tâches, car je déteste rester sans rien faire.

Ensuite, l'intervieweur m'a remercié pour mes réponses et m'a dit qu'il était prêt si j'avais des questions à lui poser. Je crois que l'entretien est un processus à double sens. J'ai fait mes devoirs et préparé quelques questions qui pourraient m'aider à comprendre la culture de l'entreprise et si elle me convenait.

Note : Il est crucial de préparer au moins deux questions à partir de la description de poste qui sont significatives et approfondies et qui indiquent votre intérêt à travailler à ce poste.

Q1 : Quels sont vos indicateurs de performance que vous utilisez pour juger si un projet/sprint est terminé ou a échoué ?

Dans cette question particulière, je cherchais à connaître leur qualité dans la mise en œuvre des fonctionnalités. Se soucient-ils seulement de faire passer un sprint ou se soucient-ils de la qualité ?

Q2 : Comment estimez-vous les tâches ? Et qui fait l'estimation ?

Je voulais savoir s'ils poussaient les développeurs et leur donnaient des tâches sans demander, ou s'ils ne se souciaient pas d'un délai pratique.

L'estimation des tâches peut être faite théoriquement en utilisant un simple nombre de Fibonacci avec une collaboration avec l'estimation des développeurs — mixte entre théorique et réel.

Q3 : Qui soutient la documentation du projet ? Et à quelle fréquence la mettent-ils à jour ?

Ici, je voulais m'assurer que si j'obtenais ce travail, je ne serais pas bloqué en attendant que d'autres personnes me mentorent et me guident à travers le projet pour me familiariser. Si la documentation était bien écrite, il serait facile pour moi ou pour quiconque de rattraper rapidement sans douleur.

Q4 : Quels outils utilisez-vous pour profiler votre logiciel/projet ?

Le logiciel de profilage est nécessaire car il fait deux choses significatives :

  1. Les bugs peuvent être trouvés tôt avant le déploiement dans l'environnement de production — économise beaucoup de temps.
  2. Vous pouvez optimiser votre application facilement.
  3. Vous pouvez explorer le flux complet du logiciel incluant les appels de base de données, etc.

Donc, je crois que s'ils ont un tel outil, ils sont une entreprise professionnelle, et j'ai une opportunité de développer mes compétences.

Un exemple de logiciel de profilage est Miniprofiler pour Ruby et Node.js

Q5 : Avez-vous des outils de statistiques de couverture de test ?

Mon objectif avec cette question était de voir à quel point ils se soucient de la qualité du code. Ces outils montrent en détail la couverture pour la couverture des lignes, ce qui signifie écrire des cas de test essentiels.

N'importe qui peut écrire du code, mais les bons développeurs se soucient des cas de test avant d'écrire une seule ligne de code. Je me soucie de la qualité.

Q6 : Votre entreprise organise-t-elle régulièrement des discussions techniques ?

J'étais curieux de savoir s'ils se souciaient de leurs développeurs concernant la croissance de carrière et l'amélioration des compétences de leurs ingénieurs.

Q7 : À quel point l'horaire de travail est-il flexible ? Avez-vous des jours de télétravail ?

Cette question révèle beaucoup de choses sur l'environnement de travail. Elle vous donne une image claire du type d'entreprise qu'elle est. J'ai posé cette question après plusieurs questions techniques pour me prouver d'abord à l'intervieweur. Avoir leur respect d'abord, puis poser ces questions personnelles.

Q8 : Qu'aimez-vous particulièrement dans l'entreprise ? Et qu'aimez-vous dans votre équipe ?

Je voulais voir s'il aimait travailler dans l'entreprise ou non. En tant que candidat, vous pouvez le savoir facilement à partir de leur ton — soit ils sont heureux, soit neutres. L'enthousiasme dans la réponse vous guidera pour savoir si cette entreprise mérite votre présence ou non.

Notes de clôture

Laisser une bonne impression lors de votre entretien est impératif. Cela garantira que votre intervieweur ne vous oubliera jamais. La conversation est une chance d'apprendre de nouvelles choses de votre intervieweur. Posez des questions intelligentes qui laisseront une impression positive et qui leur feront savoir que vous serez une valeur ajoutée pour l'équipe. Continuez à poser des questions tant que vous en avez l'opportunité. J'espère que mon expérience pourra aider d'autres développeurs dans leurs entretiens.

Enfin, si vous avez aimé mon article, veuillez me suivre ici sur Medium ou laissez un commentaire. Vous pouvez me suivre sur Twitter @salmaneg. Merci d'avoir lu et bonne chance dans votre recherche d'emploi !!!