Je veux absolument que vous testiez le code du tableau blanc que je vous demande d'écrire. Je veux que vous parliez à haute voix pendant que vous l'écrivez, l'examinez, repérez la plupart des erreurs de syntaxe que vous avez faites et montrez comment cela pourrait être plus efficace. En fait, c'est un peu l'intérêt de le faire au tableau blanc. Ce n'est pas un genre de chose à un coup, à tout écrire, uh-huh-you-get-70/100. C'est une conversation, médiée par un code et tenue sur le tableau blanc au lieu de traverser mon bureau.
Voici quelques excellentes façons d'échouer au test de "codage du tableau blanc":
- refuser
- ne posez pas une seule question de clarification (langue, plate-forme, quelque chose sur les exigences) ET ne me dites pas vos hypothèses à ce sujet ET faites des hypothèses qui sont bien loin de ce que j'aurais répondu
(par exemple: l'écrire dans Fortran, interpréter "afficher" ou "imprimer" comme "écrire dans le journal des événements", ce genre de chose. Je pourrais le permettre si vous me disiez à l'avance que c'était vos hypothèses)
- demandez-moi dans quelle langue je le veux, recevez une réponse qui se trouve dans la description de poste, puis écrivez-la dans une autre langue parce que vous n'êtes pas à l'aise dans la langue que j'ai demandée.
(Nous sommes des consultants ici. Je teste le comportement du consultant autant que le codage. Demander au client n'est correct que si le client a réellement le choix. Contrôler les conversations avec les gens qui vous paieront est difficile. C'est la leçon 1. C'est un marquer contre vous sur n'importe quel sujet, mais pour le spécifique "vous embauchez un programmeur X mais je ne veux pas écrire X pour vous" vous avez maintenant deux grosses marques noires.)
- Montrez-moi ce que vous êtes un astronaute de l'architecture en remplissant deux tableaux blancs avec des interfaces, des modèles d'usine, des abstractions, des injections et des tests lorsque je voulais que vous "imprimiez les nombres de 1 à 5".
(vous pensez que j'exagère, mais j'ai eu un gars qui a généralisé mon problème de façon spectaculaire - respectant l'exemple ci-dessus, disons qu'au lieu de 1 à 5, sa solution ferait n'importe quelle séquence arbitraire d'entiers (d'où je me suis demandé) et avait 5 ans fois aussi longtemps que n'importe qui d'autre - et il a oublié d'appeler la fonction qui a fait le travail. Des invites répétées et suggérant de le parcourir comme s'il était le débogueur ne l'ont pas amené à remarquer que la fonction n'a jamais été appelée.)
Je dis toujours "vous aimez ça?" "pouvez-vous améliorer cela?" "guide-moi à travers ça" et ainsi de suite. En règle générale, le point-virgule manquant est repéré, ou le point par point, dans cette conversation. Sinon, je le marque habituellement jusqu'aux nerfs.
D'autres choses que vous ne pensez peut-être pas importantes au tableau blanc qui comptent pour moi:
- quand vous avez terminé, puis-je encore le lire? Avez-vous taché, griffonné, changé de couleur, dessiné des flèches, barré et laissé généralement un gâchis qui ne peut plus être utilisé? Ou savez-vous que les tableaux blancs sont effaçables, pointent vers des lignes de code dans l'air au lieu de les encercler / flécher, et me laissent quelque chose que je pourrais prendre en photo et conserver dans le fichier de conception?
- combien m'avez-vous demandé comme vous l'avez fait? Aimez-vous être laissé seul et ne pas discuter de votre code, ou voyez-vous le code comme une chose collaborative? Comment avez-vous réagi lorsque je vous ai posé des questions pendant que vous l'écriviez encore?
- avez-vous ricané à la tâche «facile» ou évanoui à la tâche «difficile»? Avez-vous été impoli de vous demander de montrer que vous pouvez coder? Êtes-vous facilement intimidé par un problème technique ou arrogant quant à votre capacité à trouver un bon algorithme?
- travaillez-vous dans votre tête ou vous souvenez-vous d'une solution que vous avez lue quelque part? Je peux généralement dire pour les problèmes difficiles.
- avez-vous planifié à l'avance où vous avez commencé à écrire? Les gens qui manquent de tableau blanc commencent généralement trop bas ou écrivent trop gros - je peux dire qu'ils ne savaient pas que cela allait être 20 lignes de code et donc ne laissaient de la place que pour 5 - croyez-le ou non, ce petit détail est reflété dans des tâches d'estimation plus importantes également.
- l'avez-vous vérifié avant de dire que vous aviez fini? Vous ai-je vu pointer ou taper votre chemin à travers elle et la tester vous-même avant de vous le demander? Quand je vous ai demandé, ou vous ai posé des questions spécifiques à ce sujet, avez-vous relu, ou êtes-vous simplement revenu de mémoire? Êtes-vous prêt à considérer que votre première version pourrait ne pas être complète?
Je recommande fortement de pratiquer le codage sur le tableau blanc. Je préviens toujours les personnes interrogées qu'elles seront invitées à le faire. Si vous avez accès à un véritable tableau blanc, posez-vous quelques problèmes simples et entraînez-vous à les utiliser. Il contribuera à votre performance et à votre confiance.
Désolé, je sais que je suis en territoire TL; DR, mais voici le problème - le codage sur le tableau blanc ne se limite pas au codage . C'est un test de plus que votre compréhension de la syntaxe. Il y a beaucoup de comportements de bons programmeurs qui sont démontrés dans votre réponse à cette tâche. Si vous pensez qu'il ne s'agit que de codage, vous manquez le point.
Dans d'autres conversations sur les tests de tableau blanc, les gens me disent que je peux rejeter un bon candidat avec. Honnêtement, c'est un risque que je suis prêt à prendre. Chaque tour d'embauche contient plusieurs personnes que je pourrais embaucher. Certaines personnes avec un excellent curriculum vitae, qui se débrouillent bien dans la partie questions-réponses de l'entrevue, se désagrègent au tableau blanc et ne peuvent clairement pas (avec une quantité d'incitation) écrire du code simple dans la langue qu'elles prétendent connaître. J'aurais peut-être embauché certains d'entre eux. Tout outil qui l'empêche est un outil que je continuerai à utiliser. Je n'ai jamais trouvé personne pour louer un bateau parce que tous mes candidats se sont trompés sur le tableau blanc et je ne m'attends pas à le faire.