Quelle est la différence dans les années d'expérience d'un développeur avec une langue? [fermé]

9

Comme indiqué par le titre, quelle est la différence d'années d'expérience dans une langue donnée en termes de développeurs? Par exemple, si un développeur a eu cinq ans de travail avec la langue A et l'autre développeur a eu deux ans de travail avec la langue B suivi de trois ans de travail avec la langue A, y aurait-il une différence perceptible entre eux?

rjzii
la source

Réponses:

26

"ça dépend"

Expérience <> connaissance ou compréhension.

Le programmeur 1 pourrait être très bon, même un gourou, ou ce pourrait être quelqu'un qui tâtonne avec la langue depuis 5 ans.

Le programmeur 2 pourrait être quelqu'un qui comprend les concepts indépendamment du langage qu'ils utilisent. Ou quelqu'un qui a trouvé la langue B trop difficile et espère que A sera plus facile.

Coding Horror "The Years of Experience Myth" mérite d'être lu

gbn
la source
6
Comme on dit, votre développeur peut avoir cinq ans d'expérience avec la langue A - ou il peut avoir une année d'expérience, répétée cinq fois.
Carson63000
1
+1 pour la vérité - J'ai travaillé avec de nouvelles recrues avec plus de 8 ans d'expérience qui se sont avérées être au mieux moyennes. À l'inverse, nous venons d'embaucher un gars un an après l'université et il a dépassé toutes les attentes.
Damovisa
4

Ça dépend.

J'ai un ami qui a tendance à s'en tenir à une seule langue, donc si vous le considérez comme "programmeur A", il a 1 an d'expérience avec cette langue, cinq fois.

Différentes langues vous permettent de faire des choses différentes. Un essai que j'aime particulièrement s'intitule " Beating the Averages " de Paul Graham. Il essaie de convaincre les gens d'apprendre le lisp, mais il fait également quelques remarques très utiles:

Les programmeurs sont très attachés à leurs langues préférées, et je ne veux blesser personne, donc pour expliquer ce point, je vais utiliser un langage hypothétique appelé Blub. Blub tombe en plein milieu du continuum de l'abstraction. Ce n'est pas le langage le plus puissant, mais il est plus puissant que Cobol ou le langage machine.

Et en fait, notre hypothétique programmeur Blub n'utiliserait aucun d'eux. Bien sûr, il ne programme pas en langage machine. C'est à cela que servent les compilateurs. Et quant à Cobol, il ne sait pas comment on peut faire quoi que ce soit avec. Il n'a même pas x (fonction Blub de votre choix).

Tant que notre hypothétique programmeur Blub regarde dans le continuum de puissance, il sait qu'il regarde vers le bas. Les langues moins puissantes que Blub sont évidemment moins puissantes, car il leur manque une fonctionnalité à laquelle il est habitué. Mais lorsque notre hypothétique programmeur Blub regarde dans l'autre direction, dans le continuum de puissance, il ne se rend pas compte qu'il lève les yeux. Ce qu'il voit n'est que des langues étranges. Il les considère probablement comme équivalents en puissance à Blub, mais avec tous ces autres trucs poilus également. Blub est assez bon pour lui, car il pense à Blub.

Cependant, lorsque nous passons au point de vue d'un programmeur utilisant l'un des langages plus haut dans le continuum de puissance, nous constatons qu'il à son tour méprise Blub. Comment pouvez-vous faire quoi que ce soit dans Blub? Il n'a même pas y.

Généralement, mon conseil est d'apprendre plus d'une langue et de savoir quelles sont les forces et les faiblesses des langues.

Tangurena
la source
Je suis d'accord qu'il est important de connaître plusieurs langues. Les langues sont des outils dans notre boîte à outils et savoir quelles sont leurs forces et leurs faiblesses est important pour faire un travail. Vous pouvez enfoncer un clou avec un tournevis ou un marteau ou une pince, mais l'un fonctionne beaucoup mieux que les autres. Bien sûr, un marteau est moche pour retirer une vis ou serrer ou desserrer un écrou sur un boulon.
The Tin Man
2

Bien sûr, le développeur qui a plus d'années d'expérience dans une langue aura une meilleure compréhension des bibliothèques de base et des particularités de cette langue. Si les langues adoptent le même paradigme (impératif vs fonctionnel), elles ne devraient pas avoir plus de mal à apprendre cette langue que d'apprendre à le faire.

Ma plus grande difficulté à choisir un nouveau langage est venue d'essayer de passer de C # à Erlang, car cela représentait non seulement une nouvelle syntaxe mais aussi une nouvelle façon de penser la programmation.

Watson
la source
5
En supposant que le développeur est compétent.
gbn
2
@gbn: Je peux absolument vous assurer que dans mon cas, vous ne pouvez pas faire cette supposition :)
Watson
2

Voici ce que j'attends / espère:

  1. Maîtrise - ils devraient être en mesure d'écrire plus de code du haut de leur tête et moins de temps à rechercher la syntaxe.
  2. Connaître la différence entre les versions précédentes et actuelles et comment migrer le code de l'une à l'autre.
  3. Avoir une meilleure compréhension de la compilation, de la distribution, des tests et de la création de mises à niveau et de correctifs.
  4. Créez / ajoutez des modules complémentaires à l'EDI et gagnez en efficacité.
JeffO
la source
2

Les langues ne sont pas le problème. Vous pouvez apprendre une langue entière en quelques jours. Ce qui prend plus de temps à absorber, ce sont les conventions, les API et divers cadres tiers. Lorsque les gens demandent cinq ans de X, ils ne se soucient pas de la langue, ils veulent quelqu'un qui a beaucoup d'expérience dans la résolution de problèmes dans et avec cette langue afin de ne pas avoir à payer pour la courbe d'apprentissage.

