web-dev-qa-db-fra.com

À quoi devrait ressembler mon "exemple de code"?

Je viens d'avoir une assez bonne interview téléphonique (pour un poste lié à CakePHP, pas que ce soit particulièrement important pour la question). L'intervieweur a semblé impressionné par mon curriculum vitae et ma personnalité. À la fin, cependant, il m'a demandé de lui envoyer un échantillon de code de mon projet de travail actuel, "pour vérifier que vous n'êtes pas secrètement un mauvais programmeur, ha ha!"

Je ne suis pas trop inquiet que mon code ne puisse pas se débrouiller seul, mais je suis vraiment un programmeur intermédiaire plutôt qu'un expert . Quels pièges évidents devrais-je m'assurer que mon échantillon de code ne tombe pas, au cas où ils m'excluraient sur le champ? Deuxièmement, et c'est probablement la partie la plus difficile à répondre, quelles sont les fonctionnalités d'un échantillon de code si impressionnantes qu'elles vous feraient instantanément beaucoup plus favorablement incliné envers le programmeur?

Toutes les idées ou suggestions sont les bienvenues!

24
thesunneversets

Je voudrais voir Clean code :

Code propre : code logiciel formaté correctement et de manière organisée afin qu'un autre codeur puisse facilement le lire ou le modifier.

Cela signifie:

  • Fonctionnalité - Quelques simples fonctionnalités qui ne sont pas triviales (un groupe de getters/setters ne montrerait pas que vous savez quoi que ce soit)
  • Style cohérent et propre - Populaire ou au moins commun styles de boîtier, d'indentation, d'espacement et de support
  • Bonne dénomination - Noms de qualité - n'utilisez pas i sauf s'il s'agit de la seule valeur d'incrément. N'utilisez pas de noms de variables absurdes.
  • Autres attributs de Code propre - Bonnes pratiques sur la vérification des erreurs, les conditions, les boucles, les méthodes de commodité ou les méthodes utilitaires, et bonnes séparation de -concerns (entre les méthodes). Et c'est le bon moment pour être à 100% SEC - pas de répétition!

Vous voulez leur envoyer quelque chose d'assez complexe pour être intéressant mais suffisamment propre pour qu'un bon développeur puisse presque immédiatement comprendre ce qu'il fait.

Certains des commentaires ci-dessus semblent préoccupés par la facilité avec laquelle cela pourrait être truqué. * Si vous souhaitez vous protéger contre cela, envoyez éventuellement une description rapide de l'objectif et de l'historique du code dans l'e-mail.


* À tout le moins, si l'intervieweur a posé des questions sur des projets antérieurs, alors vous a demandé un échantillon de ce projet et a demandé ce qui vous obligeait à l'écrire ou comment il a évolué, je pense que le processus serait assez à l'abri des menteurs. Je pense que la plupart des candidats qui le feraient mentiront de toute façon montrer des problèmes dans d'autres domaines.

17
Nicole

Lorsque je cherchais du travail, j'ai résolu un tas de questions du concours de programmation ACM, dans plusieurs langues différentes, et les utiliser depuis pour des exemples de code. Je pense qu'ils ont fait de bons exemples de code parce que:

  • Ils ont résolu des problèmes difficiles
  • Le problème ne nécessitait pas une grande quantité de contexte, plus il est facile d'obtenir les questions
  • Le code écrit n'a aucun risque IP associé.
  • Chaque problème peut raisonnablement exister dans un seul fichier, et souvent pas extrêmement long, il devrait donc être facile pour quiconque de compiler et de tester votre solution, et peut utiliser les données de test des questions.
  • Montre que vous pouvez décomposer un problème complexe en petits morceaux.
  • Si on vous demande comment fonctionnent les aspects de votre solution, cela vous donne une excellente occasion de démontrer que vous savez de quoi vous parlez, surtout si elle date de plusieurs années mais que vous pouvez rapidement déchiffrer ce qui se passe.

Et puis, le code que vous créez doit être clair, cohérent, facile à lire et facile à comprendre.

Et enfin:

  • Cela vaut la peine de les résoudre juste pour le plaisir, et c'est une bonne pratique.
9
whatsisname
  • Il doit compiler/interpréter sans erreur ni avertissement au plus haut niveau de rigueur.
  • Il ne doit pas s'agir de code standard que vous écrivez tous les jours. Rendez-le unique et intéressant, il est donc évident que vous ne l'avez pas copié/collé.
  • Il devrait contenir des décisions de conception intéressantes avec des commentaires expliquant comment/pourquoi vous les avez prises.
  • Ne visez pas plus de 2-3 pages imprimées.
  • Il devrait être dans la langue pour laquelle vous postulez.
  • Cela ne devrait pas me faire mal au cerveau quand je l'ai lu la première fois. Demandez à un ami de l'examiner ou de publier sur la révision du code.
6
Karl Bielefeldt

Eh bien, si je vous interviewais, j'aimerais voir votre code.

Nettoyer c'est bien, résoudre des problèmes c'est bien, mais le vrai code est mieux. Un bon programmeur sait quand il/elle a été victime d'une arnaque par un autre programmeur, donc la confiance pourrait baisser.

Lire un autre code de personne, c'est comme dansant avoir des relations sexuelles: vous savez quand c'est la vraie chose, et si l'autre personne fait semblant, à la fin une catastrophe se produira. (les vrais nerds qui viennent de réaliser ne savent pas danser)

