Comment suis-je entré dans ThoughtWorks ou une interview exemplaire

image

Ne vous semble-t-il pas étrange que lorsque vous allez changer de lieu de travail et que vous ayez besoin de passer une entrevue, vous pensez tout d'abord «vous devez vous préparer à l'entrevue». Résolvez les problèmes sur HackerRank, lisez Crack l'interview de codage, mémorisez comment ArrayList fonctionne et comment il diffère de LinkedList. Oh oui, ils peuvent toujours demander des tri, et il ne sera évidemment pas professionnel de dire que le tri rapide est probablement le meilleur choix.
Mais attendez, vous programmez 8 heures par jour, résolvez des tâches intéressantes et non triviales, et sur le nouveau lieu de travail, vous ferez le plus ou le moins de la même manière. Mais néanmoins, pour réussir l'entretien, vous devez en quelque sorte vous préparer en plus, pas même affiner vos compétences quotidiennes, mais apprendre ce dont vous n'aviez pas besoin sur votre lieu de travail actuel, ou il est peu probable que ce soit le prochain. A vos objections que l'informatique est dans notre sang, et nous réveiller au milieu de la nuit, nous sommes obligés d'écrire les yeux fermés sur une taie d'oreiller une promenade autour d'un arbre large sans même reprendre conscience, je répondrai que si je m'installe dans un cirque, et mon principal c'est l'astuce - peut-être oui, je suis d'accord. Vous devez vérifier cette compétence.

Mais pourquoi tester des compétences sans rapport avec votre emploi actuel? Tout simplement parce que c'est devenu à la mode? Parce que Google fait ça? Ou parce que votre futur chef d'équipe a dû apprendre toutes les méthodes de tri avant de passer un entretien et maintenant il pense que «tout bon programmeur doit connaître par cœur la mise en œuvre de la recherche d'un palindrome en ligne».

Canard, tu n'es pas Google. Ce que Google peut se permettre, les entreprises ordinaires ne le peuvent pas. Google, après avoir analysé les données de ses employés, est arrivé à la conclusion que c'était spécifiquement avec lui, spécifiquement avec ses tâches, c'était bon pour les ingénieurs avec une olympiade de s'en occuper. De plus, en construisant le processus de sélection, ils peuvent se permettre de ne pas embaucher plusieurs bons ingénieurs, car ils ne savent pas comment cliquer sur les problèmes mathématiques si facilement. Mais pour eux, cela n'a pas d'importance, il y a beaucoup de gens qui veulent travailler dans Google, le poste va fermer.
Regardons maintenant par la fenêtre, et s'il y a encore plus de campeurs devant votre bureau qui ne veulent pas travailler pour vous, et vos développeurs sont plus susceptibles de rechercher sur stackoverflow pour l'annotation Spring suivante, plutôt que les subtilités des algorithmes de classement, alors, très probablement, Vous devez penser à copier Google.

Eh bien, si cette fois, Google a échoué et n'a pas donné de réponse, que dois-je faire? Vérifiez exactement ce que le développeur fera au travail. Qu'appréciez-vous chez les développeurs?
Faites des critères pour qui vous voulez embaucher et développez des tests qui testent ces compétences particulières.

Thoughtworks


Qu'est-ce que ThoughtWorks a à voir avec cela? C'est ici que j'ai trouvé un exemple d'entrevue modèle pour moi. Qui est ThoughtWorks? En bref, il s'agit d'une société de conseil haut de gamme avec des bureaux dans le monde entier depuis la Chine, Singapour jusqu'aux continents américains, qui conseille depuis environ 25 ans dans le développement, possède sa propre division Science, dirigée par Martin Fowler. Si vous recherchez une liste de 10 livres qui doivent être lus pour Software Engineer, alors peut-être 2-3 d'entre eux seront écrits par des gars de ThoughtWorks, tels que Refactoring By Martin Fowler et Building Microservices: Designing Fine-Grained Systems par Sam Newman ou Building. Architectures évolutionnaires
par Patrick Kua, Rebecca Parsons, Neal Ford.