Jeremy
la source
Vous pouvez apprendre une langue entière rapidement, mais s'il y a des concepts que vous ne connaissez pas, cela prendra du temps. Toutes les langues n'ont pas les mêmes concepts.
David Thornley
2

Expertise et pratique délibérée.

Si vous ne pratiquez pas délibérément, vous ne gagnerez pas d'expertise. (Vous devez également examiner vos erreurs et les corriger, vous exercer à vos faiblesses et avoir un expert pour vous dire ce que vous faites de mal vous aide également.)

Si vous n'essayez pas de vous améliorer, vous pouvez être un débutant pour toujours!

Après dix mille heures de pratique délibérée, vous obtiendrez une expertise. (Cette constatation de l'éducation / formation est partout sur le net.)

Si votre programmeur A n'a pas délibérément pratiqué, il ne s'améliore jamais.

Si votre programmeur B n'a pas délibérément pratiqué, il ne s'améliore jamais.

Une autre conclusion de la même recherche: que si j'ai 15 000 heures et que vous en avez 10 000, et que je continue à pratiquer et vous aussi, vous ne serez jamais meilleur que moi.

Connaître deux langues fera probablement de B un meilleur programmeur (sous réserve des règles de pratique).

Tim Williscroft
la source
1

Et vous les utilisez pour la langue A, je suppose? (De toute évidence, il y aurait une différence dans le langage B.)

Cela dépend en partie des différences entre A et B (en particulier si nous raccourcissons l'expérience du deuxième développeur avec A). S'ils sont assez similaires, il n'y aura essentiellement aucune différence d'expérience. Si A a des concepts considérablement différents, trois ans sont encore probablement suffisants pour les apprendre. Compte tenu d'une très grande bibliothèque et d'outils compliqués, il peut y avoir une différence entre trois et cinq ans.

Bien sûr, ce qui importe le plus ici, c'est l'individu. Un bon développeur peut apprendre à fond une nouvelle plateforme en trois ans, et cela ne devrait donc pas être un problème.

David Thornley
la source
1

Je conviens que la langue est la langue et les concepts sont des concepts.

Mon problème est qu'il existe de nos jours un grand nombre de programmeurs qui, sans IDE sophistiqué, ne pourraient pas programmer du tout. Ce ne sont vraiment pas des programmeurs mais plutôt des concepteurs.

Je sais par expérience personnelle qu'il y a beaucoup de gens qui ont été séduits par l'environnement de développement Microsoft glissant. Ce n'est pas faux qu'ils déposent une zone de texte sur l'écran puis définissent les propriétés avec l'assistant et glissent les données à partir d'une image de la base de données, mais sont-ils vraiment des codeurs dans n'importe quelle langue s'ils ne font que configurer des tests d'égalité de base?

Ces gens ne seront jamais en mesure de prendre les concepts qu'ils ont appris et de les appliquer à une autre langue.

Quand j'interviewe des gens, je suis plus intéressé par la façon dont ils ont fait leur développement et les cadres qu'ils ont utilisés. J'aime poser des questions comme: "Comment écrivez-vous un gestionnaire d'événements?", "Comment mettez-vous exactement les données dans la base de données?", Ou même "Comment puis-je transformer ce bouton en violet lorsque je clique dessus?" cela éliminera rapidement les concepteurs et laissera les programmeurs. J'ai trouvé que 3 ou 4 ans de programmation avec un an dans la langue de mon choix sont suffisants pour ce dont j'ai besoin.

Juste une autre opinion,

Tal

Tal Cameron McMahon
la source
1

"Des années d'expérience en langage / plateforme X" est largement une pathologie de recrutement ...

Il est ouvert à l'interprétation et n'est pas aussi utile qu'il n'y paraît à première vue. Comme on l'a dit, le mythe des années d'expérience est une bonne lecture.

De plus, surtout, la mesure des "années d'expérience" elle-même peut être très imprécise. Voici un exemple de mon concert actuel: ma tâche principale est de développer et de maintenir une application Web Java. Cependant, cela s'exécute sur un serveur principal qui est MFC / C ++ / SQL Server. Par conséquent, je traite également du code C ++ pratiquement quotidiennement. MAIS - cette expérience C ++ est relativement superficielle et orientée vers la maintenance, et je n'écris plus vraiment de gros composants ou programmes entiers à partir de zéro dans MFC / C ++ (je le faisais auparavant dans les rôles précédents).

Puis-je toujours compter ces 5 dernières années comme "5 ans d'expérience C ++"? Peut être. Peut être pas. Selon la façon dont je veux le vendre pour sécuriser un rôle particulier, je peux facilement le surestimer sans mentir, ou je peux admettre que ce n'était pas vraiment 5 solides "années d'expérience C ++". :) Je suis sûr que de nombreux cas sont également ouverts à ce type de problème "d'inexactitude de la mesure". La profondeur de l'expérience peut considérablement obscurcir la qualité de l'expérience. Un "X temps passé avec C ++" ne signifie donc pas grand-chose en soi.

Tables Bobby
la source
-1

Oui, le programmeur 1 n'a aucune connaissance de la syntaxe du langage B.

Les concepts de programmation sont des concepts de programmation. Le langage n'est qu'une syntaxe.

Michael Riley - AKA Gunny
la source
5
oh, si mal ...
Javier
Javier a raison, le langage est bien plus que la syntaxe ... il y a des conventions, des bibliothèques tierces, des API, que vous apprenez avec l'expérience.
Daniel S