Quelles sont les mesures seraient utilisables pour déterminer le niveau d'expertise dans un langage de programmation

StackOverflow https://stackoverflow.com/questions/539694

  •  22-08-2019
  •  | 
  •  

Question

Je suis intéressant dans les premières mesures (ou composites) utilisés pour obtenir une poignée sur la façon dont une personne peut programmer dans une langue particulière.

Scénario:. George connaît quelques langages de programmation et veut apprendre « foobar », mais il aimerait savoir quand il a une quantité raisonnable d'expérience dans « foobar »

Je suis vraiment intéressant dans quelque chose plus large que le COL (lignes de code) métriques.

Mon espoir pour cette question est de comprendre comment les ingénieurs quantifient les expériences de langage de programmation des autres et si cela peut être mécaniquement mesurée.

Merci à l'avance!

Était-ce utile?

La solution

En réponse aux deux précédentes affiches, je suppose qu'il ya est un moyen d'obtenir une poignée sur la façon dont une personne peut programmer dans une langue particulière: vous pouvez tester la façon dont quelqu'un sait anglais, ou Maths, ou la musique, ou médecine, ou beaux-arts, donc ce qui est si spécial au sujet d'un langage de programmation?

En réponse à l'OP, je suppose que les tests doivent évaluer:

  • Comment bien vous pouvez programmer
  • Comment bien vous pouvez utiliser le langage de programmation

Par conséquent, les mesures pourraient être:

  1. Quelle est la bonté de la programmation de la personne (et il y a différentes dimensions de la bonté tels que BUGS, maintenable, rapide / pas cher pour écrire, fonctionne rapidement, répond aux besoins des utilisateurs, etc.)?

  2. La personne utiliser les fonctions appropriées / idiomatiques de la langue de programmation en question afin de faire une bonne programmation?

Il serait difficile de faire le test « mécanique », cependant: la plupart des examens que je connais sont classés par un examinateur humain. Dans le cas de la programmation, une partie de l'essai pourrait être classé mécaniquement (par exemple « il tourne? »), Mais une partie ( « est-il compréhensible et idiomatiques? ») Vise à favoriser, et est mieux jugé par, d'autres humains programmeurs.

Autres conseils

Le meilleur indicateur de votre expertise dans une langue particulière, à mon avis, est la façon dont vous êtes productif en elle.

La productivité est non seulement la vitesse, vous pouvez travailler, mais, surtout, comment quelques bugs que vous créez et combien peu refactoring / reprise est nécessaire par la suite.

Par exemple, si vous avez pris deux langues que vous avez le même niveau d'expérience avec, et étaient (dans des univers parallèles) pour construire le même système avec les deux, je dirais que la langue que vous construire le système avec plus rapidement et avec moins de défauts / défauts de conception, est la langue que vous avez plus d'expertise dans.

Désolé ce n'est pas une mesure « difficile » pour vous, c'est une approche plus pratique.

Je ne crois pas que cela peut être « mécaniquement mesurée ». J'ai pensé sur ce lot cependant.

Attendez ...

Même la « LOC » d'un programme est un sujet très contesté! (Est-ce que nous parlons de la sortie de chat * {h, c} |.??? Wc -l ou un autre mechnanism, par exemple Qu'en est-il des lignes vides Commentaires des commentaires importants est un bon code documenté)

Jusqu'à ce que vous avez compris comment une comparaison inutile LOC est, vous avez aucun espoir de réaliser à quel point d'autres mesures inutiles sont.

Il est une chose plutôt qualitative qui est rarement mesurée avec une grande précision. Il est comme demander « comment était intelligent Einstein? ». La certification est un (et un assez complet) indicateur quantitatif, mais même il tombe de façon drastique à court d'identifier les « bons programmeurs » autant de recruteurs découvrir.

Qu'est-ce que vous essayez d'atteindre en fin de compte? aptitude de la programmation générale peut être plus important que l'expertise linguistique dans certaines situations.