L'activité de l'entreprise est basée sur la fourniture de services plutôt chers, mais le client paie pour la qualité phénoménale, qui se compose d'expertise, de normes internes et, bien sûr, de personnes. Par conséquent, il est extrêmement important d'embaucher les bonnes personnes.
Quel genre de personnes ont raison? Bien sûr, pour chacun le leur. ThoughtWorks a déterminé que pour leur modèle d'entreprise pour les développeurs, les critères les plus importants sont:

  • Capacité à jumeler le développement. C'est la capacité, pas l'expérience ou la compétence. Personne ne s'attend à ce que des gens qui pratiquent la programmation en binôme depuis environ 5 ans viennent, mais être à l'écoute des opinions des autres, être capable d'écouter est une compétence nécessaire.
  • Capacité à écrire des tests et, idéalement, à pratiquer le TDD
  • Comprendre SOLID et OOP et pouvoir les appliquer.
  • Présentez votre opinion. Le consultant doit travailler avec les développeurs du client, avec d'autres consultants, et il n'y a pas beaucoup d'avantages si la personne sait bien faire quelque chose, mais est complètement incapable de transmettre cela au reste de l'équipe.

Maintenant, il est important d'évaluer précisément ces compétences du candidat. Et ici, je veux parler de mon expérience d'interview à ThoughtWorks. Je dirai tout de suite que je suis allé à Singapour et que j'ai réussi, mais le processus de recrutement est unifié et ne différera pas beaucoup d'un pays à l'autre.

Étape 0. HR


Comme cela arrive souvent, un entretien de 20 minutes avec les RH. Je ne m'y attarderai pas, je peux seulement dire que je n'ai jamais rencontré de RH qui pourraient parler de la culture de développement de l'entreprise pendant 15 minutes, pourquoi ils utilisent TDD, pourquoi la programmation en binôme. Habituellement, les RH parlent de cette question et disent qu’ils ont un processus normal: les développeurs se développent, les testeurs testent, les managers conduisent.

Étape 1. Quel est votre niveau en POO, TDD?


1,5 heure avant l'entretien, ils m'ont envoyé une tâche pour réaliser un simulateur Mars Rover.

Quest Mars rover
Une escouade de robots robotiques doit être débarquée par la NASA sur un plateau sur Mars. Ce plateau, curieusement rectangulaire, doit être parcouru par les rovers pour que leurs caméras embarquées puissent obtenir une vue complète du terrain environnant à renvoyer sur Terre. La position et l'emplacement d'un mobile sont représentés par une combinaison de coordonnées x et y et d'une lettre représentant l'un des quatre points cardinaux de la boussole. Le plateau est divisé en une grille pour simplifier la navigation. Un exemple de position peut être 0, 0, N, ce qui signifie que le mobile est dans le coin inférieur gauche et face au nord. Afin de contrôler un mobile, la NASA envoie une simple chaîne de lettres. Les lettres possibles sont «L», «R» et «M». «L» et «R» font tourner le rover de 90 degrés respectivement à gauche ou à droite, sans bouger de son emplacement actuel. «M» signifie avancer d'un point de grille et conserver le même cap.
Supposons que le carré directement au nord de (x, y) soit (x, y + 1).
ENTRÉE:
La première ligne de saisie est les coordonnées en haut à droite du plateau, les coordonnées en bas à gauche sont supposées être 0,0.
Le reste de l'entrée concerne les informations relatives aux mobiles qui ont été déployés. Chaque mobile a deux lignes d'entrée. La première ligne donne la position du mobile, et la deuxième ligne est une série d'instructions expliquant au mobile comment explorer le plateau. La position est composée de deux nombres entiers et d'une lettre séparés par des espaces, correspondant aux coordonnées x et y et à l'orientation du mobile.
Chaque rover sera terminé séquentiellement, ce qui signifie que le deuxième rover ne commencera pas à se déplacer tant que le premier n'aura pas fini de se déplacer.
SORTIE:
Le résultat de chaque mobile doit être ses coordonnées finales et son cap.
REMARQUES:
Il suffit de mettre en œuvre les exigences ci-dessus et de prouver qu'un aspirateur fonctionne en écrivant des tests unitaires.
La création de toute forme d'interface utilisateur est hors de portée.
Il sera préférable de résoudre le problème en suivant une approche TDD (Test Driven Development).
Dans le peu de temps disponible, nous nous soucions plus de la qualité que de l'exhaustivité.
* Je ne peux pas poster la tâche qui m'a été envoyée, c'est une ancienne tâche qui m'a été donnée il y a plusieurs années. Mais croyez-moi, fondamentalement, tout reste le même.

