Pourquoi la plupart des offres d'emploi s'adressent à un développeur <language here> plutôt qu'à un développeur en général? [fermé]


10

Dans un monde idéal:

Dans un excellent article Don't Call Yourself A Programmer, and Other Career Advice , Patrick McKenzie explique, entre autres, que la langue n'a pas d'importance:

  • Un développeur est une personne qui résout les problèmes, en général. Un développeur n'est pas une personne qui écrit du code dans un langage spécifique.

  • Les entreprises ne se soucient pas des langues que vous connaissez. S'ils ont besoin d'embaucher un développeur pour un projet écrit dans une langue spécifique, et qu'ils ont un candidat qui est très expérimenté mais n'a jamais écrit de ligne de code dans cette langue, il serait toujours embauché.

Selon mon expérience à la fois en tant que développeur et en tant que personne qui a dû embaucher d'autres développeurs, l'observation est très similaire:

  • L'expérience N années en Java ou N années d'expérience en C # n'a pas d'importance. Ce qui compte, c'est que le candidat sache comment résoudre les problèmes, qu'il fasse la différence entre le code spaghetti et le code propre avec une architecture bien pensée, etc.

  • Je me fiche des langues que vous avez utilisées auparavant. Pour un projet C #, je préfère embaucher un développeur professionnel qui a passé sa vie à écrire du code Java, Python et Ruby on Rails plutôt qu'un débutant qui ne connaît que C # et le sait mal.

  • Les connaissances et l'expérience acquises en utilisant une seule langue sont principalement réutilisables dans n'importe quelle autre langue.

    Un développeur expérimenté qui a utilisé Ruby on Rails pour le développement Web et a passé le reste de sa carrière à écrire des applications de bureau Java à l'aide d'Oracle convient parfaitement à un projet ASP.NET MVC utilisant Microsoft SQL Server. Parce que cette personne sait déjà tout ce dont elle a besoin pour ce travail , à part quelques choses spécifiques et des différences de syntaxe.

    D'un autre côté, une personne qui n'a fait que quelques petits sites Web ASP.NET MVC ne correspond pas du tout, car elle peut ne pas comprendre complètement l'architecture MVC, peut savoir ce qu'est le profilage SQL et peut manquer d'autres éléments essentiels connaissance.

    Ne me dites pas que je ne peux pas résoudre un petit problème avec un site Web PHP qui utilise CodeIgniter juste parce que je n'ai jamais utilisé CodeIgniter auparavant.

En pratique:

En pratique, lorsque je recherche des emplois indépendants et quand je vois les offres d'emploi en général, elles sont très spécifiques à la langue.

Certains chercheraient un développeur PHP avec deux ans d'expérience dans Magento. D'autres chercheront une personne avec une expérience VB.NET d'au moins trois ans, et si vous leur envoyez un curriculum vitae mentionnant que vous avez fait du développement C # pendant six ans, mais sans mention de VB.NET, ils ne dérangeront pas répondre. S'ils demandent une personne ayant une expérience avec Firebird, ils n'écouteront pas vos dix années d'expérience avec Oracle.

Pourquoi y a-t-il une telle différence entre la théorie et ce que Patrick McKenzie et moi décrivons comme étant du bon sens, et le monde réel des offres d'emploi?


12
Don't tell me that I'm unable to fix a small problem with a PHP website which uses CodeIgniter just because I never used CodeIgniter before.Bien que vous soyez parfaitement capable de résoudre le problème, si la cause principale est CodeIgniter (l'une des rares bizarreries du cadre ou l'un de ses nombreux bogues ouverts), il vous faudra beaucoup plus de temps pour résoudre le problème.
yannis

12
Vous avez oublié quelques tags: <rant>...</rant>. Sérieusement, y a-t-il une vraie question ici?
Cyclope

6
"Je ne me soucie pas des langages que vous avez utilisés auparavant. Pour un projet C #, je vais plutôt engager un développeur professionnel qui a passé sa vie à écrire du code Java, Python et Ruby on Rails plutôt qu'un débutant qui ne connaît que C # et sait mal. " - Prenez ce paillard! C'est une fausse dichotomie. Votre diatribe est correcte pour les débutants, mais PAS pour les postes qui nécessitent une connaissance approfondie d'une plate-forme particulière.
Jim In Texas

