Ich war vor kurzem auf einer "Jobmesse" und war überrascht zu sehen, wie viel Nachdruck auf die Programmiersprachen gelegt wird, mit denen die Kandidaten vertraut sind.
Aus meiner (zugegebenermaßen begrenzten) Erfahrung heraus ist es für jemanden, der bereits Erfahrung mit anderen Sprachen hat, eine ziemlich einfache Angelegenheit, eine Programmiersprache zu erlernen, obwohl es Jahre dauern kann, sie wirklich zu beherrschen der anfängliche Hochlauf.
Ich denke, ein Arbeitgeber würde sich mehr darum kümmern, mit wie vielen Sprachen / Paradigmen ich vertraut bin oder was meine Erfahrung mit Algorithmen / Software-Design ist, im Gegensatz zu der Technologie, mit der ich mich gerade auskenne.
Angenommen, ich kenne mich bereits mit Java, C ++, Smalltalk und Prolog aus. Sollte ein Arbeitsplatz, der sich auf Objective-C stützt, mich wirklich als unqualifiziert betrachten, weil mir Erfahrung in dieser Sprache fehlt? Ist dies ein Fehler in der Rekrutierungsmethodik und wenn ja, was kann ich tun, um diesen Arbeitsplatz davon zu überzeugen, dass meine mangelnde Erfahrung mit Objective-C keine Rolle spielen sollte? Ich frage hypothetisch, nicht speziell nach den genannten Programmiersprachen.
Alternativ ist meine Erfahrung begrenzt und ich gebe zu, dass mir etwas fehlt. Ist die Erfahrung mit einer Programmiersprache wichtiger als ich denke? Macht es einen Unterschied, ob es sich um eine Junior- oder Senior-Position handelt? Sollte es einen Unterschied machen?
Antworten:
Im Gegensatz zu den Pressemitteilungen handelt es sich derzeit um einen Arbeitgebermarkt .
Das heißt, sie können einfach wählerisch sein, was ihre Anforderungen sind. Dies bedeutet, dass sie .NET 4.0-Erfahrung und nicht nur 3.5-Erfahrung verlangen können. Dies bedeutet, dass sie Erfahrung mit Django und nicht nur mit Pylonen usw. verlangen können.
Sicher, Sie könnten in ein paar Wochen alles lernen, was Sie über Ruby wissen müssen, und Rails könnte ein paar Monate brauchen (nur Vermutungen), um sich mit ...
Der Arbeitgeber kann jedoch Lebensläufe von Personen durchsehen, die bereits mit Ruby & Rails vertraut sind.
TL; DR: Econ 101 ... Glauben Sie nicht dem Hype um den Mangel an Programmierern .
quelle
Das Hauptproblem ist, dass niemand wirklich weiß, wie man gute Programmierer anstellt. Das zweite Problem ist, dass Programmierjobs viele Bewerber anziehen.
Angesichts einer großen Anzahl von Lebensläufen wäre es sehr schön, sie durchzukämmen und die guten Programmierer herauszusuchen, aber niemand weiß, wie man das macht. Die Art und Weise, wie die meisten Unternehmen arbeiten, ist die anfängliche Sortierung in der Regel von HR. Die HR-Person kennt sich mit Smalltalk oder C ++ nur wie in der Anforderungsliste aufgeführt aus, im Gegensatz zu einer Software-Person, die vielleicht "C ++ UND Smalltalk - dieser Typ hat keine Probleme mit Objective-C".
Selbst wenn der Stapel an den Einstellungsmanager geht, ist es sehr wahrscheinlich viel zu dick, um alle zu befragen, so dass der Einstellungsmanager aus irgendeinem Grund die Bewerbungsunterlagen ablegen muss. Wenn es sich um einen C ++ - Job handelt und es mehr Personen mit mehr als 5 Jahren C ++ gibt, als es für den Manager praktisch ist, ein Vorstellungsgespräch zu führen, wirft der Manager möglicherweise alle Lebensläufe, die kein C ++ enthalten. Es ist nicht der Weg, die absolut besten Leute zu bekommen, aber niemand weiß, wie man die absolut besten Leute anstellt, und wenn Sie in der Entscheidungsfindung durch das, was auf dem Lebenslauf steht, eingeschränkt sind, sind die Leute mit C ++ Erfahrung zumindest etwas besser Wetten.
quelle
Lassen Sie es uns umdrehen - wenn Sie Ziel C kennen würden, wären Sie ein C ++ - Programmierer? Ich würde sagen, nein, Sie würden nicht, die Sprachen sind zu unterschiedlich. Selbst für einfache Sprachen wie C würde ich gerne 6 Monate Erfahrung haben, bevor ich jemanden für C ++ anheuere.
Vor einigen Jahren habe ich mir PHP beigebracht. Ich würde sagen, es dauerte einige Monate, bis ich mich darin zurecht fand, mich in der Bibliothek zurechtfand, gemeinsame Redewendungen verstand usw. Und ich kannte bereits viele Sprachen.
quelle
Es hängt von verschiedenen Aspekten des Kontexts ab. Nicht nur die Ebene der Rolle, sondern auch der Status des Projekts und des Unternehmens.
Auf der einfachsten Ebene ist jede imperative Sprache für geschweifte Klammern so ziemlich die gleiche wie jede andere.
Wenn Sie imperativ codieren können, können Sie imperativ codieren. Sei es Java, C #, C, C ++ oder sogar Javascript. Wenn Sie ein anständiges Nachschlagewerk (und möglicherweise ein bisschen Boilerplate) haben, sollten Sie in der Lage sein, an einem Nachmittag ein kleines Programm in einem der anderen auszuschalten.
Unabhängig von Ihrer Vorgeschichte kennen Sie sich mit Schleifenverzweigungen und -funktionen aus, und die Syntax ist für alle von ihnen ziemlich gleich. Wenn Ihr Verlauf OO ist, kennen Sie auch Objekte, Klassen und Schnittstellen.
Ich habe jedoch zu viele Nur-Imperativ-Programmierer gesehen, die Schwierigkeiten hatten, einfache Programme in deklarativen oder funktionalen Sprachen zu schreiben. Wenn ich einen Erlang-Shop betreiben würde, würde ich jemanden mit Erlang, oder zumindest Prolog, vorziehen, der Erfahrung mit C ++ hat.
Wie es von der Ebene der Rolle abhängt:
Rekrutierung für eine Nachwuchsrolle:
Wenn ich einen Programmierer für einen C ++ - Job auswähle, möchte ich sichergehen, dass der Kandidat in der Lage ist, bestimmte Fallstricke zu vermeiden, z. B. die Notwendigkeit, auf den Speicher oder die Länge der Arrays zu achten, nur damit sie sich anziehen nicht selbst (und mir) in den Fuß schießen. Wenn sie noch nie C oder C ++ gemacht hätten, müsste ich das im Interview herausfinden.
Und für eine leitende Rolle:
Einer der Schlüssel zum effizienten Programmieren ist das Wissen, was Sie nicht selbst schreiben sollten. Der Schlüssel dazu sind die Standardbibliotheken (und De-facto-Standardbibliotheken). Der Schlüssel dazu ist Erfahrung. Sie können sich nicht einfach eine Woche lang mit "Teach yourself Java" zusammensetzen und sich sofort von einem 10-jährigen C ++ - Programmierer in einen 10-jährigen Java-Programmierer verwandeln.
Wie das abhängt vom Zustand des Projekts / der Firma
Angesichts eines Java-Projekts ist das so ziemlich eine saubere Sache. Ich möchte, dass ein neuer leitender Angestellter viel Wissen über das Java-Ökosystem hat und in der Lage ist, über die verschiedenen verfügbaren Technologien zu beraten.
Angesichts eines ausgereiften Java-Projekts würde ich gerne einen erfahrenen C ++ - Entwickler in Betracht ziehen, der über wenig oder keine Java-Erfahrung für eine leitende Java-Rolle verfügt. Die meisten Ökosystementscheidungen sind bereits geklärt, und der neue Mitarbeiter kann Erfahrungen mit den Java-Bibliotheken sammeln, während das Unternehmen die Erfahrung des Programmierers in der OO-Softwareentwicklung nutzt.
quelle
Es kommt auf den Arbeitsplatz an. Wenn sie sehr beschäftigt sind, haben sie möglicherweise keine Zeit zu warten, bis Sie einen Punkt erreicht haben, an dem Sie in Objective-C arbeiten können - sie möchten möglicherweise jemanden, der den Boden unter den Füßen trifft.
Einige Arbeitsplätze sind möglicherweise bereit, ein Risiko für Sie einzugehen, wenn sie feststellen, dass Sie mit anderen Sprachen vertraut sind, über solide Grundlagen und Kenntnisse des Geschäftsbereichs verfügen. Das hängt wirklich davon ab, wie offen sie sind und wie gut Sie den Personalvermittler davon überzeugen können, dieses Risiko einzugehen.
quelle
Mieten ist schwer; gute Leute einzustellen ist noch schwieriger. Ich habe dort eingestellt, wo ich mit einem Stapel von über 500 Bewerbungen konfrontiert war. Natürlich haben wir die Leute herausgefiltert, die am wenigsten Erfahrung damit haben, was wir wollten, um den Stapel auf eine vernünftige Größe zu bringen. Ist das fair für den exzellenten Kandidaten, der diese Sprache nicht kennt, wahrscheinlich auch nicht. Aber wenn ich 100 Leute finde, die die Qualifikationen haben, die ich suche, werde ich wirklich nicht viel Zeit mit den 400 verbringen, die das nicht getan haben - egal wie gut sie sind.
Jetzt bei der Einstellung habe ich vielleicht eine lange Liste von Anforderungen, aber normalerweise sind nur ein oder zwei Deal Breaker. Und wenn Sie niemanden mit der anfänglichen Liste der Qualifikationen finden, die Sie interviewen möchten (oder später, wenn alle das Interview, das ich gesehen habe, nicht bestehen), dann gehen sie normalerweise zurück und schauen sich die Leute an, denen einige fehlen der weniger kritischen Qualifikationen oder Menschen, die etwas Ähnliches, aber nicht dasselbe haben. In diesen Fällen suchen Sie häufig nach Informationen über die Erfahrung der Person, die sie besser für Ihren Job machen als jemanden mit allen technischen Qualifikationen. Zum Beispiel würde ich eine Datenanalystin mit Erfahrung in einer anderen Unternehmensdatenbank in Betracht ziehen, wenn sie Erfahrung in meinem Geschäftsbereich hätte (tatsächlich würde diese Person wahrscheinlich meinen ersten Schnitt machen, wenn ich alle Lebensläufe sehen würde). Gleiches gilt für C # und Java. Wenn die Person eine Arbeit mit einer ähnlichen Komplexität und insbesondere in einem ähnlichen Geschäftsbereich ausführt, ist sie möglicherweise ein sehr guter Kandidat, auch wenn sie die andere Sprache beherrscht.
Wenn ich jedoch kein recht formelles Schulungsprogramm für Einsteiger hätte, würde ich mit geringerer Wahrscheinlichkeit von Leuten eingestellt werden, die nicht meine Mindestkenntnisse in Sprachen erfüllen. Und fast nie von einer Gruppe, die nichts von dem hatte, wonach ich suchte. Personen ohne Erfahrung müssen weniger Erfahrung mitbringen, um zu beweisen, dass sie in jeder Sprache professionell arbeiten können. Sie haben genug zu lernen bei ihrem ersten professionellen Auftritt, ohne die wichtigste Sprache zu verstehen, die wir benutzen. Und wenn Sie sie einstellen, besteht ein höheres Risiko, dass es Monate dauern kann, bis Sie nützliche Arbeit von ihnen erhalten.
Ein weiterer Punkt kommt ins Spiel, wenn der anstellende Beamte das Team auf eine neue Technologie umstellt. Wenn niemand im Team wirklich ein Experte für die Technologie ist und ich auch jemanden neu einstellen muss, werde ich versuchen, jemanden mit so viel Fachwissen einzustellen, wie ich in dieser Technologie finden kann, weil er eine Idee hat, wo die "Landminen" sind "zu vermeiden sind.
Bewerben Sie sich schließlich für die Stellen, an denen Sie interessiert sind, auch wenn Sie nicht alle angegebenen Anforderungen erfüllen (aber versuchen Sie, einige zu erfüllen, und stellen Sie Beamte ein, die ihre Zeit nicht mit Leuten verschwenden, die niemals eingestellt werden würden). Sie wissen nie, welchen Wettbewerb Sie für einen Job haben werden oder was die Leute am meisten beeindrucken wird, die die Lebensläufe überprüfen oder die Interviews führen. Was Sie zu einem Vorstellungsgespräch bei Firma A veranlassen könnte, könnte genau das sein, was Sie davon abhält, ein Vorstellungsgespräch bei Firma B zu erhalten, selbst wenn ähnliche Anforderungen auf Papier vorliegen. Darüber hinaus haben sie möglicherweise einen Job, der besser zu Ihren Qualifikationen passt, für die sie noch keine Werbung gemacht haben. Aber Sie werden nie für den Job in Betracht gezogen, wenn sie nichts über Sie wissen.
quelle
Sollte es Nein . Hat es? Ja leider Dies ist das "lila Eichhörnchen" -Syndrom: Das Unternehmen möchte seinen Kuchen auch essen und einen Kandidaten finden, der alles unter der Sonne kann, was er braucht oder braucht. Oft, aber nicht immer, weil sie entweder A) keine Ahnung haben, was Entwicklung wirklich bedeutet, und einfach annehmen, dass jemand, der alle Kriterien erfüllt, die Arbeit erledigen kann, B) wählerisch sind, weil er damit durchkommt, oder C) Sie planen, eine H-1B / Green Card / Werbung von innen einzureichen, müssen aber dafür sorgen, dass es so aussieht, als würden sie einen echten Job bewerben.
quelle
Wenn Sie mehr als 20 Jahre Erfahrung in 3 oder 4 Sprachen mit ähnlichen Funktionen wie Objective-C haben, würde ich Sie wahrscheinlich mit Objective-C beauftragen und erwarten, dass Sie in 6 bis 8 Wochen produktiv sind. (Dies basiert auf meinen persönlichen Erfahrungen mit dem Lernen von Objective-C vor einigen Jahren).
Wenn Sie gleich nach der Schule grün sind und in keiner Hinsicht konkrete praktische Erfahrungen gesammelt haben, werden Sie wahrscheinlich nicht dazu verpflichtet, etwas zu tun, mit dem Sie nicht vertraut sind.
Objective-C ist hier ein interessanter Strohmann. Es setzt voraus, dass Sie C sehr gut kennen, dass Sie sich mit objektorientierter Analyse und objektorientiertem Design sehr gut auskennen. In den meisten Fällen müssen Sie C ++ in nicht trivialem Umfang kennen, da es C ++ - Bibliotheken gibt, mit denen Sie wahrscheinlich eine Schnittstelle herstellen möchten.
Sie müssen die manuelle Speicherverwaltung sowie die Funktionsweise der automatischen Speicherverwaltung / Speicherbereinigung und die Verwendung der einzelnen Techniken im selben Programm verstehen.
Sie müssen nicht nur Objective-C kennen, sondern auch Cocoa und POSIX, da Objective-C für alle praktischen Zwecke außerhalb der Apple-Umgebungen nutzlos ist und Sie dann auch Cocoa kennen müssen.
Und wenn Cocoa versagt, müssen Sie wissen, welche POSIX-APIs verwendet werden sollen, wenn Sie mit den Cocoa-Wrappern nicht das tun können, was Sie wollen.
Dies impliziert auch, dass Sie Unix auch in einem nicht trivialen Ausmaß kennen sollten.
quelle
Kommt auf die Sprache / Person an.
Wenn ich ein C # -Platz bin und sich jemand mit JAVA / J2EE-Erfahrung bewirbt, gebe ich eine Chance. Die Syntax zwischen C # und JAVA ist nicht so unterschiedlich. Codierung ist Codierung und ich denke, sobald sie sich an einige der Unterschiede gewöhnt haben, werden sie in Ordnung sein.
Gleiches gilt für JAVA -> C #.
Wenn Sie eine C # -Person wären und sich für einen C ++ - Job bewerben, möchte ich Erfahrung sehen. Es gibt zu viele Unterschiede.
Also ja, es kommt auf die Situation an
quelle
Während ich denke, dass das OP völlig unschlüssig darüber ist, wie ein Programmierer, der mit vielen Paradigmen vertraut ist, leicht einen weiteren hinzufügen kann, hängt alles von der Risikoaversion des Arbeitgebers ab. Ein potenzieller Mitarbeiter, der mit seinen Werkzeugen nicht vertraut ist, ist ein Joker. Sie könnten wirklich großartig sein, aber sie könnten auch ein Flop sein, und es wird schwieriger als normal für den Interviewer, den Unterschied zu erkennen, wenn er keine detaillierten Fragen zu den von ihm verwendeten Technologien stellen kann.
Ich sage definitiv nicht, dass dies die richtige Sichtweise ist, aber einige Arbeitgeber tun dies auch. Die Schlauen nutzen dies und schöpfen die großartigen Programmierer mit 30 Jahren Erfahrung in C ++ aus, während die Dummen sie ablehnen, weil ihnen die erforderlichen 15 Jahre Ruby on Rails-Erfahrung fehlen. Programmierer können dies jedoch auch ausnutzen, indem sie eine Beschäftigung bei Arbeitgebern vermeiden, die so schlecht informiert sind. Wer will schon für einen Ort arbeiten, der systematisch schlechte Einstellungsentscheidungen trifft?
quelle
Zum Teil geht es darum, dass die Personalabteilung Schlagworte in eine Stellenbeschreibung einfließen lässt, da sie die Rolle nicht wirklich versteht. Es ist der Grund, warum Sie gelegentlich auf die komische Situation einer Stellenbeschreibung stoßen, die 3 Jahre Erfahrung in einer Technologie festlegt, die es nur für 6 Monate gibt.
Ob es einen Unterschied machen soll oder nicht , hängt wirklich von der Rolle und den beteiligten Personen ab. Nahezu alle Manager, die Einstellungen vornehmen (mit Sicherheit alle klugen), weisen die Personalabteilung an, Kandidaten zu übergeben, die in den meisten Bereichen über eine große Stärke verfügen, auch wenn ihnen in der Stellenbeschreibung ein oder zwei Stichpunkte fehlen. Dies gilt jedoch im Allgemeinen nicht für Absolventen; Ich spreche von Leuten mit viel Erfahrung im Umgang mit Kunden oder führenden Teams oder so.
quelle
Haben Sie sich jemals alle Elemente angesehen, die Ihren Entwicklungsstapel ausmachen? Zum Beispiel welche IDE, welches Testframework, welche kontinuierliche Integration, welche Versionskontrolle, welche Entwicklungsmethode und welche Codeparadigmen bilden eine Umgebung, in der jemand Software erstellt. Dies kann eine Reihe von Tools sein, die einige Unternehmen möglicherweise bereits kennenlernen möchten, anstatt sie von Grund auf neu erstellen zu müssen. Der Standpunkt von ironcode zum Arbeitgebermarkt ist hier ein weiterer Faktor, da es in manchen Fällen einen starken Wettbewerb um eine Position geben kann, sodass Unternehmen auf den Himmel zielen und ihn möglicherweise erhalten können.
Um ein konkreteres Beispiel für diese Umgebung zu geben: Visual Studio 2008 verwendet ASP.Net hauptsächlich in C #, nUnit, Cruise Control.Net, Subversion, Agile / Scrum mit einer Mischung aus prozeduralem OO und funktional, je nachdem, wohin man schaut. Wenn ich auf Java umsteigen wollte, könnte dies bedeuten, dass ich mich für viele dieser Funktionen an neue Tools gewöhnt habe. Dies ist möglicherweise nicht das, was ein Arbeitgeber als Kosten für die Einstellung von mir in dieser Rolle in Kauf nehmen möchte. Es kann auch einige knifflige Punkte geben, die diejenigen mit Erfahrung in dieser Version besser kennen als andere, und einige Fallstricke vermeiden, die andere dazu bringen könnten: "Warum haben sie es so gebaut?"
quelle
Nein, schau. Diese Anforderungen werden von den IT-Mitarbeitern nicht zusammengestellt. Sie werden von den HR-Leuten zusammengestellt. Und die Mitarbeiter der Personalabteilung erhalten die Anforderungen, indem sie den IT-Mitarbeitern beim Hin- und Herwechseln zur Kaffeemaschine Fragen stellen.
Sie sagen also: "Was brauchst du?" und der zufällige Mistkerl, der am Ende antwortet, sagt: "Ein Programmierer. Benötigt ein paar Jahre Erfahrung. Ich weiß nicht, 4? Und es wäre gut, wenn er .Net kennen würde." Eine vernünftige Antwort.
Aber es wird übersetzt in "4 Jahre Erfahrung in .Net 4" und es ist .Net 4, weil Sie, wenn Sie .Net googeln, über den ersten Link zu einer Seite gelangen, auf der es um .Net 4 geht.
Es gibt auch die Möglichkeit, und ich bin ein paar Mal darauf gestoßen, dass sie eine bestimmte Sprachanforderung haben, weil sie sich in diese Richtung bewegen möchten, und sie denken, dass es reibungsloser wird, wenn sie eine erfahrene Person im Personal haben.
quelle