Séparément, je veux prêter attention aux critères d'évaluation. Combien de fois avez-vous été confronté à une situation où des choses importantes pour le candidat sont complètement hors de propos lors de la vérification et vice versa. Tout le monde ne pense pas de la même manière que vous, mais beaucoup peuvent accepter vos valeurs et les suivre si elles sont clairement énoncées. Ainsi, d'après le critère d'évaluation, il est immédiatement clair que les compétences les plus importantes à ce stade sont

  • TDD
  • Capacité à utiliser la POO et à écrire du code pris en charge;
  • capacités de programmation en binôme

J'ai donc été averti de passer ces 1,5 heures à réfléchir à la façon dont j'allais faire la tâche, plutôt qu'à écrire du code. Nous allons écrire le code ensemble.

Lorsque nous avons téléphoné, les gars ont brièvement dit qui ils étaient et ce qu'ils faisaient et ont proposé de commencer le développement.

Pendant toute la durée de l'entretien, je n'ai jamais eu le sentiment d'être en entretien. On a l'impression que vous développez du code en équipe. Si vous êtes coincé quelque part - ils aident, conseillent, discutent, voire discutent entre eux de la meilleure façon de le faire. Lors de l'entrevue, j'ai oublié comment dans JUnit 5 pour vérifier que la méthode lève une exception - ils ont suggéré de continuer à écrire le test, tandis que l'un d'entre eux a cherché sur Google comment faire cela.

Quelques heures seulement après l'entretien, j'ai reçu un retour constructif - ce que j'ai aimé et ce qui ne m'a pas plu. Dans mon cas, loué pour avoir utilisé des classes scellées comme alternative à l'objet \ null; parce que j'ai écrit un pseudo-code avant d'écrire du code, comme si je voulais contrôler le rover, et donc obtenu un croquis des classes, au moins celles qui sont impliquées dans l'API du robot.

Étape 2. Dites-nous


Une semaine avant l'entretien, on m'a demandé de préparer une présentation sur tout sujet qui m'intéresse. Le format est simple et familier: présentation de 15 minutes, réponses de 15 minutes aux questions.
J'ai choisi l'architecture propre par l'oncle Bob. Et encore une fois, deux personnes m'ont interviewé. C'était ma première expérience de présentation en anglais et, peut-être, si j'étais dans une situation stressante, je n'aurais pas réussi. Mais encore une fois, je n'ai jamais eu le sentiment d'être dans une interview. Tout est comme d'habitude - je vous le dis, ils écoutent attentivement. Même la traditionnelle session de questions / réponses ne ressemblait pas à une interview, il était clair que les questions étaient posées pour ne pas «couler», mais pour celles qui m'intéressaient vraiment dans ma présentation.

Quelques heures après l'entrevue, j'ai reçu un feedback - la présentation a été très utile et ils ont vraiment aimé écouter.

Étape 3. Code de qualité de production


Après avoir averti qu'il s'agit de la dernière étape des entretiens techniques, on m'a demandé d'apporter le code à l'état prêt à la production à la maison, puis d'envoyer le code à un examen et de planifier des entretiens au cours desquels les exigences de la tâche changeront et le code devra être modifié. Pour l'avenir, je peux dire que la révision du code est effectuée à l'aveugle, les examinateurs ne connaissent pas le poste auquel le candidat postule, ne voient pas son CV, ne voient même pas son nom.

Téléphoné, et encore quelques gars de l'autre côté du moniteur. Tout est comme lors de la première entrevue: l'essentiel est de ne pas oublier le TDD, de dire ce que vous faites et pourquoi. Si vous n'avez jamais pratiqué le TDD auparavant, je vous recommande de commencer à le faire immédiatement, non pas parce qu'il est nécessaire dans les entreprises, mais parce qu'il simplifie grandement votre vie, réduit le stress si vous le souhaitez. Rappelez-vous comment vous avez dû rechercher frénétiquement avec un débogueur une erreur qui est reproduite uniquement via le navigateur, mais vous ne pouvez pas la reproduire avec des tests? Imaginez maintenant que vous devez attraper une telle erreur pendant l'entretien - quelques cheveux gris vous sont fournis. Qu'est-ce qui nous est fourni avec TDD? Nous avons changé le code et réalisé de manière inattendue que les tests sont maintenant rouges, mais quelle est l'erreur qui ne peut pas être comprise la première fois? D'accord, nous disons «Oups» aux enquêteurs, appuyez sur Ctrl-Z et commencez à avancer petit à petit. Et oui, la capacité de se développer en utilisant TDD, il faut se développer en soi, la capacité d'aller au but pour que vos tests soient en permanence verts et non rouges pendant une demi-journée, car "vous avez beaucoup de refactoring". C'est exactement la même compétence que la capacité d'écrire du code pris en charge ou du code productif.

