Je suis récemment allé à un «salon de l'emploi» et j'ai été surpris de voir à quel point les lieux de travail semblent mettre l'accent sur les langages de programmation que les candidats connaissent.
D'après mon expérience (certes limitée), bien que la maîtrise d'un langage de programmation puisse prendre des années, l'apprendre à un niveau raisonnable est une affaire assez simple pour quelqu'un qui a déjà de l'expérience avec d'autres langues, et peut certainement s'inscrire dans le délai que les employeurs allouent habituellement pour la montée en puissance initiale.
Je pense qu'un employeur se soucierait davantage du nombre de langages / paradigmes que je connais ou de mon expérience en conception algorithmique / logicielle, par opposition à la technologie spécifique avec laquelle je suis compétent en ce moment.
Disons que je connais déjà Java, C ++, Smalltalk et Prolog ... un lieu de travail qui repose sur Objective-C devrait-il vraiment me considérer comme non qualifié parce que je manque d'expérience dans ce langage? Est-ce une faille dans les méthodologies de recrutement, et si c'est le cas, que puis-je faire pour convaincre ce lieu de travail que mon manque d'expérience avec Objective-C ne devrait pas avoir d'importance? Je pose des questions hypothétiques, pas spécifiquement sur les langages de programmation mentionnés.
Alternativement, mon expérience est limitée et j'avoue que je manque peut-être quelque chose. L'expérience antérieure avec un langage de programmation est-elle plus cruciale que ce que je pense que c'est? Cela fait-il une différence s'il s'agit d'un poste junior ou senior? Cela devrait- il faire la différence?
Réponses:
Contrairement aux communiqués de presse, c'est un marché d'employeur en ce moment.
Cela signifie qu'ils peuvent simplement être pointilleux sur leurs besoins. Cela signifie qu'ils peuvent exiger une expérience .NET 4.0, et pas seulement une expérience 3.5 ... Cela signifie qu'ils peuvent exiger une expérience avec Django, et pas seulement avec Pylons, etc ...
Bien sûr, vous pourriez apprendre tout ce que vous devez savoir sur Ruby en quelques semaines, et Rails pourrait prendre quelques mois (juste deviner) pour devenir compétent avec ...
Mais l'employeur peut choisir parmi les CV de personnes déjà compétentes en Ruby & Rails.
TL; DR: Econ 101 ... Ne croyez pas le battage médiatique sur la pénurie de programmeurs .
la source
Le problème principal est que personne ne sait vraiment comment embaucher de bons programmeurs. Le problème secondaire est que les emplois en programmation attirent de nombreux candidats.
Étant donné un grand nombre de CV, il serait très agréable de pouvoir les parcourir et de choisir les bons programmeurs, mais personne ne sait comment faire. Comme la plupart des entreprises fonctionnent, le tri initial est généralement effectué par les RH. La personne des ressources humaines ne connaît rien de Smalltalk ou C ++, sauf comme indiqué sur la liste des exigences, contrairement à un informaticien qui pourrait penser "C ++ AND Smalltalk - ce type n'aura aucun problème avec Objective-C".
Même lorsque la pile revient au gestionnaire d'embauche, il est très probable qu'elle soit trop épaisse pour interroger tout le monde, de sorte que le gestionnaire d'embauche doit envoyer des curriculum vitae pour une raison ou une autre. Si c'est un travail C ++, et qu'il y a plus de personnes avec plus de 5 ans de C ++ que le manager ne trouve pratique à interviewer, le manager peut bien lancer tous les CV qui n'ont pas C ++ sur eux. Ce n'est pas le moyen d'obtenir les meilleures personnes absolues, mais personne ne sait comment embaucher les meilleures personnes absolues, et si vous êtes limité dans la prise de décision par ce qui est sur le CV, les personnes ayant une expérience C ++ sont au moins légèrement mieux paris.
la source
Tournons-nous autour - si vous connaissiez l'objectif C, seriez-vous utile en tant que programmeur C ++? Je dirais que non, les langues sont trop différentes. Pour des langages même simples comme C, je voudrais voir 6 mois d'expérience avant d'embaucher quelqu'un, pour C ++ plusieurs années.
Il y a quelques années, je me suis enseigné le PHP. Je dirais qu'il a fallu plusieurs mois avant de me perfectionner, de trouver mon chemin dans la bibliothèque, de comprendre des idiomes courants, etc. Et je connaissais déjà beaucoup de langues.
la source
Cela dépend de divers aspects du contexte. Pas seulement le niveau du rôle, mais aussi l'état du projet et de l'entreprise.
Au niveau le plus simple, tout langage impératif entre accolades est à peu près le même que n'importe quel autre.
Si vous pouvez coder impérativement, vous pouvez coder impérativement. Que ce soit Java, C #, C, C ++, ou même javascript. Étant donné un livre de référence décent (et peut-être un peu de passe-partout), vous devriez être en mesure de supprimer un petit programme dans l'un des autres dans un après-midi.
Quel que soit votre historique, vous connaissez les branches et les fonctions des boucles, et la syntaxe est à peu près la même pour toutes. Si votre historique est OO, vous connaissez également les objets, les classes et les interfaces.
Cependant, j'ai vu trop de programmeurs uniquement impératifs lutter pour écrire des programmes simples dans des langages déclaratifs ou fonctionnels. Si je dirigeais une boutique Erlang, je préférerais fortement une personne avec Erlang, ou du moins Prolog, une expérience plutôt qu'une personne avec C ++.
Comment cela dépend du niveau du rôle:
Recrutement pour un poste junior:
Si je choisissais un programmeur pour un travail C ++, il y a certains pièges que je voudrais être certain que le candidat est capable d'éviter, comme la nécessité de faire attention à la mémoire ou à la longueur des tableaux, simplement pour qu'ils ne pas se tirer une balle dans le pied (et moi). S'ils n'ont jamais fait de C ou de C ++, alors je devrais travailler cela dans l'interview.
Et pour un poste senior:
L'une des clés d'une programmation efficace est de savoir ce que vous ne devez pas écrire vous-même. La clé de tout cela, ce sont les bibliothèques standard (et de facto standard). La clé de cela, c'est l'expérience. Vous ne pouvez pas simplement vous asseoir avec "Teach yourself Java" pendant une semaine et vous transformer instantanément d'un programmeur C ++ de 10 ans en programmeur Java de 10 ans.
Comment cela dépend de l'état du projet / de l'entreprise
Étant donné un projet Java qui est à peu près une table rase. Je voudrais qu'un nouvel employé senior ait beaucoup de connaissances sur l'écosystème Java et soit en mesure de donner des conseils sur les différentes technologies disponibles.
Étant donné un projet Java mature, je considérerais avec plaisir un développeur C ++ expérimenté, avec peu ou pas d'expérience Java pour un rôle Java senior. La plupart des décisions concernant l'écosystème auront déjà été réglées, et la nouvelle recrue pourra acquérir de l'expérience avec les bibliothèques Java tandis que la société tire parti de l'expérience du programmeur dans le développement de logiciels OO.
la source
Cela dépend du lieu de travail. S'ils sont très occupés, ils pourraient ne pas avoir le temps d'attendre que vous rattrapiez un point où vous pouvez fonctionner dans Objective-C - ils pourraient vouloir quelqu'un qui peut frapper le sol en courant.
Certains lieux de travail pourraient être prêts à prendre un risque pour vous s'ils constatent que vous êtes familier avec d'autres langues, que vous avez des bases solides et une connaissance du domaine des affaires. Cela dépendra vraiment de leur ouverture et de votre capacité à convaincre le recruteur de prendre ce risque.
la source
L'embauche est difficile; embaucher de bonnes personnes est encore plus difficile. J'ai fait de l'embauche là où j'étais confronté à une pile de plus de 500 CV. Bien sûr, nous avons filtré les personnes ayant le moins d'expérience dans ce que nous voulions pour réduire la pile à une taille raisonnable. Est-ce juste pour l'excellent candidat qui ne connaît pas cette langue, probablement pas. Mais si je peux trouver 100 personnes qui ont les qualifications que je recherche, je ne vais vraiment pas passer beaucoup de temps sur les 400 qui ne l'ont pas - peu importe leur niveau.
Maintenant à l'embauche, j'ai peut-être une longue liste d'exigences, mais généralement seulement un ou deux sont des rupteurs d'affaire. Et si vous ne trouvez personne avec la liste initiale des qualifications que vous souhaitez interviewer (ou plus tard si elles échouent toutes à l'entretien que j'ai vu se produire), alors généralement elles reviendront et regarderont les personnes qui en manquent des qualifications moins critiques ou des personnes qui ont quelque chose de similaire mais pas le même. Dans ces cas, vous recherchez souvent quelque chose sur l'expérience de la personne qui la rendra meilleure pour votre travail qu'une personne ayant toutes les qualifications techniques. Par exemple, je considérerais une analyste de données avec une expérience dans une base de données d'entreprise différente si elle avait de l'expérience dans mon domaine d'activité (en fait, cette personne ferait probablement ma première coupe si je voyais tous les CV). Même chose avec quelque chose comme C # et Java. Si la personne effectue un travail d'un niveau de complexité similaire et en particulier dans un domaine commercial similaire, elle pourrait être un très bon candidat même si elle a l'autre langue.
Cependant, à moins d'avoir un programme de formation assez formel pour les personnes débutantes, je serais moins susceptible d'embaucher des personnes qui ne répondent pas à mes compétences minimales en langues. Et presque jamais d'un groupe qui n'avait rien de ce que je recherchais. Les personnes sans expérience ont moins à apporter à la table en termes de qualifications compensatoires et moins d'antécédents pour prouver qu'elles peuvent faire un travail de niveau professionnel dans n'importe quelle langue. Ils ont assez à apprendre avec leur premier concert professionnel sans une certaine compréhension de la langue la plus importante que nous utilisons. Et les embaucher est plus à risque que des mois puissent s'écouler avant que vous puissiez obtenir un travail utile de leur part.
Un autre point entre en jeu si le responsable du recrutement transfère l'équipe vers une nouvelle technologie. Si personne dans l'équipe n'est vraiment expert dans la technologie et que je dois également embaucher quelqu'un de nouveau, je vais chercher à embaucher quelqu'un avec autant d'expertise que je peux trouver dans cette technologie parce qu'ils ont une idée où les "mines terrestres" "à éviter.
Enfin, postulez pour les emplois qui vous intéressent même si vous ne remplissez pas toutes les conditions énoncées (mais essayez de répondre à certaines, l'embauche d'agents n'aime pas perdre son temps sur des personnes qui ne seraient jamais embauchées). Vous ne savez jamais quel concours vous allez avoir pour un emploi ou ce qui impressionnera le plus les personnes qui sélectionnent les curriculum vitae ou font les entrevues. Ce qui pourrait vous procurer un entretien dans l'entreprise A pourrait être exactement ce qui vous empêche d'obtenir l'entretien dans l'entreprise B, même si les exigences sur papier sont similaires. De plus, ils pourraient avoir un emploi qui correspond mieux à vos qualifications qu'ils n'ont pas encore annoncé. Mais vous ne serez jamais considéré pour le poste s'il ne vous connaît pas.
la source
Le devrait- il? Non . Est - il? Oui, malheureusement. C'est le syndrome de "l'écureuil pourpre": l'entreprise veut avoir son gâteau et le manger aussi, et trouver un candidat qui peut faire tout sous le soleil dont il a besoin ou peut avoir besoin. Souvent, mais pas toujours, c'est parce qu'ils non plus A) n'ont aucune idée de ce que le développement implique vraiment et supposent simplement que quelqu'un répondant à tous leurs critères peut faire le travail, B) ils sont difficiles car ils peuvent s'en tirer, ou C) Ils prévoient de déposer une carte H-1B / Green Card / Promouvoir de l'intérieur mais doivent donner l'impression qu'ils annoncent un vrai travail.
la source
Si vous avez plus de 20 ans d'expérience dans 3 ou 4 langues qui ont des fonctionnalités similaires à Objective-C, je vous embaucherais probablement pour faire Objective-C et vous attendrais à être productif dans 6 à 8 semaines. (ceci est basé sur mon expérience personnelle avec l'apprentissage d'Objective-C il y a quelques années).
Si vous êtes vert dès la sortie de l'école, sans aucune expérience pratique réelle tangible, vous ne serez probablement pas embauché pour faire quelque chose que vous ne connaissez pas du tout.
Objective-C est un homme de paille intéressant ici. Cela nécessite que vous connaissiez très bien C, cela vous oblige à bien connaître l'analyse et la conception orientées objet, dans la plupart des cas, vous devez connaître C ++ dans une mesure non triviale car il existe des bibliothèques C ++ avec lesquelles vous voudrez probablement vous connecter.
Cela vous oblige à comprendre la gestion manuelle de la mémoire ainsi que le fonctionnement de la gestion automatique de la mémoire / nettoyage de la mémoire et quand utiliser chaque technique dans le même programme.
Ce n'est pas seulement Objective-C que vous devez également connaître Cocoa et POSIX, car en face Objective-C est à toutes fins pratiques inutile en dehors des environnements Apple et vous devez également connaître Cocoa.
Et lorsque Cocoa vous échoue, vous devez être en mesure de savoir quelles API POSIX utiliser lorsque vous ne pouvez pas faire ce que vous voulez avec les wrappers Cocoa.
Cela implique également que vous devez également connaître Unix dans une certaine mesure non triviale.
la source
Dépend de la langue / de l'individu.
Si je suis un endroit C # et que quelqu'un avec une expérience JAVA / J2EE s'applique, je vais essayer. La syntaxe entre C # et JAVA n'est pas si différente. Le codage est le codage et je pense qu'une fois qu'ils s'habitueront à certaines des différences, ils iront bien.
Il en va de même pour JAVA -> C #.
Maintenant, si vous étiez une personne C # et que vous postulez pour un emploi C ++, je veux voir de l'expérience. Il y a trop de différences.
Alors oui, cela dépend de la situation
la source
Bien que je pense que l'OP est complètement sur la façon dont un programmeur expérimenté avec de nombreux paradigmes peut facilement en ajouter un de plus, tout se résume à l'aversion de l'employeur au risque. Un recruteur potentiel qui ne connaît pas ses outils est un joker; ils peuvent être vraiment géniaux, mais ils peuvent aussi être un flop, et il sera plus difficile que d'habitude pour l'intervieweur de faire la différence s'il ne peut pas poser de questions approfondies sur les technologies qu'il utilise.
Je ne dis certainement pas que c'est la bonne façon de voir les choses, mais c'est ce que font certains employeurs. Les intelligents exploitent cela et récupèrent les programmeurs impressionnants avec 30 ans d'expérience en C ++, tandis que les stupides les refusent car ils n'ont pas les 15 années d'expérience requises de Ruby on Rails. Les programmeurs peuvent également exploiter cela en évitant de travailler avec des employeurs si mal informés. Après tout, qui veut travailler pour un lieu qui prend systématiquement de mauvaises décisions d'embauche?
la source
Il s'agit en partie de lancer des mots à la mode dans une description de poste, car ils ne comprennent pas vraiment le rôle. C'est pourquoi vous rencontrerez occasionnellement la situation comique d'une description de travail spécifiant 3 ans d'expérience dans une technologie qui n'existait que depuis 6 mois.
Quant à savoir si cela devrait ou non faire une différence, cela dépend vraiment du rôle et des individus impliqués. Presque tous les gestionnaires qui embauchent (certainement tous les plus intelligents) demanderont aux RH de leur transmettre des candidats qui ont beaucoup de force dans la plupart des domaines, même s'ils manquent d'un ou deux points dans la description de poste. Cependant, cela ne s'applique généralement pas à un diplômé récent; Je parle de personnes ayant une grande expérience de travail en interaction avec des clients ou des équipes dirigeantes ou quelque chose du genre.
la source
Avez-vous déjà regardé tous les éléments qui composent votre pile de développement? Par exemple, quel IDE, cadre de test, intégration continue, contrôle de version, méthodologie de développement et paradigmes de code qui constituent un environnement que quelqu'un utilise pour créer un logiciel. Cela peut être un certain nombre d'outils que certaines entreprises peuvent vouloir que quelqu'un sache déjà plutôt que d'avoir à reprendre à zéro. L'argument d'ironcode sur le marché d'un employeur est un autre facteur ici car il peut y avoir des cas où il y a beaucoup de concurrence pour un poste et que les entreprises peuvent viser le ciel et éventuellement l'obtenir.
Juste pour donner un exemple plus concret de cet environnement, voici ce que j'ai là où je travaille: Visual Studio 2008 faisant ASP.Net en utilisant principalement C #, nUnit, Cruise Control.Net, Subversion, Agile / Scrum, avec un mélange de procédures, OO et fonctionnel selon l'endroit où l'on regarde. Si je voulais passer à Java, cela peut signifier m'habituer à de nouveaux outils pour un grand nombre de ces fonctions, ce qui n'est peut-être pas ce qu'un employeur veut absorber comme un coût pour m'engager dans ce rôle. Il peut également y avoir des points délicats que ceux qui ont de l'expérience dans cette version peuvent mieux connaître que les autres et éviter certains pièges qui pourraient autrement inciter quelqu'un à se dire: «Pourquoi l'ont-ils construit de cette façon?
la source
Non, regarde. Ces exigences ne sont pas réunies par les informaticiens. Ils sont rassemblés par les RH. Et la façon dont les ressources humaines obtiennent les exigences est en criant des questions aux informaticiens alors qu'ils chancelent dans les deux sens vers la machine à café.
Alors ils disent "De quoi avez-vous besoin?" et le shmuck aléatoire qui finit par répondre dit "Un programmeur. A besoin de quelques années d'expérience. Comme, je ne sais pas, 4? Et ce serait bien s'il connaissait .Net." Une réponse raisonnable.
Mais cela se traduit par "4 ans d'expérience en .Net 4" et c'est .Net 4 parce que, lorsque vous Google .Net, le premier lien vous mènera à une page parlant de .Net 4.
Il y a aussi la possibilité, et je l'ai rencontré à plusieurs reprises, qu'ils ont une exigence linguistique spécifique parce qu'ils veulent aller dans cette direction, et ils pensent que cela ira mieux s'ils ont une personne expérimentée au sein du personnel.
la source