Si vous êtes concentré sur la langue, en prenant un défi comme projet Euler utilisant cette la langue peut être un moyen de suivre les progrès.

Comment maîtriser ils sont dans le débogage des problèmes complexes dans cette langue.

Demandez-leur sur les projets qu'ils ont travaillé dans le passé, des problèmes difficiles rencontrés et comment ils les ont résolus. Demandez-leur sur les techniques de débogage qu'ils ont utilisé - vous serez surpris de ce que vous entendrez, et vous pourriez même apprendre quelque chose de nouveau; -)

Beaucoup d'endroits ont une personne ou deux qui est une superstar dans leur domaine - tout le monde va personne d'autre quand ils ne peuvent pas comprendre ce qui ne va pas avec leur programme. Je devine des thats la personne que vous recherchez: -)

Structure dotée d'un langage de programmation ne suffit pas. Ce qui est requis est facilité avec un langage de programmation dans le cadre d'une série de bibliothèques partiular sur une plate-forme particulière

  • C ++ sur winapi sous Windows 32bit
  • C ++ sur KDE sous Linux
  • C ++ sur Symbian sur un téléphone Nokia S60
  • C # sur MS .NET sous Windows
  • C # sur Mono sur Linux

Dans un tel contexte, les mesures de compétence en utilisant la langue cible sur la plate-forme cible sont les suivantes:

  • La capacité d'exprimer commune motifs de façon succincte et avec vigueur.
  • La possibilité de déboguer les bogues communes mais subtiles comme les conditions de course.

Il serait possible de développer une suite d'exercices de référence pour un programmeur. On peut aussi, une fois des échantillons importants étaient disponibles, déterminer la courbe de cloche pour la capacité. La préparation de ces choses prendrait littéralement des années et ils serait rapidement rendu obsolète. Cette (et l'étanchéité générale) est la raison pour laquelle les organisations ne prennent pas la peine.

Il serait également nécessaire pour les gens de qualité dans les deux « outilleur » et « modes utilisateur de l'outil ». Les fabricants d'outils sont des gens très différents avec un niveau beaucoup plus élevé de compétences, mais ils sont souvent inadaptés au travail de singe, pour lequel vous voulez vraiment un utilisateur de l'outil.

John

Il y a deux façons d'aborder votre question:

1) Si vous interviewez des candidats pour une position particulière nécessitant une langue particulière, la seule mesure de comparer les candidats est « combien de temps cette personne est-elle en train d'écrire dans cette langue. » Ce n'est pas parfait - il est même pas très bon - mais c'est la réalité. Sauf si vous voulez donner au candidat un problème, un ordinateur et un compilateur pour les tester sur place il n'y a pas d'autre mesure. Et puis la plupart des programmeurs-types ne font pas bien dans « quelqu'un vous regarde » scénarios.

2) J'interprète votre question à plus de «quand puis-je appeler MYSELF profecient dans une langue? Pour cela, je me réfère à des niveaux d'apprentissage d'une langue non maternelle: premier niveau vous est nécessaire de rechercher des mots / expressions dans un dictionnaire (livre) pour dire ou comprendre quoi que ce soit; deuxième niveau serait que vous pouvez comprendre entendre la langue (ou un code de lecture) avec seulement la recherche occasionnelle dans votre dictionnaire de confiance et maintenant éculée; troisième niveau, vous pouvez maintenant parler (ou écrire du code) avec seulement la recherche occasionnelle; quatrième niveau est l'endroit où vous rêvez dans la langue; et le niveau final est l'endroit où duper des locuteurs natifs en pensant que vous êtes un locuteur natif aussi (dans la programmation, d'autres experts penseraient que vous avez aidé à développer la syntaxe du langage).