Ainsi, la façon dont votre code se prête à changer dépend de la conception que vous avez initialement définie, de sa simplicité et de la qualité de vos tests.

Après l'entretien, j'ai reçu un feedback en quelques heures. À ce stade, j'ai réalisé que j'étais pratiquement passé et qu'il me restait très peu de choses avant de «rencontrer Fowler».

Étape 4. Finale. Assez de questions techniques. Nous voulons savoir qui vous êtes!


Honnêtement, j'ai été quelque peu perplexe face à une telle formulation de la question. Comment puis-je comprendre quel genre de personne je suis en une heure de conversation? Et plus encore, comment puis-je comprendre cela lorsque je parle une langue qui ne m'est pas native, et, franchement, c'est très moche et lié à la langue. Lors des entretiens précédents, il m'était plus facile de parler personnellement que de répondre aux questions, et l'accent était mis sur la faute. Au moins un des intervieweurs était asiatique - et leur importance, disons, est quelque peu spécifique à l'oreille européenne. Par conséquent, j'ai décidé d'adopter une approche proactive - pour préparer une présentation sur moi-même et au début de l'entretien pour proposer de parler de moi avec cette présentation. S'ils sont d'accord, alors au moins il y aura moins de questions pour moi, s'ils refusent l'offre - eh bien, 3 heures de ma vie passées sur la présentation ne sont pas un prix si élevé. Mais quoi écrire dans la présentation? Biographie - Il est né là-bas, alors, est allé à l'école, est diplômé de l'université - mais qui s'en soucie?

Si vous cherchez un peu sur Google sur la culture Thoughtworks, vous pouvez trouver un article de Martin Fowler [https://martinfowler.com/bliki/ThreePillars.html], qui décrit 3 piliers: entreprise durable, excellence logicielle et justice sociale.

Supposons que j'ai déjà vérifié l'excellence du logiciel. Reste à montrer le commerce durable et la justice sociale.

De plus, j'ai décidé de me concentrer sur ce dernier.

Pour commencer, je vous ai expliqué pourquoi ThoughtWorks - alors que vous étiez encore à l'institut, lisez le blog de Martin Fowler, d'où l'amour pour le code Clean.

Les projets peuvent également être présentés sous différents angles. Il a également développé un logiciel pour la médecine qui a facilité la vie des patients, et a même dit avoir sauvé une vie. Il a également développé des logiciels pour les banques, également une sorte de simplification de la vie des citoyens. Surtout si 70% de la population du pays utilise cette banque. Il ne s'agit pas de Sberbank ni même de la Russie.

Tu veux savoir sur moi? Ok Mon hobby est la photographie, d'une manière ou d'une autre je tiens l'appareil photo dans mes mains depuis environ 10 ans, il y a des photos qui ne sont pas très gênantes à montrer. Aussi, à un moment donné, j'ai aidé un refuge pour chats: j'ai photographié des chats qui ont besoin d'un foyer permanent. Et avec de bonnes photos, il est beaucoup plus facile d'attacher un chat. Probablement filmé avec une centaine de chats :)

Finalement, 80% de la présentation que j'ai eue était remplie de chats.

Immédiatement après la présentation, les RH m'ont écrit qu'il ne connaissait pas encore les résultats de l'entretien, mais tout le bureau était déjà impressionné par les chats.

En fin de compte, j'ai attendu les commentaires - j'ai satisfait tout le monde en tant que personne.

Mais les RH dans la conversation finale ont dit avec tact que la justice sociale est très bonne et nécessaire, mais tous les projets ne sont pas comme ça. Et a demandé si cela me faisait peur. En général, je suis allé trop loin avec la justice sociale, ça arrive :)

