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!
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:
i
sauf s'il s'agit de la seule valeur d'incrément. N'utilisez pas de noms de variables absurdes.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.
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:
Et puis, le code que vous créez doit être clair, cohérent, facile à lire et facile à comprendre.
Et enfin:
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.
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?)
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:
Les aspects de bas niveau sont plus simples:
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.
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.