Comment évaluer la qualité du code lorsque vous n'êtes pas familier avec le langage? [fermé]

10

À titre d'hypothèse, si je devais interviewer quelqu'un pour un nouveau poste de développeur PHP lorsque mon expérience est en .NET, comment puis-je déterminer si l'exemple de code qu'ils m'ont fourni est efficace et de bonne qualité?

En d'autres termes, quelle est la meilleure façon d'évaluer le code d'un programmeur si vous n'êtes pas familier avec le langage?

Jason Towne
la source
1
Je déteste vous le dire, mais vous ne le faites pas :-) Inclure quelqu'un dans l'entretien qui connaît la langue ou l'apprend vous-même.
Joppe
2
C'est pourquoi l'entretien est un travail d'équipe. Vous évaluez ce que vous êtes en mesure d'évaluer et remettez ce genre de choses à des chefs d'équipe technique qui le connaissent.
Kaz
Pour moi, la meilleure métrique est la taille des fonctions (y compris ici la profondeur d'imbrication) suivie de la taille des classes / fichiers.
m3th0dman

Réponses:

20

comment puis-je déterminer si l'exemple de code qu'ils m'ont fourni est efficace et de bonne qualité?

Les éléments que vous ne pourrez pas évaluer sont l'utilisation correcte des idiomes linguistiques et l'utilisation des bibliothèques. Ce ne sont donc pas des choses que vous devriez essayer de regarder.

Ce que vous pouvez évaluer, c'est:

  • À quel point le code est bien structuré
  • Variables bien nommées (pouvez-vous donner un sens aux choses)
  • Fonctions / unités de code bien composées
  • Cohérence dans la base de code

Les points ci-dessus (bien que non exhaustifs) indiqueront si le code sent ou non et devrait être quelque chose qu'un programmeur expérimenté peut identifier comme bon ou mauvais.

En bref - recherchez les éléments qui devraient indiquer un bon code quelle que soit la langue.

Oded
la source
5
Un autre point important: "Les commentaires sont-ils clairs, significatifs et faciles à comprendre?" Pourriez-vous en savoir un peu plus sur ce que fait un morceau de code à partir des commentaires, même si vous avez peu d'exposition au langage?
FrustratedWithFormsDesigner
2
@FrustratedWithFormsDesigner - Commentaires? Quels sont ces? Sérieusement, le code devrait être auto-commenté. Les commentaires ne doivent être là que pour expliquer pourquoi ou donner des raisons pour un mauvais code.
Oded
6
J'exhorte à une extrême prudence: il est très facile de finir par choisir en fonction de qui écrit le code le plus comme vous êtes habitué, ce qui pourrait bien être une mauvaise utilisation de ce langage.
Jerry Coffin
@FrustratedWithFormsDesigner Oded pense probablement que vous devriez lire cet élégantcode.com
Joel
4

Demandez-leur de l'organigramme ou de vous guider à travers dans le cadre de l'entrevue. Vous avez l'excuse parfaite pour demander et cela en dit long sur la façon dont ils pensent pour voir comment ils expliquent.

S'ils veulent passer à votre langue préférée, vous savez que vous avez beaucoup de mentorat à venir, vous devriez donc rechercher avant tout de bonnes compétences en logique / raisonnement.

S'ils vont continuer à travailler dans leur langue préférée, vous devrez accepter qu'ils me géreront un peu eux-mêmes sur les détails spécifiques de la langue jusqu'à ce que quelqu'un d'autre arrive de toute façon, donc tout ce que vous aurez à interagir avec est également le côté design.

Facture
la source
1
Si le candidat peut expliquer son code afin que l'intention et le but derrière celui-ci soient clairs, et visuellement, l'organisation et la structure générale semblent raisonnables, ils ont probablement une compréhension raisonnable de ce que le code représente. Et pourrait probablement répéter une reproduction propre similaire. Même si des parties particulières sont expliquées avec aussi peu que `` parce que c'est ce qu'un matériau de référence particulier a montré comment le faire '', tout en nommant le matériau de référence, vous avez au moins une représentation modeste de la capacité non seulement de `` coder '' mais aussi de trouver et appliquer des solutions aux problèmes auxquels ils ne sont pas régulièrement confrontés.
JustinC
1

Mis à part le code à tête creuse / manifestement incorrect, efficace dépendra largement du compilateur / interprète de la langue en question, et vous ne pourrez pas vraiment le regarder à partir d'un exemple de code. Un exemple de code pourrait être magnifiquement écrit et élégant comme de la porcelaine fine sur des napperons, mais fonctionner lentement s'il est compilé / mal interprété.

Vous ne pourrez pas évaluer l'utilisation idiomatique des fonctionnalités / sucre syntaxique / conventions de langage sans une certaine familiarité.

Vous devriez être en mesure de dire s'il est bien écrit en général sur la base de considérations universelles telles que l'ordre, le flux de contrôle, le nom des variables, l'ordre des opérations, etc.

Cependant, plus concrètement, si vous savez ce que la langue va entrer dans le processus, vous pouvez essayer de trouver un ou plusieurs guides de style pour cette langue, aller à la librairie et feuilleter quelques livres pour cette langue et parcourez les exemples de code à la recherche d'analogues à quelque chose que vous connaissez w / dans la langue de votre choix, consultez un ou plusieurs projets open source qui utilisent cette langue, et ainsi de suite.

Si vous avez le temps et s'il n'y a pas d'obstacle aux coûts, vous pouvez même aller jusqu'à mettre en place un environnement de développement pour ce langage et lancer une application Hello World, faire un code kata ou autrement écrire une simple petite application en elle. Vous développerez un cadre de référence rudimentaire assez rapidement et non seulement cela vous donnera une longueur d'avance dans le but spécifique de réviser le code en question, vous pourriez être contraint par le langage et vous diversifier un peu.

Ed Hastings
la source
1

Quelle que soit la langue:

  • Existe-t-il des séparations claires des préoccupations, une utilisation appropriée des classes (pour les langages OO) ou des indications de tentatives délibérées de décomposer le code en «morceaux» modulaires réutilisables?
  • De même, des preuves de tests - tests unitaires ou autres?
  • S'il s'agit de code de production, est-il parsemé de chaînes de débogage qui pourraient suggérer peu de séparation entre le développement et le déploiement?
  • Le code suit-il une sorte de convention de dénomination (que vous aimiez ou non cette convention est sans importance!)?
  • Si vous avez le fichier, plutôt qu'une impression, chaque fonction / classe du fichier se rapporte-t-elle au (donc si c'est un fichier appelé data_access_layer , la preuve des fonctions qui traitent les images serait probablement déplacée ).
  • Toutes les indications d'un manque de confiance pour la saisie des utilisateurs sont également bonnes, en particulier pour les langages basés sur le Web comme PHP. Ainsi, des structures comme input = escape (input) vous montrent au moins qu'elles sont conscientes du problème.
  • Les commentaires ou le code auto-descriptif sont toujours bons. Il existe plusieurs écoles de pensée sur la quantité de commentaires qui devraient être présents, mais une absence totale de commentaires
  • Au prix d'être cynique, je rechercherais également sur Google une partie du code avant l'entretien. Malheureusement, cela pourrait facilement être un travail de copier-coller.