1
Quelqu'un qui a de l'expérience dans une langue va faire le travail beaucoup plus rapidement et beaucoup plus proprement, penser autrement est simplement délirant.
Thomas Bonini

Quand je recrute, je suis celui qui a une très longue liste de "Doit avoir utilisé les termes Technobabble X, Y et Z". Et si je peux trouver cette personne, je peux l'embaucher. Quand je suis la personne à la recherche d'un emploi, je pourrais leur en vouloir de ne pas me regarder parce que je n'ai que des tas de cerveaux, et pas l'expérience exacte qu'ils veulent, mais si j'avais la chose exacte qu'ils veulent, je m'attendrais se faire embaucher, sur place. Donc à la fin, c'est leur appel, et c'est comme ça que ça devrait être.
Warren P

Réponses:


16

Parce que de nombreuses entreprises ont des drones RH qui recrutent et qui n'en ont aucune idée. Lorsque les RH disent "Quelles sont les qualifications dont le candidat a besoin?" il est beaucoup plus facile de dire «Six ans C #» que de dire «Écrit un bon code». Ce drone n'a aucune idée de ce à quoi "écrit un bon code" ou comment filtrer un CV selon qu'il peut ou non écrire un bon code. Ils peuvent cependant lire rapidement un curriculum vitae et voir "Cinq et trois quarts d'années C #" et le jeter.


3
Exactement. les non-développeurs et la direction peuvent vous regarder de travers si vous dites que vous cherchez quelqu'un avec des compétences similaires, mais que vous auriez besoin d'apprendre un peu (par exemple une syntaxe spécifique, pas des concepts) au début, à moins qu'ils ne soient d'accord avec cela.
Michael Durrant

Je pensais qu'ils s'appelaient des singes RH ... Je suis totalement d'accord, mais c'est une bonne idée d'avoir un gourou <language here> dans l'équipe.
Lukasz Madon

3
Mettre "écrit un bon code" dans l'annonce est un non-sens complet. Tout le monde pense qu'ils écrivent du bon code. Et ceux qui sont les plus reconnus coupables de leurs compétences supérieures en écriture de code sont généralement ceux qui écrivent le pire code.
nikie

1
@nikie: C'est une simplification. Bien sûr, vous ne mettriez pas exactement cela dans l'annonce.
DeadMG

3
Je ne pense pas que ce soit la raison principale, car les petites startups sans département RH font exactement la même chose.
J. Maes

22

Je pense qu'il est temps de mettre à nu ce mythe qu'un développeur avec X ans d'expérience dans la langue Y peut facilement passer à la langue Y2. Ce n'est pas ainsi que cela fonctionne.

Si vous traitez le langage comme sa syntaxe et ses modèles courants, sachez, par exemple, que Java vous donnera une énorme longueur d'avance lorsque vous passerez en C #. Il ne vous préparera cependant pas pour WCF, WPF, Click Once, les différentes bibliothèques de threads, Linq, et il ne vous préparera certainement pas pour les choses que la brochure dit fonctionner, mais en pratique ne le font pas.

Vous voyez que vous ne parlez pas d'une langue, vous parlez généralement d'une plate-forme. Et là où la plate-forme, .NET est un bon exemple, prend en charge de nombreuses langues, les gens ont tendance à converger vers un choix préféré.

Donc, lorsque je demande un développeur C #, je fais de la publicité pour un développeur de plateforme .NET dont l'expérience réside dans les projets C #. Il s'agit généralement de projets de serveurs .net, de projets winforms / wpf.


Je suis d'accord. C'est bien sûr possible, mais difficile. La syntaxe de la famille C se transfère facilement, mais une véritable compréhension de la plate-forme complète et de l'ensemble d'outils prend beaucoup de temps à comprendre. Mon conseil aux jeunes développeurs / programmeurs / analystes / codeurs est de sauter sur les nouvelles technologies à votre guise pendant que tout le monde est encore débutant. Les gens qui ont plongé dans le développement HTML5, iOS et Android il y a deux ou trois ans sont maintenant en bonne forme. Bien sûr, il est possible de deviner mal (demandez-moi à propos de Flex), mais ce n'est pas la fin du monde.
Jim In Texas,