Faites simplement confiance à vous-même et à vos capacités de codage. À moins que vous ne connaissiez vraiment votre interlocuteur, vous ne pouvez pas anticiper ce qu'il attend de votre style/compétences de codage.

3
Machado

Faites également très attention à ce qu'il ne s'agisse PAS d'un code de votre employeur actuel (il vous appartient et je vous garantis qu'il ne vous plaira pas de le partager). Prenez quelque chose dont vous êtes fier et retravaillez-le par vous-même pour ne pas être spécifique à l'employeur (supprimez toutes les références à leurs tables de base de données ou noms de serveurs, etc.). Quoi que vous fassiez, ne soumettez pas de code comportant des erreurs ou une mauvaise technique pour le type de code (je rejetterais probablement quelqu'un qui a soumis un curseur lorsqu'une opération basée sur un ensemble serait plus simple et plus performante lors de l'examen du code SQL. Il existe des techniques similaires pour d'autres langues qui sont là pour résoudre un problème relativement rare qui peut être utilisé pour d'autres problèmes plus courants, mais qui ne sont pas le meilleur choix pour ces autres problèmes. Cette phrase avait-elle du sens?)

2
HLGEM

Comme une opinion de quelqu'un qui demande des échantillons de code lors de l'évaluation des candidats, il existe quelques fonctionnalités de haut niveau (contenu du code) et quelques fonctionnalités de bas niveau (structure du code). Caractéristiques de haut niveau:

  1. Identité: La saveur du code. Si vous vous présentez comme un codeur UI/HCI, je veux voir une bonne apparence pour quelque chose de visuel lorsque je l'exécute. Si vous êtes un constructeur de bases de données, je veux voir quelque chose d'intéressant avec la représentation ou l'analyse des données. L'échantillon doit être quelque chose dont vous êtes fier de. Si vous n'en avez pas au moins un, vous n'avez pas d'identité.
  2. Maturité: Changez-vous de stratégies pour différents problèmes? Résolvez-vous des problèmes intéressants? Serait-il facile d'étendre le code ou l'approche à un problème similaire? À l'inverse, ai-je l'impression de regarder un membre d'une commune culte cargaison?
  3. Communication: Le code explique-t-il facilement ce qu'il fait et pourquoi? Cela ne signifie pas que le code doit être simple. En fait, c'est un bonus de rendre le code complexe facile à comprendre.

Les aspects de bas niveau sont plus simples:

  1. Style: Le code doit être propre, cohérent (suit certaines directives établies) et bien documenté.
  2. Packaging: Il devrait y avoir au minimum un fichier Lisezmoi court, une version exécutable et des tests exécutables. Le fichier Lisezmoi devrait me dire comment exécuter les deux derniers, ainsi que pourquoi vous démontrez cet exemple de code particulier.
  3. Langue (s): Je demande généralement à quelqu'un un échantillon dans la langue du poste, ainsi que celui dans lequel il se sent le plus fort. Donne une bonne idée des plafonds actuels d'une personne.

Pour un bon candidat, je m'attends à ce qu'un échantillon soit: A) un petit échantillon à l'épreuve des balles ou B) une bonne partie d'un projet intéressant plus vaste (par exemple, un module d'un dépôt personnel Github). Je m'attends à ce que ce soient des projets personnels ou des projets académiques. S'ils en envoient un à partir d'un projet rémunéré, j'attends une note qu'ils ont été autorisés à l'utiliser. Si je ne reçois pas cette note, je vais les couper des candidats (candidat faible) ou les interroger à ce sujet lors de l'entretien (candidat fort). Ne pas avoir l'autorisation serait un grand drapeau rouge (probablement insurmontable). Pour un candidat avancé, je m'attends à un avertissement notant que certains de leurs meilleurs échantillons source ne peuvent pas être affichés car cela a été fait dans le cadre de leur travail. Cependant, je m'attends alors à un témoignage jaillissant de la raison pour laquelle ils sont fiers de ce design non montrable et comment ils l'aiment comme un enfant.

Enfin, autant que certains disent que "Oh, quelqu'un pourrait simplement obtenir un échantillon de code sur Internet", le contre-argument est que la plupart des gens qui ne comprennent pas un bon code de qualité de production ne le comprennent pas non plus lorsqu'ils le voient. . En outre, on peut toujours Google une ligne distinctive pour le code à vérifier. De plus, au mieux, le vol de code amènera un candidat à une entrevue où il s'embarrassera ("Alors pourquoi l'avez-vous fait de cette façon ...?").

Comme dernière note sur le code de l'emploi précédent: ne le faites tout simplement pas. Du point de vue des RH, demander le code d'un emploi précédent est inapproprié et un drapeau rouge sur l'entreprise. Vous auriez tous deux une responsabilité légale (c'est-à-dire que vous pourriez tous deux être poursuivis) et cela montre qu'ils n'ont aucune idée de ce qu'ils font. Le code fait pour un employeur précédent ne doit jamais être donné, sauf si le code est déjà accessible au public ou si vous avez l'autorisation explicite de cet employeur. Pire, dans une grande entreprise, votre patron direct peut ne pas avoir le pouvoir de vous donner la permission, alors amusez-vous avec le service juridique dans ce cas? Je suis sûr qu'ils seront ravis d'exposer leur adresse IP pour un employé sortant.

0
Namey

J'appuierais le post de Renesis sur le code propre, mais ajouterais à la liste fournissant des tests unitaires de qualité et bien documentés au code que vous soumettez. Un bon programmeur devrait écrire des tests unitaires pour leur code.

0
Chris Knight