Warum richten sich die meisten Stellenangebote eher an einen <language here> -Entwickler als an einen Entwickler im Allgemeinen? [geschlossen]

9

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?

Arseni Mourzenko
quelle
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.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.
Yannis
12
Sie haben einige Tags vergessen : <rant>...</rant>. Im Ernst, gibt es hier eine echte Frage?
Cyclops
6
"Die Sprachen, die Sie zuvor verwendet haben, sind mir egal. Für ein C # -Projekt stelle ich lieber einen professionellen Entwickler ein, der sein Leben damit verbracht hat, Java-, Python- und Ruby on Rails-Code zu schreiben, als einen Anfänger, der nur C # kennt und weiß es schlecht. " - Nimm den Strohmann! Dies ist eine falsche Zweiteilung. Ihr Rant ist für Anfänger korrekt, aber NICHT für Positionen, die fundierte Kenntnisse einer bestimmten Plattform erfordern.
Jim in Texas
1
Jemand, der Erfahrung in einer Sprache hat, wird die Arbeit viel schneller und sauberer erledigen, wenn man anders denkt, ist das nur eine Täuschung.
Thomas Bonini
Wenn ich die Person bin, die anstellt, werde ich derjenige mit einer wirklich langen Liste von "Muss die Technobabble-Begriffe X, Y und Z verwendet haben". Und wenn ich diese Person finde, kann ich sie einstellen. Wenn ich die Person bin, die nach einem Job sucht, kann ich es ihnen übel nehmen, mich nicht anzusehen, weil ich nur Unmengen von Gehirnen habe und nicht die genaue Erfahrung, die sie wollen, aber wenn ich genau das hätte, was sie wollen, würde ich erwarten an Ort und Stelle eingestellt zu werden. Am Ende ist es ihr Ruf, und so sollte es auch sein.
Warren P

Antworten:

16

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.

DeadMG
quelle
3
Genau. Nicht-Entwickler und das Management sehen Sie möglicherweise schief an, wenn Sie sagen, dass Sie jemanden mit ähnlichen Fähigkeiten suchen, aber zunächst einiges lernen müssen (z. B. spezifische Syntax, keine Konzepte), es sei denn, sie sind damit einverstanden.
Michael Durrant
Ich dachte, sie würden HR-Affen genannt ... Ich stimme vollkommen zu, aber es ist eine gute Idee, einen Guru im Team zu haben.
Lukasz Madon
3
Das Einfügen von "schreibt guten Code" in die Anzeige ist völliger Unsinn. Jeder denkt, er schreibt guten Code. Und diejenigen, die am meisten wegen ihrer überlegenen Fähigkeiten zum Schreiben von Code verurteilt werden, sind normalerweise diejenigen, die den schlechtesten Code schreiben.
Nikie
1
@ Nikie: Es ist eine Vereinfachung. Sie würden natürlich nicht genau das in die Anzeige setzen.
DeadMG
3
Ich denke nicht, dass dies der Hauptgrund ist, da kleine Startups ohne Personalabteilung genau das Gleiche tun.
J. Maes
22

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.

Ian
quelle
Genau. Es ist natürlich möglich, aber schwierig. Die Syntax der C-Familie lässt sich leicht übertragen, aber ein wirkliches Verständnis der gesamten Plattform und des Tool-Sets erfordert viel Zeit. Mein Rat an jüngere Entwickler / Programmierer / Analysten / Programmierer ist, in Ihrer Freizeit auf neue Technologien zuzugreifen, während jeder noch Anfänger ist. Die Leute, die vor zwei oder drei Jahren in die HTML5-, iOS- und Android-Entwicklung eingestiegen sind, sind jetzt in guter Verfassung. Natürlich kann man falsch raten (frag mich nach Flex), aber es ist nicht das Ende der Welt.
Jim in Texas
Dies liegt hauptsächlich daran, dass Java -> C # C -> C ++ ähnelt - sie können technisch gesehen auf denselben Grundlagen basieren, aber C # enthält weitaus mehr Funktionen, die Sie tatsächlich verwenden möchten. Die inverse Transformation wäre von C # nach Java erheblich einfacher.
DeadMG
11

Ich kann mir einige Gründe vorstellen:

  1. Mitarbeiter gegen Berater - Wenn ich einen Berater anheuere, möchte ich, dass er / sie bereits auf dem von uns verwendeten Technologie-Stack auf dem neuesten Stand ist. Von Beratern wird erwartet, dass sie sehr schnell effizient sind, da sie nicht so lange Zeit haben, um das Lernen zu amortisieren.
  2. Angebot / Nachfrage - Wie Doc sagte, wenn ich den erfahrensten Kandidaten für den Job auswählen möchte. Und der Technologie-Stack spielt dort für etablierte Technologien eine Rolle. Wenn ich nach einer Person suche, die sich in Go entwickeln kann (eine Sprache auswählen, die nur wenige kennen), hat fast niemand Erfahrung damit und ich bin zurück zu den Fähigkeiten als Entwickler im Allgemeinen.
Jeanne Boyarsky
quelle
4

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.

Charles E. Grant
quelle
1
+1: In einem TEAM können einige oder sogar die meisten Entwickler neu in der Sprache sein, aber es hilft sehr, Sprachexperten zu haben, die alle anderen unterrichten können.
Baum
3

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.

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?

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.

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).

Doc Brown
quelle
2

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

J. Maes
quelle
2

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.

Nikie
quelle
1

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".

Michael Durrant
quelle