C'est principalement parce que Java -> C # est similaire à C -> C ++ - ils peuvent être construits sur les mêmes bases, techniquement, mais C # comprend bien plus de fonctionnalités que vous voudriez réellement utiliser. La transformation inverse serait beaucoup plus facile, passant de C # à Java.
DeadMG

11

Je peux penser à quelques raisons:

  1. Employé vs consultant - Si j'embauche un consultant, je veux qu'il soit déjà à jour sur la pile technologique que nous utilisons. On s'attend à ce que les consultants soient efficaces très rapidement car ils ne sont pas aussi longs pour amortir l'apprentissage.
  2. Offre / demande - Comme Doc l'a dit, si je veux choisir le candidat le plus expérimenté possible pour le poste. Et la pile technologique est importante pour les technologies établies. Si je suis à la recherche d'une personne à développer dans Go (en choisissant une langue que peu de gens connaissent), presque personne n'a d'expérience avec elle et je suis de retour à des compétences en tant que développeur en général.

4

Tous les travaux de programmation ne sont pas identiques. Mon travail actuel s'inscrit certainement dans votre modèle. Cela implique beaucoup d'analyse de données ad hoc et nous prenons et déposons des outils selon les besoins. J'ai été embauché en partie parce que j'avais la réputation de pouvoir rapidement devenir productif avec de nouveaux outils.

D'autre part , il y a des emplois où vous êtes à la recherche d' une expertise technique spécifique. Dans les années 90, je travaillais pour une petite boutique de logiciels et nous devions développer rapidement une expertise en C ++. Malgré la demande explicite d'expertise en C ++ dans nos annonces, la plupart des candidats connaissaient moins le C ++ que moi. "Mais je peux apprendre le C ++ rapidement!" ils ont tous dit. Eh bien oui, je suis sûr que vous le pourriez, mais moi aussi, tout comme les autres personnes déjà présentes. Nous recherchions quelqu'un qui connaissait déjà vraiment le C ++, nous aurions donc une source d'expertise en interne au fur et à mesure que le reste d'entre nous prendrait de la vitesse. Avoir un autre débutant dans l'équipe n'aurait vraiment pas aidé.


1
+1: Une ÉQUIPE peut faire en sorte que certains ou même la plupart des développeurs soient nouveaux dans la langue, mais cela aide beaucoup d'avoir des experts linguistiques qui peuvent enseigner à tout le monde.
TREE

3

Les entreprises ne se soucient pas des langues que vous connaissez. S'ils ont besoin d'embaucher un développeur pour un> projet écrit dans une langue spécifique, et qu'ils ont un candidat qui est très expérimenté> mais n'a jamais écrit une ligne de code dans cette langue, il serait toujours embauché.

Disons que vous recherchez un candidat pour un emploi .NET / C #. Si vous avez deux candidats pour le poste, les deux semblent être également très expérimentés, mais le premier a acquis son expérience dans l'écosystème Java, le second dans l'écosystème .NET - lequel est votre préféré?

D'autres chercheront une personne avec une expérience VB.NET d'au moins trois ans, et si vous leur envoyez un curriculum vitae mentionnant que vous avez fait du développement C # pendant six ans, mais sans mention de VB.NET, ils ne dérangeront pas répondre.

