J'ai besoin d'un moyen de filtrer les curriculum vitae des gens qui copient-collent simplement du code, puis espèrent que cela fonctionne, et vérifiez-le si c'est le cas. Tout cela se produit sans avoir la compréhension (ou le soin) de comprendre le reste du code dans le système.
Bien sûr, je sais que copier et coller du code fait partie de l'apprentissage d'un nouvel objet, d'un nouveau contrôle, etc ... mais comment savoir si cela représente 70% (ou plus) de leur carrière de développement?
J'ai rencontré peut-être des gars de niveau supérieur dont les compétences sont si obsolètes ou non pertinentes pour le projet, qu'ils ne font que google, copier-coller du code sans penser à la solution dans son ensemble. En conséquence, nous avons une incompatibilité de JSON, AJAX, rappels, ASMX, WCF et postbacks dans le même projet. Il est clair qu'il n'y a aucune cohérence ou logique derrière l'endroit où chaque technologie est utilisée.
Dans le pire des cas, ce type de développeur crée des problèmes de sécurité et des vecteurs d'attaque.
Question
Comment recommanderiez-vous que je filtre les personnes qui ont une mauvaise formation en programmation? Puis-je le faire au niveau du CV? Sinon, comment dois-je procéder pendant l'entretien.
la source
Réponses:
Je ne pense pas que les compétences de vos développeurs soient le problème. Votre problème se situe ailleurs, peut-être un chef d'équipe ou un architecte qui n'a pas la confiance en soi pour «encourager» de meilleures disciplines de codage, ou une équipe de gestion qui ne comprend pas l'importance de gérer la dette technique et ne donne pas leur aux développeurs le temps et les ressources pour le faire. Votre entreprise tient-elle des revues de code?
Le leadership peut être le problème, pas les développeurs de copier-coller.
la source
Leadership may be the problem, not copy-paste developers.
C'était précisément mon interprétation.Le moyen d'éliminer les programmeurs qui ne peuvent pas programmer est de leur proposer un exercice de programmation pratique dans le cadre de la phase de sélection ou de la phase d'entrevue. (Ce dernier est probablement meilleur car vous pouvez contrôler l'environnement pour éviter la tricherie.)
Mais je ne pense pas que cela va vraiment résoudre votre problème.
OMI, le vrai problème ici est que votre équipe ne fait pas suffisamment de révision du code interne et ne développe pas un "livre de jeu" des solutions préférées aux problèmes connus. Il s'agit en partie d'un problème de culture, en partie d'un problème de communication et (probablement) en partie d'un problème lié aux délais des projets.
Un autre problème est que le projet a généralement une longue durée de vie, et pendant cette durée de vie, de nouvelles technologies / techniques apparaîtront, et les anciennes risquent de tomber en disgrâce. Si vous voulez éviter un "petit déjeuner pour chiens" en utilisant des technologies / techniques, vous devez soit:
la source
Embaucher des personnes en probation de 3 mois. Tire-les s'ils sucent.
Si vous ne contrôlez pas, vous ne pouvez pas vous attendre. Revues de code, outils d'audit. Un serveur CI peut les exécuter automatiquement.
Posez de vraies questions dans vos entretiens, comme dans les questions du vrai code.
Demandez-leur d'écrire du code sur le tableau blanc.
Si vous êtes un gestionnaire non technique, vous n'êtes pas qualifié pour en juger.
Si vous n'êtes pas qualifié, demandez à un consultant professionnel réputé de faire les tests. Demandez à vos employés existants et à vos concurrents commerciaux s'ils connaissent une personne 100 fois productive. Payez-les pour faire l'entretien.
Si vous voulez diriger un hôpital sans chef de chirurgie, allez-y.
la source
J'ai passé les dernières années à interviewer des gens et à constater que 90% des candidats ne pouvaient tout simplement pas programmer. Ma technique d'entrevue pour déterminer la programmation consiste à donner au candidat un mémoire trop simple et à le laisser le résoudre à l'aide d'un marqueur et d'un tableau blanc.
Les modes de défaillance incluent:
venir avec un design et ensuite mettre en œuvre quelque chose de différent. Ces candidats sont rejetés car ils sont dangereux dans une équipe. pas suivre les spécifications, écrire des bugs etc ...
Ne pas pouvoir inventer un design. Un nombre surprenant de candidats "expérimentés" ont besoin d'une spécification pour inclure la conception de la mise en œuvre.
ne connaissant pas le langage de programmation, malgré CV revendiquant de l'expérience.
Ne pas poser de questions supplémentaires pour extraire des spécifications plus complètes.
Ne pas pouvoir expliquer les décisions de conception. Celui-ci est majeur. Si quelqu'un ne peut pas expliquer pourquoi, à chaque fois, il le fera différemment et la cohérence sera perdue.
Le résultat final a été que j'ai passé beaucoup de temps à interviewer et à ne pas recruter très souvent. cependant, l'équipe de développement était très bonne et avait le respect total de toute l'entreprise et elle a livré!
la source
Je suggère FizzBuzz que Jeff Atwood mentionne dans le post à http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html .
la source
Je pose trois questions d'entrevue
J'ai vu des gens terminer cela en 5 minutes et j'ai vu des gens lutter pendant 30 minutes avant d'abandonner.
la source
java.util.LinkedList l = new java.util.LinkedList()
n'importe rien, mais utilise certainement les collections intégrées.Vous ne pouvez pas le faire au niveau du curriculum vitae, car ils ont essentiellement un temps infini pour rédiger cela, mais vous pouvez le faire lors d'un entretien téléphonique si vous posez quelques questions qui nécessitent un aperçu technique de ce qu'ils font. Cela vous donne à la fois la réponse (bonne ou mauvaise) et le temps qu'il leur a fallu pour y arriver.
Lors d'une interview, faites-leur écrire du code. C'est la seule façon de savoir s'ils peuvent programmer pour de vrai. Simplifiez le problème, donnez-leur un ordinateur avec une connexion Internet et l'IDE que vous utilisez installé, laissez-les poser n'importe quelle question (sauf gimme-hte-codez) et regardez comment ils fonctionnent.
EDIT: Pour l'analyse post mortem, il semble que PMD dispose d'un détecteur copier / coller pour le trouver: http://pmd.sourceforge.net/cpd.html
la source
Facile
Éditer:
En tant que makerofthings7 comme indiqué, en termes pratiques, on pourrait faire une capture vidéo (capture d'écran).
la source
Si vous voulez "éliminer" les mauvais codeurs, vous pouvez essayer par exemple la matrice de compétences des programmeurs (utile mais elle ne s'applique pas à tous les domaines possibles - bien sûr, vous pouvez les créer) ou codility.com (les tâches sont très bonnes et cela fait gagner beaucoup de temps).
Généralement, l'embauche de bons codeurs est difficile et nécessite souvent de nombreuses années de pratique. Vous pouvez créer votre propre base de données de questions d'entrevue, en posant non seulement des questions de codage, mais aussi en mathématiques, en logique, sans parler des questions de motivation.
la source
Je dirais que le problème avec vos candidats n'est pas qu'ils ne peuvent pas programmer du tout, mais qu'ils n'ont pas la sensation d'utiliser le bon outil pour le travail. Ma suggestion est une question d'essai où ils seraient donnés des exigences de haut niveau pour un nouveau système et invités à fournir une architecture et à justifier leurs choix de composants. Mais gardez le FizzBuzz pour les candidats qui ne peuvent pas du tout coder sans navigateur.
la source