Je ne dis pas que tout code qui ne contient pas tout cela est automatiquement médiocre, mais je considère que ce sont des indicateurs de quelqu'un qui a réfléchi et pris en considération sa pratique.

Cependant, pour tous ces indicateurs, vous devez vous demander quelle est la raison d'être du code. Il peut y avoir une bonne raison spécifique à la langue de leurs choix ... et après cela, Google est votre ami quand eux et les autres candidats s'en vont, car vous pouvez vérifier si ce qu'ils ont dit semble plausible ...!

Bonne chance, car l'embauche de bonnes personnes est l'un des rôles les plus importants dans votre organisation;)

frackham
la source
Avec le recul, cela reproduit une grande partie de ce que @Oded (et les commentaires) ont dit.
frackham
0

Vous devriez demander à quelqu'un qui connaît la langue en question de venir à l'entretien ou de regarder l'échantillon. Une telle personne trouvera beaucoup plus probablement les mauvais endroits, le cas échéant.

Le candidat va-t-il travailler en équipe? Laissez les membres de l'équipe le rencontrer et lui poser des questions sur ses compétences.

Marcel
la source
-2

Demandez-leur quelles sont les limites rencontrées lors de l'utilisation de la langue. Demandez-leur de vous montrer une simple requête SQL. Tout développeur Php digne de ce nom devrait être capable de lancer une requête de sélection / mise à jour / suppression de base sans trop d'effort.

doug

SnoopDougieDoug
la source