Qui peut dire pourquoi vous n'obtenez pas de réponse? Peut-être qu'il y avait suffisamment de développeurs VB.NET expérimentés pour postuler? Peut-être que le département des ressources humaines utilise l'expérience du langage de programmation comme filtre pour réduire le nombre de demandes d'emploi de 100 à 10. Peut-être que vous venez de parler aux mauvaises entreprises (je suppose que dans mon entreprise, nous enverrions une réponse dans l'exemple) vous avez décrit ci-dessus).


2

Dans la plupart des projets, les résultats du travail sont nécessaires rapidement et les gens doivent générer des profits dès que possible.

Les personnes capables de répondre à ces besoins et qui ne sont pas liées à une ou des langues spécifiques sont rares et par conséquent trop chères. Ces personnes ne sont embauchées que par les grandes entreprises qui demandent des compétences incroyables.

Les personnes capables de résoudre le problème mais ne pouvant pas apprendre rapidement une langue spécifique sont moins rares. Ils coûtent toujours beaucoup d'argent, et ils ont un coût supplémentaire de temps nécessaire pour apprendre la langue spécifique.

Ce coût supplémentaire de temps est réduit en demandant un programmeur spécifique à la langue. Il a déjà acquis les compétences requises et peut fournir des résultats rapidement.

En bref, un projet qui doit être fait en JAVA n'a pas besoin d'un développeur de logiciel incroyable et coûteux, ni d'un développeur .net moyen qui aura besoin de temps pour apprendre le langage / le framework. Il a besoin de résultats immédiats pour le moins d'argent possible, qui sont fournis par le gars qui a déjà de l'expérience avec JAVA et possède de bonnes compétences en résolution de problèmes.

Comme toujours, il s'agit d'argent et d'obtenir le meilleur retour sur investissement


2

Je pense que vous avez simplement mal interprété l'expression standard "<language here> developer". Les entreprises ne mettent pas cette phrase dans l'annonce pour dissuader les développeurs qui ont de l'expérience dans une autre langue. Pourquoi voudraient-ils dissuader les développeurs capables? Du point de vue de l'employeur, plus il y a de candidats, mieux c'est. Ils ne peuvent toujours pas inviter des personnes qui ne les intéressent pas.

Le vrai but de la phrase est de vous dire, lecteur, ce que l’offre d’emploi impliquerait. Et cela a beaucoup de sens, à mon humble avis. Souhaitez-vous postuler à un emploi où vous développez en langage d'assemblage Z80? Ou COBOL? Ou Fortran?

Et, évidemment, si l'entreprise a deux candidats qui semblent tout aussi intelligents autrement, alors celui qui a de l'expérience en <langue ici> l'emporte. Ni plus ni moins. (Il existe des cas particuliers, où des personnes sont embauchées pour un seul projet, ou pour un projet qui est déjà en retard, ou pour le premier projet que la société développe dans <langue ici>, où vous avez vraiment besoin d'une expérience dans cette langue depuis le début, mais je ne pense pas que ce soit la règle.

Soit dit en passant, mon entreprise a déjà écrit des annonces comme vous l'avez suggéré (il semble que cela ait du sens, après tout). Les résultats ont été dévastateurs. Les gens qui se soucient vraiment de leur travail ont simplement sauté l'annonce. Seuls les désespérés, qui postulent à n'importe quelle position ouverte, postulent. Nous ne l'avons plus jamais essayé.


1

Prenez du recul et pensez à la prémisse. Vous voulez qu'une personne fasse du travail .net. Vous mettez cela dans votre description de poste et vous recherchez des candidats avec cette compétence! Ceci est juste du bon sens.

Je suis certainement d'accord avec vos philosophies plus détaillées sur les raisons pour lesquelles cela pourrait ne pas être une bonne idée, mais la plupart des gens vont simplement annoncer, exiger et rechercher un candidat avec les compétences dont ils ont besoin maintenant. C'est aussi simple que cela, donc je pense que cela répond au titre de votre question.

S'ils ne peuvent pas trouver de candidats du tout, ou passer par plusieurs mauvais, alors ils pourraient étudier un peu et être plus réceptifs aux éléments que vous détaillez. En fait, dans la région où je me trouve (Ruby on Rails), il y a BEAUCOUP d'annonces en ce moment qui disent "aucune expérience requise, nous vous formerons", etc. et en fait, certaines des meilleures organisations Ruby on Rails sont très ouvert aux candidats "sans mauvaises habitudes" qu'ils peuvent former. Ainsi, la bonne approche est là-bas par certaines organisations.

Gardez également à l'esprit que la plupart des annonces proviennent de recruteurs externes ou de recruteurs internes non techniques qui n'ont tout simplement pas les connaissances nécessaires pour "aller de côté" comme vous le décrivez.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.