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?
la source
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.<rant>...</rant>
. Sérieusement, y a-t-il une vraie question ici?Réponses:
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.
la source
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.
la source
Je peux penser à quelques raisons:
la source
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é.
la source
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é?
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).
la source
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
la source
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é.
la source
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.
la source