Effet de ReSharper sur le codage des entretiens [clôturé]

18

Quiconque a utilisé R # ou CodeRush sait à quelle vitesse vous pouvez assembler des constructions simples (et refactoriser des constructions complexes) avec un simple raccourci clavier. Cependant, ces plugins de productivité provoquent-ils une fausse évaluation des capacités lors des entretiens?

Etre un rédacteur de code productif (et faire bonne impression dans une interview) consiste à écrire du bon code - rapidement.

Si j'avais deux candidats:

  1. N'utilise pas de plugins. Elle réfléchit au problème, s'assoit à un IDE de stock sur le PC de l'interview qui ressemble exactement au sien et tape le code dans une minute ou deux, comme d'habitude. Terminé. Passer.

  2. Utilise des plugins. Il réfléchit au problème, s'assoit à un IDE de stock sur le PC de l'interview et se rend compte que "fe + tab" n'écrit plus automatiquement une boucle foreach, et tous les raccourcis ont disparu. Il vacille ensuite autour du clavier en frappant ses raccourcis clavier normaux et en ouvrant d'étranges fenêtres et en s'énervant. Cela lui prend 3 minutes pour écrire ce qui prend normalement 30 secondes. Terminé. On aurait dit qu'ils ne connaissaient pas parfois leur chemin autour de l'IDE. Doit être nouveau dans cet IDE et donc ne pas avoir beaucoup d'expérience avec lui ou peut-être la langue. Passez, mais une marque «meh» à côté de leur nom.

D'après votre expérience, comment gérez-vous les plugins lors des entretiens en tant qu'enquêteur ou interviewé? Quelles sont les meilleures pratiques pour obtenir ce que le candidat sait vraiment? Il peut y avoir des candidats qui ne comprennent pas le code et utilisent R # comme béquille. Il peut également y avoir des candidats qui connaissent le code à l'intérieur et à l'extérieur et utilisent R # car il est tout simplement plus rapide que les modèles VS ou Eclipse intégrés. Est-il préférable de ne pas du tout utiliser un IDE? Qu'ils apportent leur propre PC? Autres?

Ryan Hayes
la source
4
Je vote pour fermer cette question comme hors sujet, car cette question porte sur la façon de bien interviewer , ce qui est hors sujet par centre d'aide . Cependant, cette question a un composant sur le sujet, c'est-à-dire " comment des outils comme ReSharper affectent-ils la capacité de coder sans un tel outil "), mais la modifier pour être cette question est trop agressif pour une modification et invaliderait les réponses existantes.
durron597
Si je devais écrire du code de démonstration dans un IDE standard, il serait rempli de :wmarques aléatoires partout.
LindaJeanne

Réponses:

31

J'ai été candidat 2 dans une interview très récemment . On m'a donné une installation vanille de l'IDE sur un PC avec un clavier non standard et un cadre de test inconnu, et on m'a demandé d'écrire une application Fizz-Buzz simple avec des tests unitaires. Je l'ai bouffé. J'ai dû ressembler à un noob complet, trébuchant dans le noir en essayant de pirater le code. Inutile de dire que ce poste ne m'a pas été proposé.

Ce que j'ai appris, c'est que je compte beaucoup sur mes plugins. Ils ne font pas que taper du code plus rapidement - ils façonnent en fait ma façon de penser le code et ma façon de coder. Par exemple, je pensais très attentivement aux noms de variables car ils pouvaient être difficiles à changer après coup. Maintenant, en revanche, je fais juste une supposition à moitié cuite sur la façon dont je vais utiliser la variable, pirater du code, laisser la variable me dire à quoi elle sert, puis appuyer sur Refactor-> Renommer pour l'appeler quelque chose de plus approprié .

Cela fait-il de moi le candidat le moins compétent? À certains égards, je pense que oui . Quelqu'un qui peut écrire du code dans le Bloc-notes et le faire compiler et exécuter correctement a certains avantages par rapport à quelqu'un comme moi qui a besoin de toutes les qualités IDE qu'il peut obtenir. De ce point de vue, je comprends parfaitement pourquoi une entreprise choisit de ne pas embaucher une tête d'outils comme moi.

D'un autre côté , je suis toujours un développeur senior talentueux et compétent. J'ai appris ce qui fonctionne pour moi et je pratique le genre de paresse qui me rend productif, compte tenu de mes propres faiblesses et limites. En bref, je suis le genre de programmeur qui pourrait vraiment bénéficier à une entreprise comme celle qui m'a refusé .