Résumé


En conséquence, je travaille à Singapour chez Thoughtworks depuis plusieurs mois maintenant, je vois qu'ici, trop d'entreprises adoptent les «meilleures pratiques d'entrevue» de Google, en utilisant des brochures et un tableau blanc pour le codage, malgré le fait que les connaissances sont plus avancées que Spring, Symfony, RubyOnRails ( souligné) n'est pas requis dans le travail. Les ingénieurs prennent une semaine de congé avant une entrevue pour «se préparer».

Dans Thoughtworks, en plus des exigences adéquates pour un candidat, les principes suivants sont mis en avant:
Joie d'interviewer. De plus, pour les deux côtés. En effet, si vous voulez obtenir le meilleur personnel (et qui ne veut pas?), Alors l’entretien n’est pas un marché où les esclaves sont choisis, mais les époux, où l’employeur et le candidat s’évaluent. Et si un candidat associe des émotions agréables à une entreprise, il est probable qu'il choisira cette entreprise.

Plusieurs intervieweurs pour atténuer les biais. Dans Thoughtworks, la programmation par paires est la norme de facto. Et si cette pratique peut être appliquée dans d'autres domaines, TW essaie de le faire. A chaque étape, 2 personnes conduisent un entretien. Ainsi, au moins 8 personnes évaluent chaque personne, et TW essaie de sélectionner des enquêteurs ayant des antécédents différents, des directions différentes (pas seulement des techniciens) et le sexe.

En fin de compte, une décision d'embauche sera prise sur la base de l'avis d'au moins 8 personnes, et personne n'a de voix prépondérante.

Embauche basée sur les attributs Au lieu de prendre des décisions en fonction des goûts / aversions du candidat, un formulaire a été développé pour chaque rôle et pour chaque étape, y compris les attributs évalués. En même temps, lors de l'évaluation, il est très conseillé d'évaluer non pas l'expérience d'une compétence particulière, mais la capacité de l'appliquer. Ainsi, si le candidat n'a pas été en mesure d'appliquer des compétences telles que TDD, mais qu'il essaie néanmoins de l'appliquer, écoute les conseils pour une bonne utilisation - il a toutes les chances d'obtenir un entretien.

Certificats de formation non requis TW n'exige pas que les candidats obtiennent des certificats obligatoires ou une formation en informatique. Seules les compétences sont évaluées.

Il s'agit de la première interview de celles que j'ai visitées dans des entreprises étrangères pour lesquelles je n'avais pas à me préparer. Après chaque étape, je ne me sentais pas pressé comme un citron, mais au contraire, j'étais heureux de pouvoir appliquer les meilleures pratiques, que les gens de l'autre côté du moniteur l'apprécient, et les appliquent également tous les jours.

Après quelques mois, je peux dire que les attentes ont été pleinement satisfaites. En quoi ThoughtWorks est-il différent d'une entreprise ordinaire? Dans une entreprise ordinaire, vous pouvez trouver de bons développeurs et des gens sympas, mais dans TW, leur concentration est hors échelle.

Si vous souhaitez rejoindre ThoughtWorks, les emplois ouverts peuvent être consultés ici.
Je suggère également de prêter attention aux postes vacants intéressants:
Ingénieur logiciel en chef: Allemagne , Londres , Madrid , Singapour
Ingénieur logiciel senior: Sydney , Allemagne , Manchester , Bangkok
Ingénieur logiciel: Sydney , Barcelone , Milan
Ingénieur données senior: Milan
Analyste qualité: Allemagne Chine
Infrastacture: Allemagne , Londres , Chili
(Je veux honnêtement avertir que le lien est une référence, si vous allez sur TW, j'obtiendrai un joli bonus). Choisissez un bureau à votre guise, il n'est pas nécessaire de se limiter uniquement à l'Europe, après tout, tous les 2 ans TW se fera un plaisir de vous transporter dans un autre pays, car cela fait partie de la politique de ThoughtWorks, donc la culture se propage et fait la moyenne.

N'hésitez pas à poser des questions dans les commentaires ou à me demander de vous recommander.
Si le sujet vous a semblé intéressant, j'écrirai comment il fonctionne dans ThoughtWorks et comment il vit à Singapour.

Source: https://habr.com/ru/post/fr479874/


All Articles