In einer idealen Welt:
In einem ausgezeichneten Artikel Nennen Sie sich nicht Programmierer und andere Karriereberatung erklärt Patrick McKenzie unter anderem, dass Sprache keine Rolle spielt:
Ein Entwickler ist eine Person, die Probleme im Allgemeinen löst. Ein Entwickler ist keine Person, die Code in einer bestimmten Sprache schreibt.
Unternehmen interessieren sich nicht für die Sprachen, die Sie kennen. Wenn sie einen Entwickler für ein Projekt einstellen müssen, das in einer bestimmten Sprache geschrieben ist, und einen Kandidaten haben, der sehr erfahren ist, aber nie eine Codezeile in dieser Sprache geschrieben hat, wird er trotzdem eingestellt.
Nach meiner Erfahrung sowohl als Entwickler als auch als Person, die andere Entwickler einstellen musste, ist die Beobachtung sehr ähnlich:
Die N-jährige Erfahrung in Java oder N-jährige Erfahrung in C # spielt keine Rolle. Was zählt ist, dass der Kandidat weiß, wie man Probleme löst, den Unterschied zwischen Spaghetti-Code und sauberem Code mit durchdachter Architektur kennt usw.
Die Sprachen, die Sie zuvor verwendet haben, sind mir egal. Für ein C # -Projekt werde ich lieber einen professionellen Entwickler einstellen, der sein Leben damit verbracht hat, Java-, Python- und Ruby on Rails-Code zu schreiben, als einen Anfänger, der nur C # kennt und es schlecht kennt.
Das Wissen und die Erfahrung, die Sie mit einer Sprache sammeln, können größtenteils in jeder anderen Sprache wiederverwendet werden.
Ein erfahrener Entwickler, der Ruby on Rails für die Webentwicklung verwendet und den Rest seiner Karriere damit verbracht hat, Java-Desktopanwendungen mit Oracle zu schreiben, passt perfekt zu einem ASP.NET MVC-Projekt mit Microsoft SQL Server. Weil diese Person bereits alles weiß, was sie für diesen Job benötigt , abgesehen von einigen spezifischen Dingen und Syntaxunterschieden.
Auf der anderen Seite passt eine Person, die nur einige kleine ASP.NET MVC-Websites erstellt hat, überhaupt nicht, da sie die MVC-Architektur möglicherweise nicht vollständig versteht, möglicherweise weiß, was SQL-Profilerstellung ist, und möglicherweise keine anderen wichtigen Informationen enthält Wissen.
Sagen Sie mir nicht, dass ich ein kleines Problem mit einer PHP-Website, die CodeIgniter verwendet, nicht beheben kann, nur weil ich CodeIgniter noch nie zuvor verwendet habe.
In der Praxis:
In der Praxis sind die Stellenangebote, wenn ich nach freiberuflichen Jobs suche und die Stellenangebote im Allgemeinen sehe, sehr sprachspezifisch.
Einige würden nach einem PHP-Entwickler mit zweijähriger Erfahrung in Magento suchen. Andere suchen nach einer Person mit einer VB.NET-Erfahrung von mindestens drei Jahren. Wenn Sie ihnen einen Lebenslauf senden, in dem erwähnt wird, dass Sie sechs Jahre lang C # -Entwicklung durchgeführt haben, ohne VB.NET zu erwähnen, werden sie sich nicht darum kümmern Antworten. Wenn sie nach einer Person mit Erfahrung mit Firebird fragen, werden sie nicht auf Ihre zehnjährige Erfahrung mit Oracle hören.
Warum gibt es einen solchen Unterschied zwischen der Theorie und dem, was Patrick McKenzie und ich als gesunden Menschenverstand beschreiben, und der realen Welt der Stellenangebote?
quelle
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.
Sie sind zwar in der Lage, das Problem zu beheben, aber wenn die Hauptursache CodeIgniter ist (eine der wenigen Macken des Frameworks oder einer der vielen offenen Fehler), benötigen Sie erheblich mehr Zeit, um das Problem zu beheben.<rant>...</rant>
. Im Ernst, gibt es hier eine echte Frage?Antworten:
Weil viele Unternehmen HR-Drohnen haben, übernehmen sie die Rekrutierung, die keine Ahnung davon haben. Wenn die Personalabteilung sagt: "Welche Qualifikationen benötigt der Kandidat?" Es ist viel einfacher, "Sechs Jahre C #" zu sagen als "Schreibt guten Code". Diese Drohne hat keine Ahnung, wie "Schreibt guten Code" aussieht oder wie ein Lebenslauf danach gefiltert werden kann, ob sie guten Code schreiben kann oder nicht. Sie können jedoch schnell einen Lebenslauf lesen und "Fünf und drei Viertel Jahre C #" sehen und wegwerfen.
quelle
Ich denke, es ist Zeit, diesen Mythos zu Bett zu bringen, den ein Entwickler mit X Jahren Erfahrung in Sprache Y nahtlos in Sprache Y2 übertragen kann. So funktioniert das nicht.
Wenn Sie die Sprache nur als Syntax und allgemeine Muster behandeln, können Sie mit Java beispielsweise einen großen Vorsprung erzielen, wenn Sie zu C # wechseln. Es wird Sie jedoch nicht auf WCF, WPF, Click Once, die verschiedenen Threading-Bibliotheken, Linq, vorbereiten, und es wird Sie sicherlich nicht auf die Dinge vorbereiten, die in der Broschüre als Arbeit bezeichnet werden, in der Praxis jedoch nicht.
Sie sehen, Sie sprechen nicht über eine Sprache, sondern im Allgemeinen über eine Plattform. Und wo die Plattform, .NET ist ein gutes Beispiel, viele Sprachen unterstützt, tendieren die Leute dazu, sich auf eine bevorzugte Wahl zu konzentrieren.
Wenn ich also nach einem C # -Entwickler frage, mache ich Werbung für einen .NET-Plattformentwickler, dessen Erfahrung in C # -Projekten liegt. Dies sind in der Regel .net-Serverprojekte, Winforms / Wpf-Projekte.
quelle
Ich kann mir einige Gründe vorstellen:
quelle
Nicht alle Programmierjobs sind gleich. Mein aktueller Job passt sicherlich in Ihr Modell. Es beinhaltet eine Menge Ad-hoc-Datenanalyse und wir greifen nach Bedarf auf Tools zurück und legen sie ab. Ich wurde zum Teil eingestellt, weil ich nachweislich mit neuen Tools schnell produktiv werden konnte.
Auf der anderen Seite gibt es Arbeitsplätze , wo Sie sind für bestimmte technische Know - how suchen. In den 90er Jahren arbeitete ich für einen kleinen Softwareladen, und wir mussten schnell Fachwissen in C ++ entwickeln. Obwohl in unseren Anzeigen ausdrücklich nach C ++ - Fachwissen gefragt wurde, kannten die meisten Bewerber weniger C ++ als ich. "Aber ich kann C ++ schnell lernen!" sagten sie alle. Nun ja, ich bin sicher, Sie könnten es, aber ich könnte es auch und die anderen Leute, die schon da sind. Wir suchten jemanden, der C ++ bereits wirklich kannte, damit wir eine interne Quelle für Fachwissen haben, wenn der Rest von uns auf dem neuesten Stand ist. Einen anderen Anfänger im Team zu haben, hätte wirklich nicht geholfen.
quelle
Angenommen, Sie suchen einen Kandidaten für einen .NET / C # -Job. Wenn Sie zwei Kandidaten für den Job haben, scheinen beide gleich erfahren zu sein, aber der erste hat seine Erfahrung im Java-Ökosystem gesammelt, der zweite im .NET-Ökosystem - welcher ist Ihr Favorit?
Wer kann sagen, warum Sie keine Antwort bekommen? Vielleicht haben sich genug erfahrene VB.NET-Entwickler für den Job beworben? Vielleicht verwendet die Personalabteilung die Erfahrung der Programmiersprache als Filter, um die Anzahl der Bewerbungen von 100 auf 10 zu reduzieren. Vielleicht haben Sie gerade mit den falschen Unternehmen gesprochen (ich denke, in meinem Unternehmen würden wir im Beispielfall eine Antwort senden Sie oben beschrieben).
quelle
In den meisten projektbasierten Arbeitsergebnissen werden schnell Ergebnisse benötigt und die Mitarbeiter müssen so schnell wie möglich Gewinne erzielen.
Menschen, die in der Lage sind, diese Bedürfnisse zu erfüllen und nicht an eine bestimmte Sprache (n) gebunden sind, sind rar und folglich zu teuer. Diese Leute werden nur von den großen Unternehmen eingestellt, die nach unglaublichen Fähigkeiten fragen.
Menschen, die das Problem lösen können, aber eine bestimmte Sprache nicht schnell lernen können, sind weniger rar. Sie kosten immer noch viel Geld und sie haben zusätzliche Zeitkosten, um die spezifische Sprache zu lernen.
Diese zusätzlichen Zeitkosten werden reduziert, indem Sie nach einem sprachspezifischen Programmierer fragen. Er hat bereits die erforderlichen Fähigkeiten erlernt und kann schnell Ergebnisse liefern.
Kurz gesagt, ein Projekt, das in JAVA durchgeführt werden muss, benötigt weder einen teuren, unglaublichen Softwareentwickler noch einen durchschnittlichen .net-Entwickler, der Zeit benötigt, um die Sprache / das Framework zu lernen. Es braucht sofortige Ergebnisse für den geringsten Geldbetrag, der von dem Mann geliefert wird, der bereits Erfahrung mit JAVA hat und über relativ gute Fähigkeiten zur Problemlösung verfügt.
Wie immer geht es um Geld und darum, den größten Return on Investment zu erzielen
quelle
Ich denke, Sie interpretieren den Standardsatz "<language here> developer" einfach falsch. Unternehmen setzen diesen Satz nicht in die Anzeige ein, um Entwickler abzuschrecken, die Erfahrung in einer anderen Sprache haben. Warum sollten sie fähige Entwickler abschrecken wollen? Aus Sicht des Arbeitgebers gilt: Je mehr Kandidaten, desto besser. Sie können immer keine Leute einladen, an denen sie nicht interessiert sind.
Der eigentliche Sinn des Satzes besteht darin, Ihnen als Leser zu sagen, was das Stellenangebot bedeuten würde. Und das macht sehr viel Sinn, IMHO. Würden Sie sich für eine Stelle bewerben, bei der Sie sich in der Assemblersprache Z80 entwickeln? Oder COBOL? Oder Fortran?
Und wenn das Unternehmen zwei Kandidaten hat, die ansonsten gleich klug erscheinen, gewinnt natürlich derjenige mit Erfahrung in <Sprache hier>. Nicht mehr, nicht weniger. (Es gibt Sonderfälle, in denen Mitarbeiter nur für ein einzelnes Projekt oder für ein bereits verspätetes Projekt eingestellt werden oder für das erste Projekt, das das Unternehmen in <Sprache hier> entwickelt, in dem Sie von Anfang an wirklich Erfahrung in dieser Sprache benötigen. aber ich denke nicht, dass sie die Regel sind.
Übrigens hat meine Firma einmal Anzeigen geschrieben, wie Sie es vorgeschlagen haben (es scheint schließlich sinnvoll zu sein). Die Ergebnisse waren verheerend. Leute, die sich wirklich für ihre Arbeit interessieren, haben die Anzeige einfach übersprungen. Nur die Verzweifelten, die sich für eine offene Position bewerben, haben sich beworben. Wir haben es nie wieder versucht.
quelle
Treten Sie zurück und denken Sie über die Prämisse nach. Sie möchten, dass eine Person .net-Arbeit erledigt. Sie tragen das in Ihre Stellenbeschreibung ein und suchen nach Kandidaten mit dieser Fähigkeit! Dies ist nur gesunder Menschenverstand.
Ich stimme mit Ihren detaillierteren Philosophien darüber überein, warum dies möglicherweise keine gute Idee ist, aber die meisten Leute werden nur einen Kandidaten mit den Fähigkeiten bewerben, benötigen und suchen, die sie jetzt benötigen. Es ist einfach so einfach, also denke ich, dass dies den Titel Ihrer Frage beantwortet, warum.
Wenn sie überhaupt keine Kandidaten finden oder mehrere schlechte durchmachen können, lernen sie möglicherweise ein wenig und sind für die von Ihnen beschriebenen Punkte besser geeignet. Tatsächlich gibt es in dem Bereich, in dem ich mich befinde (Ruby on Rails), derzeit eine Menge Anzeigen mit der Aufschrift "Keine Erfahrung erforderlich, wir schulen Sie" usw., und tatsächlich sind es einige der besten Ruby on Rails-Organisationen sehr offen für Kandidaten "ohne schlechte Gewohnheiten", die sie trainieren können. Einige Organisationen haben also den richtigen Ansatz.
Denken Sie auch daran, dass die meisten Anzeigen von externen oder nicht technischen internen Personalvermittlern stammen, die einfach nicht das Wissen haben, wie Sie beschreiben, "seitwärts zu gehen".
quelle