Fait intéressant, j'ai eu une autre interview il y a quelques semaines. Suite à mon expérience précédente, j'ai tenu à poser des questions sur les outils supplémentaires ou le budget pour les acheter. Découvrir qu'il n'y en avait ni l'un ni l'autre m'a donné une raison de plus pour refuser l'offre (plutôt généreuse) qu'ils m'ont faite .

Donc, pour paraphraser Groucho, " je ne rejoindrais aucune entreprise qui aurait quelqu'un comme moi pour un employé. "

Pas à moins qu'ils ne me laissent utiliser ReSharper, de toute façon.

Kramii
la source
2
Lorsque j'interviewe des gens, je leur fais écrire du code sur une feuille de papier vierge. Il ne doit pas être joli, et il n'a pas besoin d'être compilé, mais il doit ressembler à la langue cible. Je ne cherche pas de produit fonctionnel; ce que je recherche, c'est un schéma de pensée; la personne interrogée peut-elle réfléchir aux problèmes et les résoudre à l'aide de code?
Robert Harvey
BTW il doit être agréable de pouvoir refuser des offres attractives dans le climat économique actuel.
Robert Harvey
12

Laissez-les ( candidats, c'est-à-dire ) utiliser ce qu'ils veulent. Les vieux, construisez un Wal-Mart avec un couteau suisse juste pour montrer que vous pouvez vous approcher, c'est tellement vieux. Ils vont utiliser tout ce qu'il faut dans leur travail quotidien (enfin, j'espère bien), alors laissez-les utiliser ce qu'ils veulent dans une interview. Le résultat final est tout ce qui compte. Et j'embaucherai beaucoup plus volontiers un candidat qui sait quels outils sont disponibles sur le marché et comment les utiliser efficacement, puis celui qui fait tout manuellement. C'est une industrie qui tue.

ps À titre d'exemple, pensez à Vim (ou Emacs) - aimeriez-vous l'utiliser sans paramètres personnalisés, plugins, etc.?

Tour
la source
+1 De plus, si votre tâche de codage ne fait que vérifier qu'ils connaissent foreach, je me demande à quel point c'est utile (même quelque chose comme FizzBuzz regarde beaucoup plus que cela). Je discutais avec quelqu'un de la communauté Java et il m'a dit que vous pouviez savoir qui étaient les bons codeurs .net lorsqu'ils utilisaient Resharper. Je ne suis pas sûr que ce soit exact à 100% - mais vous obtenez le point ...
FinnNk
1
Amener un candidat à écrire du code sur un tableau blanc lors d'un entretien est très révélateur dans sa capacité à programmer. En tant qu'enquêteur, vous émettez un jugement sur le soutien dont cette personne a besoin pour jouer son rôle.
Michael Shaw
8

Je dirais que des outils comme ReSharper font de vous un meilleur candidat dans l'ensemble.

D'une part, quelque chose comme ReSharper va vous apprendre des constructions de langage que vous ne connaissiez peut-être pas, ainsi que de meilleures façons d'organiser votre code pour réfléchir à un problème ou le structurer pour la lisibilité. ReSharper, dans un sens, vous tient au courant des meilleures pratiques pour élinguer le code, plutôt que de vous laisser retomber dans de mauvaises habitudes ou obsolètes, ou pire, le mauvais type de paresse.

Un bon codeur doit comprendre les constructions de base, mais pas les taper manuellement. Le bon type de paresseux laisse les outils faire le travail de grognement, et le temps supplémentaire économisé est plutôt consacré à réfléchir au problème. Cela en fait un meilleur développeur dans l'ensemble.

Je compléterais le raisonnement en déclarant que si le processus d'entretien privilégie les bâtons et les couteaux en pierre, il est fondamentalement cassé.

Walt Stoneburner
la source
1

C'est l'une des raisons pour lesquelles je demande aux gens de coder sur le tableau blanc, pas dans l'IDE. Il égalise les chances. Et les gens disent "oh chéri, le resharper gère ça pour moi habituellement". Heck, les extraits de code intégrés gèrent les boucles et autres, que le tableau blanc ne peut pas vous donner. Dans ce cas, dire quelque chose comme "J'espère que la ponctuation est là; je suis un gars R #" est probablement tout ce dont vous avez besoin pour m'empêcher de tenir des problèmes de syntaxe contre vous.

J'ai besoin d'une certaine capacité à écrire du code compréhensible sur le tableau blanc afin que nous puissions avoir une réunion au cours de laquelle nous déterminerons comment nous allons faire les choses. Et bien sûr, je veux voir si vous avez déjà écrit du code dans votre vie ou non. Vos entretiens peuvent varier.

Kate Gregory
la source
Je comprends parfaitement pourquoi vous voulez faire tout le tableau blanc - j'imagine que cela élimine beaucoup de mauvais candidats - mais cela éliminera également de grands talents aussi. Bien sûr, cela ne doit pas être un problème tant que vous avez un bassin de bons tableaux blancs.
Kramii
2
@Kramii: Vous savez, les "grands" talents devraient pouvoir s'expliquer et expliquer leur code avec un tableau blanc. Je ne vois donc pas vraiment pourquoi cela les éliminerait.
Spoike
1

Grande question BTW - J'ai souvent réfléchi à cela.

La maîtrise des outils est une compétence qui est essentielle pour être un bon développeur. J'ai toujours senti sonner l'alarme lorsqu'un développeur prétend qu'il préfère le codage dans le bloc-notes à l'utilisation d'un IDE. Cela suggère qu'il s'intéresse plus au processus qu'au produit.

C'est comme préférer labourer le sol avec une houe ou un tracteur - parfait si vous êtes un jardinier amateur, mais insupportable en tant qu'agriculteur industriel dans une économie compétitive.

Cependant, nous devenons dépendants de nos outils. Les gens semblent paniquer sur la façon dont nous ferions face à la situation hypothétique où nos outils ont été soudainement emportés. Il y avait le même argument concernant l'autorisation des calculatrices aux examens.

La réalité est que les outils s'améliorent de mieux en mieux et de moins en moins chaque année et il n'y a aucune raison pour que vous supposiez que vous vous en passerez. Et les outils sont excellents pour faire des choses répétitives avec un haut niveau de qualité - ce qui signifie que nous pouvons concentrer toute la force de nos incroyables intellectuels homo-sapiens sur les parties difficiles (et intéressantes).

ReSharper est un ajout génial à Visual Studio. Mon entreprise actuelle n'avait pas ReSharper lorsque j'ai été interviewé - mais j'étais tellement évangélique à ce sujet dans mon interview qu'ils m'ont acheté un exemplaire lorsque j'ai accepté le poste ainsi qu'un pour le développeur qui m'a interviewé. Il est en cours de déploiement dans toute l'entreprise. Les bons outils se rentabilisent en un rien de temps.

Donc, pour répondre à la question: votre dépendance aux outils peut entraîner une fausse évaluation de vos capacités lors d'un entretien, mais ils donneront toujours une évaluation correcte des capacités de l'intervieweur. Si une entreprise ne reconnaît pas la valeur du support d'outils dans votre entretien - vous devez leur montrer la lumière. Et s'ils ne le voient toujours pas, alors je serais très inquiet d'accepter un poste là-bas.

cheikhjabootie
la source
Je suis très clair dans les entretiens sur les outils avec lesquels je suis habitué à travailler et sur ce que j'attends de l'entreprise. Croiriez-vous que certaines entreprises ne fournissent toujours qu'un seul moniteur par développeur? Je n'ai aucun problème à dire à un intervieweur "Je cours à mi-vitesse parce que les outils sur lesquels je compte ne sont pas là", surtout lorsque j'utilise un combo de touches et que cela ne fonctionne pas. Même dans un IDE nominalement vanillé, je personnalise les choses, car mes mains savent où sont les choses et je ne peux pas être dérangé par un recyclage. Pour un clavier Dvorak ou écrire des commentaires en allemand, ou tout autre handicap qu'ils veulent me donner.
@moz - Tout à fait d'accord, vous devez dire à l'employeur qu'il ne tirera pas le meilleur parti de vous sans investir dans des outils. J'irais plus loin et je les ferais s'engager à obtenir les bons outils. Ce ne sera probablement pas très amusant de travailler pour eux s'ils ne le font pas. Chaque fois que vous refactorisez manuellement quelque chose, vous les maudirez de ne pas avoir suffisamment évalué votre temps. Travailler dans un endroit médiocre peut également affecter votre future capacité de gain. Cela peut devenir intéressant si vous effectuez une programmation par paire si les deux développeurs ont des configurations de raccourcis différentes. J'essaie de garder la configuration standard autant que possible.
sheikhjabootie