Notez que cela ne permet pas de déterminer la qualité d'un programmeur, vous êtes - comme connaissance de l'anglais sans avoir à rechercher des mots dans le dictionnaire ne montre pas « comment vous Gooder est à writin choses » - qui est subjectif et n'a rien à voir avec une langue particulière que les gens qui sont bonnes à la programmation sont bonnes dans toutes les langues que vous leur donnez.

L'expression « une quantité raisonnable d'expérience » dépend de la langue considérée et ce qui peut être utilisé pour cette langue.

Une métrique est le résultat d'une mesure. Stevens (voir wikipedia: Niveau de mesure) a proposé que les mesures utilisent quatre différents types d'échelle: nominal (attribution d'une étiquette), ordinal (attribution d'un classement), l'intervalle (commande des mesures) et le rapport (ayant un point de départ zéro non arbitraire) . LOC est une mesure du rapport. Bien que loin d'être parfait, je pense que LOC est un nombre objectif pertinent, ce qui indique à quel point l'expérience que vous avez dans une langue et peut être comparé à des valeurs quantifiables dans l'industrie du logiciel. Mais, cela pose la question: d'où viennent ces valeurs de l'industrie proviennent de

Personnellement, je dirais que « George » saura qu'il a une quantité raisonnable d'expérience quand il a conçu, mis en œuvre et testé un projet, peut-être de son choix sur son temps personnel sur son ordinateur à domicile si besoin. Par exemple: base de données, application métier, page Web, outil de test GUI, etc

.

Du point de vue des gestionnaires d'embauche, je commence par demander au programmeur comment bon il / est dans la langue, mais ce n'est pas une métrique. Je l'ai toujours pensé que la meilleure façon de mesurer la capacité des personnes à écrire des programmes est de donner au programmeur plusieurs petits problèmes de programmation qui sont réfléchies à l'avance et résolus de temps donné, par exemple, à 5 minutes chacun. Je ne l'ai jamais fait objection à ce fait pour moi dans les entretiens d'embauche. Plusieurs mesures sont disponibles: Est-ce que le programmeur capable de résoudre le problème (oui ou non - nominale)? Combien de temps at-il fallu (nombre de minutes - rapport)? Dans quelle mesure était leur approche pour résoudre le problème (bon, passable, médiocre - ordinal)? Vous apprendrez non seulement les personnes capacité à écrire du code, mais peut observer plusieurs choses subjectives et, comme leur comportement en vaquant à résoudre le problème, les questions s / il demande tout en résolvant le problème, la capacité à travailler sous pression, etc, dans une perspective de « qualité » bien, rappelez-vous que les gens n'aiment pas être mesurée.

Pourtant, je crois qu'il ya quelques bons paramètres comme le McCabe Cyclomatic métrique pour la complexité cyclomatique ou la quantité de commentaires utiles par bloc de code ou même le montant moyen de code écrit entre deux tests consécutifs.

Je ne connais pas une telle chose. Je ne crois pas qu'il y ait consensus sur la façon de quantifier l'expérience ou ce que signifie « raisonnables ». Peut-être que je vais apprendre quelque chose de trop, mais si je fais ça va être une grande surprise.

Ce peut être pertinent.

Je trouve que tester la capacité de débogage est un indicateur plus précis de compétences de programmation que tout test visant à des problèmes de programmation simples que je l'ai rencontré. Compte tenu de la source pour une classe de taille raisonnable ou la fonction d'une mauvaise conduite avérée (ou tacite, dans certains cas), peut localiser le testee le problème?

Eh bien, ils essaient que dans les entretiens d'embauche. Il n'y a pas métrique, mais vous pouvez évaluer les capacités d'une personne en posant des questions et quizzing.

WTF / s * LOC, plus petit est le meilleur.

il n'y en a pas; expertise ne peut être jugée subjectivement par rapport aux autres, ou testé sur les détails (qui a son propre niveau d'inexactitude)

voir ce qui est la fascination pour les mesures de code pour plus d'informations

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top