Le défi Foobar: le test caché de Google pour les développeurs

Vous êtes juste assis à votre bureau, vous occupez de vos affaires, vous essayez de faire du travail. Ensuite, comme cela arrive inévitablement, vous rencontrez un obstacle mineur: votre code envoie un message d'erreur cryptique.

«Pas de problème» pensez-vous. Ce n'est pas votre premier rodéo. Donc, vous copiez et collez le message d'erreur textuellement dans Google et voyez ce que vous obtenez.

Pas de chance.

Il existe de nombreux résultats de recherche, mais aucun d'entre eux ne correspond suffisamment à votre situation pour vraiment fournir une réponse utile.

Et ainsi commence le processus créatif de recherche sur Google. Vous essayez plusieurs combinaisons de l'erreur + le contexte dans lequel vous l'utilisez. Vous essayez d'inclure le nom de la bibliothèque que vous utilisez. Vous savez que vous vous rapprochez…

Maintenant, à votre sixième tentative, vous essayez une autre combinaison de termes de recherche et appuyez sur retour. La page se charge et vous venez de commencer à parcourir les résultats lorsque, soudainement, la fenêtre de votre navigateur s'ouvre et vous voyez ceci:

«Vous parlez notre langue. Prêt pour un défi? »

"Attends quoi?"

"D'où est-ce que sa vient?"

"Une sorte de défi de Google… Est-ce basé sur mon historique de recherche?"

Vous oubliez complètement le bogue dans votre code. Vous êtes maintenant complètement absorbé par la situation bizarre dans laquelle vous vous trouvez. Et, aussi intéressant que tout cela soit déjà, vous remarquez quelque chose qui ne fait qu'ajouter à l'intrigue. À côté du message, vous voyez que le premier bouton dit:

"Je veux jouer"

Oh, alors c'est un jeu ? Intéressant…

Accablé de curiosité, vous acceptez. La division dans la fenêtre de votre navigateur se développe lentement pour révéler un grand écran noir, qui s'estompe ensuite. Vous êtes ensuite redirigé vers www.google.com/foobar/. Un écran noir s'estompe et du texte apparaît. Cela ressemble à un shell Unix.

L'esthétique de la page (la police rétro de l'ordinateur, le terminal caché, l'absence d'une interface utilisateur moderne) combinée à la sensation «007 - Votre mission, si vous décidez de l'accepter» de toute cette expérience vous donne l'impression d'avoir été entraîné dans un monde secret. Vous êtes maintenant complètement absorbé.

Il y a du texte en haut de l'écran:

"Google a un défi de code prêt pour vous"

Juste en dessous, il y a un paragraphe de texte bleuâtre qui prépare le terrain pour une aventure de science-fiction:

"Succès! Vous avez réussi à infiltrer l'organisation perverse du commandant Lambda et vous avez finalement gagné un poste d'entrée de gamme en tant que serviteur sur sa station spatiale. À partir de là, vous pourrez peut-être renverser son intention d'utiliser l'appareil apocalyptique LAMBCHOP pour détruire Bunny Planet. Le problème est que les Minions sont les plus bas des plus bas dans la hiérarchie Lambda. Mieux vaut se mettre au travail, sinon tu n'arriveras jamais au sommet… »

"Très bien alors. Il semble donc que je puisse explorer le terminal ou lancer le défi… »

Votre curiosité prend le dessus à nouveau et vous pensez: "Je ne peux pas simplement démarrer le jeu sans fouiner un peu". Vous tapez donc «aide» et appuyez sur retour. Une liste de commandes shell apparaît.

"Très intéressant. Nous allons donc clairement travailler avec un système de fichiers. Mais c'est une liste d'options assez limitée. »

Vous décidez de voir si l'une des commandes courantes non répertoriées est disponible, vous essayez donc quelque chose de simple:

foobar:~/guest$ pwd

Ça marche! Vous voyez:

/home/guest

Impressionnant.

«Très bien, jetons un œil à ce répertoire personnel. Il y aura forcément des choses plus intéressantes là-bas »

Alors vous essayez:

foobar:~/guest$ cd ..

Et…

Rien.

Vous obtenez une nouvelle ligne sans erreur mais lorsque vous exécutez à pwdnouveau, juste pour vérifier, vous voyez toujours /home/guest. Ok, donc cette chose n'est probablement pas la coquille unix du monde ouvert remplie d'oeufs de Pâques que vous espériez. Alors vous décidez de simplement relever le défi.

Vous tapez le mot «demande» et appuyez sur retour.

Une invite apparaît, vous avertissant qu'il s'agit d'un défi chronométré et que vous aurez 48 heures pour le terminer.

"Sensationnel. Ok, donc c'est chronométré… »

Vous acceptez et continuez.

Plus de récit de science-fiction, puis vous voyez que quelque chose appelé a solar_doomsdayété ajouté à votre dossier personnel. Vous accédez donc au dossier, ouvrez-le et trouvez quatre fichiers:

constraints.txtreadme.txtsolution.javasolution.py

Readme semble être le point de départ évident. Vous ouvrez le fichier readme et voyez ce qui suit:

"Ok" vous pensez "quand vous supprimez le récit, ils veulent que j'écrive une fonction qui renvoie un tableau trié de tous les nombres carrés (y compris 1) qui s'additionnent à un nombre donné, en commençant par le plus grand." Plutôt cool.

"C'est donc le genre de défi que Google utilise pour tester sa capacité à résoudre des problèmes?"

«Eh bien, je suis déjà allé aussi loin. Autant essayer!

À propos du défi Foobar

Ce qui précède est une description du défi Foobar de Google: une sorte d'oeuf de Pâques dans Chrome qui est ostensiblement utilisé pour trouver de nouveaux talents pour l'équipe d'ingénierie de Google; bien que Google ne semble pas avoir reconnu Foobar de manière significative (du moins, pas ce que j'ai trouvé). Cependant, il existe de nombreux comptes de première main de développeurs qui ont suivi le processus qui montrent clairement que c'est de quoi il s'agit.

La seule chose sur le défi Foobar est que ce trouve vous . Et pas de la façon dont un e-mail de recrutement non sollicité ou un message texte commercial vous «trouve». Il vous trouve en suivant votre activité de recherche et (apparemment) en la faisant correspondre aux besoins connus des services d'ingénierie de Google. De plus, la soudaine perturbation visuelle de quelque chose qui est par ailleurs si constant et immuable, la page de résultats de recherche Google, est suffisamment choquante pour vraiment vous attirer - certainement une utilisation très intelligente des actifs de Google.

Compte tenu de l'accès de Google à (1) votre activité de navigation personnelle et (2) la plate-forme sur laquelle vous naviguez sur Internet, ils ont vraiment l'occasion idéale d'attraper des personnes talentueuses, où qu'elles se trouvent, de manière très directe et engageante. Ils semblent essayer de déterminer votre niveau de compétence de base et vos domaines de compétences en fonction de votre historique de recherche, puis d'essayer de vous inciter à entrer dans leur entonnoir de talents avec ce «jeu» qui, s'il est terminé avec succès, pourrait ou pourrait ne pas conduire à une invitation à un entretien.

La première mention du défi Foobar semble avoir été cet article sur HackerNews datant de 2014.

Note latérale: withgoogle.com

Lorsque vous êtes sur la page de défi Foobar, si vous ouvrez devtools et regardez le DOM, vous verrez que la page entière est dans un iFrame, dont la source est: //foobar.withgoogle.com/?eid = ... Quand j'ai vu cela pour la première fois, j'ai pensé "Withgoogle.com? Qu'est-ce que c'est que ça?

Encore une fois, c'est un total en dehors de tout le sujet du défi Foobar, mais il s'avère que le défi lui-même réside sur le «domaine de projet parallèle» de Google appelé «withgoogle.com». Si vous approfondissez un peu cela, vous trouverez d'autres projets assez intéressants. En voici quelques-uns que j'ai rencontrés:

Signaux papier, Quickdraw, CSFirst, QiblaFinder, AIYProjects, ScienceJournal