Ist „Nur die Besten einstellen“ ein wirklich praktischer Rat für die normale Desktop-Anwendungsprogrammierung? [geschlossen]


61

Als Hintergrund verwenden wir Desktop-Engineering-Anwendungen mit einer AutoCAD-ähnlichen Benutzeroberfläche, ähnlich wie etabs .

Eine Sache, die mich wirklich nervt, ist, ob es notwendig ist, die allerbesten Entwickler einzustellen. Für den Anfang haben wir große Schwierigkeiten bei der Rekrutierung; Die meisten Lebensläufe, die wir sehen, sind entweder einfache CRUD-Apps oder SharePoint-Anpassungen, von denen ich glaube, dass sie nicht viel Hardcore-Programmierung beinhalten. Selbst diejenigen, die wir zum Vorstellungsgespräch anrufen, können die meisten Fibonacci-Sequenzen und eine einfache binäre Suche nicht ausführen, und wir sind freundlich genug, Hinweise zu geben und die Probleme explizit zu formulieren, damit die Kandidaten kein Wörterbuch nachschlagen müssen, um sie zu überprüfen Was bedeutet "Fibonacci-Sequenz"?

Das brachte mich zum Nachdenken: Ja, wir brauchen ein gewisses Maß an Programmierkenntnissen, wenn wir rechnerische Geometrie / lineare Programmierkenntnisse ausführen, und wir brauchen ein gewisses Maß an Programmierkenntnissen, wenn wir die Softwarearchitektur entwerfen oder entscheiden, welches Softwaremuster verwendet werden soll, aber darüber hinaus Ein Großteil unseres Codes besteht nur aus Installationscode (glaube ich), der von jemandem ausgeführt werden kann, der mit der Programmierung vertraut ist.

Angesichts der Tatsache, dass wir jetzt wirklich Programmiertalente brauchen und es sehr schwer ist, Superstar-Entwickler einzustellen, möchte ich meinen Standard senken und nur die Mittelmäßigen einstellen, im direkten Widerspruch zu dem, was Joel predigt .

Was denkst du?

Bearbeiten: Sie müssen nicht die gesamte Bibliothek für rechnergestützte Geometrie / lineare Programmierung neu schreiben. Alles, was Sie für meine Anwendung tun müssen, ist, in der Lage zu sein, die vorliegenden Probleme in geeignete rechnergestützte geometrische / lineare Programmierbegriffe umzuwandeln und zu wissen, wann / wie die vorhandenen Bibliotheken zu verwenden sind. Es ist also nicht so schwierig, wie es scheint.


53
Standardantwort: Vielleicht bieten Sie zu niedrige Gehälter an und bessere Entwickler sind nicht daran interessiert, für Sie zu arbeiten? Wenn Sie Probleme mit Leuten haben, die keine binäre Suche ausführen können, dann ist dies kein Problem mit dem Mangel an Superstars. Ein gewöhnlicher Coder sollte dies auch können.
quant_dev

15
Ihre Titel Großschreibung lässt mich es als PANDA lesen :)
cthom06

13
Sie können keine Fibonacci-Sequenz schreiben? Das ist keineswegs schwierig ... diese Leute können eigentlich keine Programmierer sein.
Ben B.

6
Graviton, es kommt alles auf das Gehalt an. Wenn Sie (nur zum Beispiel) einen dreifachen Marktwert für das Gehalt anbieten, haben Sie Leute, die bereit sind, ihren Job zu verlassen, um für Sie zu arbeiten. Ich schlage nicht vor, dass Sie DAS viel anbieten, aber es illustriert den Punkt. Wenn Sie gute Lebensläufe wollen, müssen Sie dafür bezahlen.
Riwalk

7
@ user1525 weil es etwas Triviales ist, sollten Entwickler normalerweise kein Problem damit haben, es zu implementieren (Rekursion oder keine Rekursion)
Darknight

Antworten:


110

Ich schlage vor, Sie hören auf, Joel zu viel zu lesen. Was er in seinem Blog geschrieben hat, widerspricht seinen Antworten auf dieser Seite, so dass ich sein Wort nicht wirklich für viel halten würde.

Was einen Superstar ausmacht und warum es notwendig ist, einen zu haben, eröffnet eine lange und nirgends stattfindende Diskussion. Es ist Elitismus und nicht praktisch.

Was Sie brauchen, ist eine Person, die:

  1. Würde gerne tun, was du tust
  2. Wäre ein leidenschaftlicher begeisterter Programmierer
  3. Hätte das Potenzial zu lernen, was es braucht, um Ihre Arbeit richtig zu machen

Der Rest spielt keine Rolle.

Sie würden nicht glauben, wie viele junge Absolventen da draußen sind, die nichts anderes wollen, als in ein solches CS-starkes Projekt einzutauchen und sich niemals mit der Codierung von CRUD-Anwendungen befassen. Vor einiger Zeit war ich einer von ihnen. Ich habe praktisch davon geträumt, an einem Projekt zur Compiler-Entwicklung teilzunehmen, konnte aber keinen finden. Warum nicht einem von ihnen eine Chance geben?

Ich glaube nicht, dass AutoCAD von Supermännern geschrieben wurde. Die meisten erfolgreichen Projekte wurden von Leuten gemacht, die einfach das Ding machen wollten und das wirklich wollten.


Die meisten Lebensläufe, die wir sehen, sind einfache CRUD-Apps oder SharePoint-Anpassungen

Was ist zu erwarten, wenn die meisten Jobs genau das erfordern? Die Leute haben vielleicht CS an der Uni studiert und waren sogar sehr gut darin, aber man kann nicht erwarten, dass sie sich daran erinnern, wenn sie das in 10 Jahren noch nie in der praktischen Programmierung angewendet haben. Offensichtlich wird niemand jedes Jahr alte CS-Bücher durchlesen, nur um sie auf dem neuesten Stand zu halten, wenn dieses Wissen nirgendwo genutzt wird.


11
Erstaunliche Antwort!

33
Ja gut, aber ich habe mit leidenschaftlichen begeisterten Menschen gearbeitet, die keine Ahnung haben. Sie sind ein Eigengewicht, und Sie möchten sie nicht in Ihrer Organisation haben. Daher ist es sehr gut, einige BASIC-Eignungstests durchzuführen, um die wirklich dummen Schmucks auszusortieren.
quick_now

3
Der letzte Absatz beschreibt mich zu einem Abschlag.
ozz

20
Wir haben viele "Eignungstests" gesehen, die völlig nutzlos waren und sogar eklatante Fehler aufwiesen (und wenn Sie darauf hingewiesen wurden, haben Sie den Test nicht bestanden, wenn das Auffinden und Hinweisen von Fehlern Teil unserer Aufgabe als Entwickler ist ...).
Jwenting

2
@Developer Art, vielleicht war das ein Glück für dich? Wenn Sie sie nicht von der Unrichtigkeit einer Interviewfrage überzeugen konnten, stellen Sie sich vor, welche Probleme Sie bei der Arbeit haben würden.
Mark Ransom

41

Ein Buch, das ich wirklich mag, ist First break all the rules . Es enthält viele Informationen über die Unterschiede zwischen durchschnittlichen Managern und guten Managern. Eine der wichtigsten Erkenntnisse, die gute Manager immer wieder sagten, wurde von einem von ihnen im Satz zusammengefasst. Ich habe nie zu lange gewartet, um die richtige Einstellung zu finden, und ich habe nie schnell genug die falsche Einstellung gefeuert. Ja, es ist frustrierend, lange Zeit für die Einstellung zu brauchen, aber es lohnt sich.

Ein zweiter Punkt, den Sie berücksichtigen sollten, ist, dass es, gemessen am Projektdurchsatz, eine Produktivitätsspitze für Teams von 5 bis 8 Personen gibt. Sie erreichen nicht die gleiche Produktivität, bis Sie ein Team von mehr als 20 Mitarbeitern haben. Seien Sie sehr, sehr vorsichtig, wenn es darum geht, ein Team über die Größe hinaus zu vergrößern, in der kleine Teamdynamiken funktionieren. Und wenn Sie unter dieser Schwelle bleiben, möchten Sie wirklich, dass diese 5-8 Leute gut sind.

Beide Punkte sprechen stark dafür, sich für die richtige Einstellung einzusetzen.


2
+1 für dieses Zitat. Es spiegelt perfekt wider, was ich in den letzten Jahren erkannt habe.
Kris

Das Interessante an der 5-8 Spitze ist, dass man, sobald man 10 Leute hat, einfach spalten kann :) Natürlich muss die Arbeit auch gespalten werden und am besten nicht zufällig ...
Matthieu M.

@ mattieu-m: Viele Leute haben diese Theorie. Wenn die beiden Gruppen tatsächlich stark interagieren müssen, funktioniert dies nicht. Wenn sie wirklich getrennte Bedenken haben, dann funktioniert es gut.
Mittwoch,

26

Jeder behauptet, "nur das Top-1-Perzentil einzustellen". Wäre dies der Fall, wären 100% aller Erwerbstätigen unter den "Top 1 Perzentilen" aller Erwerbstätigen, so dass 99% aller Erwerbstätigen (in einem bestimmten Bereich) arbeitslos wären. Da dies eindeutig nicht der Fall ist und wir alle Menschen erlebt haben, die eindeutig nicht zu dieser Gruppe gehören (warum stellen Sie diese Frage sonst überhaupt ...), wissen wir, dass dies nicht wahr ist.

Tatsächlich wären Organisationen, die nur aus solchen Personen bestehen, höchst instabil. Zu viel Ego, zu viele widersprüchliche Ideen. Entweder würde es auseinanderfallen, wenn jeder sein eigenes Ding macht, in endlosen theoretischen Diskussionen über die relativen Vorzüge von allem versinken oder sich zu einem ständigen Schrei-Match entwickeln, während die Gefühle aufflammen, wenn eine Entscheidung getroffen werden muss.


13
Das Problem ist, nur weil Sie nur die besten 1% der Kandidaten einstellen, die sich für Sie bewerben, heißt das nicht , dass Sie die besten 1% der Entwickler einstellen . 8 ') Was * Superhelden angeht, werden sie häufig als Problem für den Rest des Teams angesehen. Eine Person, die bei 200% arbeitet, aber 5 Personen auf 50% reduziert, ist kein Nettogewinn.
Mark Booth

2
+1: Statistisch gesehen liegen die meisten Menschen innerhalb weniger Prozentpunkte des Mittelwerts. Wer das nicht zu schätzen weiß, lebt in einer Traumwelt. Und Sie haben vollkommen Recht: Menschen, die zu weit vom Durchschnitt entfernt sind, sind störend, unabhängig davon, ob sie über- oder unterdurchschnittlich gut sind.
Satanicpuppy

5
@Satanicpuppy: Statistisch gesehen liegen bei einer Normalverteilung etwa zwei Drittel der Menschen innerhalb einer Standardabweichung vom Mittelwert und etwa 98% innerhalb von zwei Standardabweichungen. Dies sagt nichts darüber aus, wie hoch die Standardabweichung ist oder ob eine beliebige Verteilung normal ist. Die Programmierfähigkeiten unter Programmierern sind definitiv verzerrt und könnten sogar der richtige Schlusspunkt einer Normalverteilung sein.
David Thornley

11
Ein Hauptgrund, warum Programmiertalente unter Programmierern verzerrt sein könnten und / oder das rechte Ende einer Normalverteilung wäre, wenn Programmiertalente bei Menschen normal verteilt wären . Die Unterauswahl von Menschen, die Programmierer werden, ist eine voreingenommene Auswahl dieser Distribution. Das heißt, die Menschen, die durchschnittlich oder schlechter programmieren, werden selten zu Programmierern. Dies könnte dazu führen, dass ein "durchschnittlicher" Programmierer im Verhältnis zur Gesamtbevölkerung ein überdurchschnittliches Talent hat, und es könnte auch bewirken, dass das Verteilungstalent eines Programmierers wie der rechte Schwanz einer Normalverteilung aussieht.
Michael McGowan

2
@david: "Niemand kann so weit unter dem Durchschnitt sein"? Ich wünschte, ich hätte dort gearbeitet, wo du arbeitest.
Satanicpuppy

25

Das erste, was Sie fragen müssen, ist, warum Sie Lebensläufe erhalten, die nicht den von Ihnen gewünschten Standards entsprechen. Ich habe mit vielen guten Leuten gearbeitet, also sind sie da draußen und die Anwendung klingt für mich sehr interessant. Wenn Sie keine Leute finden, die Fibonacci-Sequenzen und Binärsuchen ausführen können (was schwieriger ist, als es scheint; Knuth zufolge dauerte es mehrere Jahre zwischen der ersten Veröffentlichung und der ersten korrekten Veröffentlichung), dann tun Sie etwas, um die Suche voranzutreiben gute weg.

Bitten Sie um mehr Können, als Sie bereit sind, dafür zu bezahlen? Werben Sie an den falschen Stellen? Ist Ihr Unternehmen nach Standort oder Ruf unattraktiv? Dies ist Ihr erstes und grundlegendstes Problem, das Sie dringend lösen müssen. Sie und Ihre Kollegen kennen zweifellos einige gute Leute, die nicht für Sie arbeiten. Zeigen Sie ihnen, was Sie haben, und fragen Sie sie, ob sie versucht wären, und wenn nicht, warum nicht. Möglicherweise sind Sie dem Problem zu nahe, um es ohne fremde Hilfe zu verstehen.

Stellen Sie keine Leute ein, weil sie die Besten sind, die sich beworben haben. Stellen Sie Leute ein, weil sie in der Lage sind, das zu tun, was Sie wollen. Wenn Sie mittelmäßig anstellen, weil das alles ist, was zutrifft, werden Sie langsam gute Leute verlieren, und Sie werden mit Leuten enden, deren Algebra wackelig ist, wenn Sie versuchen, Dinge mit rechnerischer Geometrie zu tun. (Mittelmäßig einzustellen, weil Sie einen Job für ein paar mittelmäßige Programmierer haben, ist eine andere Sache, aber Sie müssen in der Lage sein, hochwertige Leute dort einzustellen, wo Sie sie brauchen.)


7
Weil HR-Abteilungen beim Screening von Software-Kandidaten äußerst inkompetent sind. Anforderungen: 10 Jahre im Kaffeeskript, 40 Jahre in der Programmierung von PHP, Ausbildung: BS / BA
Incognito

1
@ user1525: Es könnte sehr gut zu einer Inkompetenz in der Personalabteilung kommen, aber der wichtige Punkt ist, herauszufinden, warum und wie man dies korrigiert (oder herauszufinden, dass es nicht korrigierbar ist, sodass klar ist, dass es Zeit ist, das Schiff zu springen). Ich würde nicht zu Schlussfolgerungen springen. Ihre Antwort schlägt einen anderen Ansatz vor: Lassen Sie gute Leute Lebensläufe einreichen und sehen, was HR mit ihnen macht.
David Thornley

18

"Die meisten können keine Fibonacci-Sequenz und eine einfache binäre Suche ausführen"

Ihre Kriterien sind sicherlich falsch. In meiner Gruppe sind wir alle Physiker oder Ingenieure. Ich wette, niemand konnte eine binäre Suche durchführen, weil wir keine CS-Kurse besucht haben und im wahren Leben dafür eine Bibliothek verwenden. Ich würde sogar sagen: Wer selbst Binsearch schreibt, kann sich nicht auf wichtige Dinge konzentrieren.

Es ist viel wichtiger, wenn der Kandidat klug ist und in die Gruppe passt. Wenn Sie sein Programmiertalent überprüfen möchten, geben Sie ihm einen Job, den Sie zu Hause erledigen können. Notieren Sie, wie lange es gedauert hat, und besprechen Sie die Ergebnisse, um herauszufinden, ob es sich um echte Arbeit des Bewerbers handelt.


3
Es ist möglicherweise nicht zu erwarten, dass der Bewerber die binäre Suche genau richtig ausführt, aber wenn Sie dem Bewerber einige Hinweise geben können, sollte er oder sie in der Lage sein, näher heranzukommen. IMO, es ist interessanter zu sehen, wie Menschen versuchen, die ihnen gestellten Herausforderungen zu lösen, als eine Enzyklopädie im Kopf zu haben.
dpk

11
Ich bin ausgebildeter Physiker und kann binäre Suche mit verbundenen Augen und einer Hand hinter meinem Rücken durchführen. Tut mir leid, aber nicht zu wissen, wie man eine einfache Binärsuchimplementierung schreibt, ist ... schlecht. Kein anderes Wort, um es zu beschreiben, nur arm.
quant_dev

ja, du hast recht. Eine binäre Suche, zumindest die Grundidee, könnte tatsächlich durchgeführt werden. Das kann ich auch
Michael

... zumindest die Grundidee (obwohl ich Fibonacci nicht machen konnte, ohne vorher nachzuschauen, was es war). Aber ein Test wie dieser bringt die Leute in den Vorteil, die gerade den cs-Kurs besucht haben oder die Fragen einfach aus Versehen vorbereitet haben. Es ist sinnvoller, den Kandidaten ein reales Programmierbeispiel zu geben. Es zeigt, wie sie komplexere Probleme ohne unmittelbaren Druck lösen, und es zeigt den Kandidaten möglicherweise auch, welche Art von Arbeit Sie von ihnen erwarten (wählen Sie ein gutes Beispiel). Viel nützlicher als Lehrbuchfragen IMHO.
Michael

2
Es ist nicht beunruhigend, die Definition der Fibonacci-Sequenz auf Anhieb zu kennen. ABER es ist beunruhigend, kein Programm schreiben zu können, um es zu berechnen, nachdem es erklärt wurde.
Stephen C. Steel

13

Ich denke, dass das "Einstellen der Besten" zu sehr zum Kult wird.

Die meiste Programmierarbeit ist Routine und nicht kreativ. Auch bei der Arbeit an wirklich kreativen neuen Projekten. Das meiste davon ist bescheiden und basiert oft auf Mustern. Dies gilt insbesondere für die Benutzeroberfläche.

Die meisten modernen Systeme erfordern auch so viele Leute, dass sie von Natur aus nicht die Besten sein können. Die meisten Menschen sind durchschnittlich, auch wenn sie es nicht sind, sie müssen immer noch viele "durchschnittliche" Aufgaben erledigen.

Dennoch ist es nicht unvernünftig, grundlegende Kompetenzen und vernünftige Mindestanforderungen zu fordern, und Sie sollten keine Kompromisse eingehen.

Denken Sie an Routineoperationen: Abhängig von Ihrer Risikobereitschaft würden Sie wahrscheinlich lieber einen durchschnittlichen Arzt beauftragen, diese durchzuführen, als 10 Jahre darauf zu warten, dass der Dekan der medizinischen Fakultät Zeit hat, dies zu tun. Das bedeutet nicht, dass Sie die Operation ordentlich durchführen lassen sollten.


Nicht zu streiten ... aber der "durchschnittliche" Arzt, der Hunderte oder Tausende solcher Operationen durchgeführt hat, ist dem Dekan der medizinischen Fakultät vorzuziehen, der vielleicht mehr Wissen hat, aber nicht annähernd die Erfahrung
JoelFan

8

"Die Besten einstellen" bedeutet in der Regel "Die Besten einstellen, die derzeit ungefähr dort verfügbar sind, wo wir sind" und bedeutet für verschiedene Unternehmen verschiedene Dinge. Einige wollen Rockstar-Programmierer, andere wollen akribische Software-Ingenieure und der nächste auf der Straße will erfahrene Software-Handwerker. Es gibt kein "Universal Best", denken Sie also daran, und vielleicht deutet Ihr Stellenangebot darauf hin, dass Sie einen Programmierertyp suchen, und das Interview besagt, dass Sie einen anderen Programmierertyp suchen. Plötzlich kriegt man keine Streichhölzer mehr.

Trotzdem arbeite ich nicht gerne mit so lala Programmierern. So-so hat nichts mit Erfahrung zu tun (sie haben vielleicht 20 Jahre lang programmiert und sind immer noch nicht sehr gut darin), aber alles hat mit Begabung und Begeisterung zu tun. Wenn sich der Mittelweg auf eine der beiden auswirkt, liegt ein Problem vor. Es macht auch keinen Sinn, jemanden einzustellen, dessen Beiträge von anderen Teammitgliedern überarbeitet werden müssen, weil sie nicht gut genug codieren. Mehr Penner auf Sitzen sind nicht immer die Antwort, mehr Penner auf Sitzen können leider auch mehr Arbeit für die besseren Mitglieder des Teams bedeuten, da sie versuchen, ihre Arbeit zu erledigen und das Durcheinander zu beseitigen, das der so lala Programmierer geliefert hat .

Einige Leute treten nicht als Rockstars auf, sondern sind solide Programmierer auf mittlerem Niveau. Sie sind gut im Team zu haben und das meine ich nicht mit "mittelmäßigem Programmierer". Letzteres ist jemand, der es kaum vermeidet, jedes Jahr zur Zeit der Leistungsbeurteilung gefeuert zu werden.


1
ugh, selbst der Begriff "Rockstar-Programmierer" bringt mich dazu, kotzen zu wollen.
ozz

6

Als Manager bin ich damit einverstanden, dass "die besten 1%" eingestellt werden, was nicht praktikabel und auch nicht notwendig ist. Mein Rat wäre, das richtige Team zu engagieren, um Ihr Produkt zu erstellen und zu warten (es könnten zwei sehr unterschiedliche Teams sein, da Build-vs.-Maintenance-Anforderungen sehr unterschiedlich sind).

Ich würde Ihnen dringend empfehlen, die Personen in Ihrem Team zu identifizieren, die "Schlüsselpersonen" sind (z. B. Dinge erledigen, gute Einstellungen haben, mit Unsicherheiten / hohen Anforderungen gut arbeiten können usw.), und dann Personen einzustellen, die sie haben in der Vergangenheit gearbeitet (und Respekt, offensichtlich). Dies beseitigt viele Unsicherheiten im Zusammenhang mit dem Interviewprozess und hilft, das Team zu stärken.

Auch "längerfristig" - investieren Sie viel in ein internes Programm. Wenn Ihr Programmierteam aus 20 Mitarbeitern besteht, erhalten Sie 5 Praktikanten pro Jahr und geben ihnen echte Arbeit. Bringen Sie die einen oder zwei, die Sie jedes Jahr mögen, zurück und bringen Sie 5 weitere Zufallsvariablen ein. Dies ist wahrscheinlich der beste Weg, um Ihr Team mit guten Programmierern zu füllen. Sie können dann opportunistisch außerhalb einstellen und die Messlatte für diese Kandidaten höher legen.

Achten Sie, wie bereits erwähnt, auf Ihren Interviewprozess. Lassen Sie die Kandidaten Code schreiben (oder gehen Sie besser die Lösung für ein "1 Stunde dauerndes Mitnehmen" -Problem durch) und lassen Sie sie mit dem Team zu Mittag essen. Lernen Sie ihre technischen und zwischenmenschlichen Fähigkeiten kennen. Und haben Sie keine Angst davor, "Nein" zu sagen, auch wenn Sie für ein großes Projekt, das nächste Woche beginnt, verzweifelt nach 20 weiteren Personen sind.


6

Nach meiner Erfahrung gilt das Paretto-Prinzip auch für die Programmierung: 80% der Arbeit wird von 20% der Entwickler erledigt und umgekehrt. OK, die Zahlen sind möglicherweise übertrieben. In Wirklichkeit haben Sie ungefähr 20% der Angestellten, die 50% der Arbeit erledigen (mit Arbeit meine ich gute Arbeit, nicht nur Codezeilen). Es ist eigentlich eher wie eine Glockenkurve. In einem 10-köpfigen Team hast du also 1 Helden, 2 großartige Jungs, 4 durchschnittliche und 2-3 erbärmliche.

Viele Unternehmen verwenden die Glockenkurve zum Abwägen von Beurteilungen. So ziemlich egal wie intelligent Ihre Kandidaten sind, sie werden in ihre Levels fallen. Sie können kein Team haben, in dem alle auf dem gleichen Niveau sind. Passiert nicht


2
+1 stimme ich zu. Aber ich denke die Frage ist: Brauchen Sie die "erbärmlichen" (z. B. für die Moral des Teams oder was auch immer) oder würde das Team ohne sie so gut abschneiden? Und können Sie sie in einem Vorstellungsgespräch erkennen?
Nikie

10
Definiere erbärmlich. Wenn sie gute Trottel sind, die die langweilige Grunzarbeit verrichten, aber nicht den Sprung des Wunders schaffen können, sind sie es trotzdem. Aber wenn sie nur hoffnungslos sind und nichts tun können, dann sind sie Platzverschwendung.
quick_now

Der einzige Grund für das Behalten der erbärmlichen ist, dass man niemanden mehr dazu bringen kann, sie zu ersetzen. Sie tun, was wir "Eselsarbeit" nennen: kleine oder massive Veränderungen, die nicht viel Nachdenken erfordern.
DPD

1
Ist es möglich, sie im Interview zu finden? Ja, abhängig von den Fähigkeiten des Interviewers. Ich ließ sie ein paar Texbook-Programme und -Probleme ausführen. Wenn sie diese Stufe bestehen, gebe ich ihnen einige komplexere Probleme, um zu beurteilen, ob sie denken können. Erbärmliche mögen in der Syntax gut sein, aber nur, weil sie es auswendig lernen, ohne es wirklich zu verstehen. Sie werden Probleme lösen. Einige werden Ihnen sagen, dass sie nicht alleine denken können und nur in der Sprache Strg + C, Strg + V arbeiten können
DPD

4
Zumindest Esel-Arbeitsdrohnen leisten Arbeit. Es ist, wenn sie 10 Jahre entwickeltes Zeug in Haskell mit ein paar Links zu OCaml in 3 Wochen neu schreiben wollen, und alles andere, was sie anfassen, wird zu cr * p. Dann wollen Sie SIE WIRKLICH NICHT!
quick_now

4

Hier gibt es bereits eine Reihe von Antworten, aber ich denke, es gibt noch einen Punkt, über den diskutiert werden muss: die Auswirkungen, die die Einstellung der mittelständischen Mitarbeiter auf Ihre Softwarequalität hat, und wie es Ihr Leben als Manager erheblich erschwert.

Die Antwort auf die Frage "Müssen die besten Entwickler eingestellt werden?" ist immer ein dickes Ja. In der Realität ist dies natürlich nicht immer möglich. Der gefährliche Fehler, von dem ich glaube, dass Sie ihn machen, wenn Sie sich diese Frage überlegen, lautet: "Unsere Software ist so einfach, dass selbst ein mittelmäßiger Typ das kann." Das ist falsch.

Ihre Software wird fertig sein, zweifeln Sie nicht daran, aber erwarten Sie von einem hervorragenden Team ganz andere Ergebnisse als von einem mittelmäßigen Team. Sie werden mehr Fehler, mehr Leistungsprobleme, mehr Wartbarkeits- und Skalierbarkeitsprobleme usw. haben. Sie müssen Ihre so-lala Jungs durch komplexere Probleme babysitten. Sie müssen die so lala Jungs durch richtige Architekturentscheidungen babysitten.

Wenn Sie dies akzeptieren und bereit sind, dies zu verwalten, ist das in Ordnung. Seien Sie einfach auf den Prozess und die Ergebnisse vorbereitet.


+1. Ja. Die Idee, dass Sie Leute einstellen können, die nicht einmal eine binäre Suche mit Hilfe schreiben können und die alles andere als reines Eigengewicht haben - wahrscheinlich Netto-Negativproduzenten -, ist absolut lächerlich.
Tom Anderson

3

Ich denke, es ist nicht wirklich ein Problem, großartige Entwickler einzustellen. Die eigentliche Herausforderung besteht darin, sie machen wollen für Sie arbeiten.

Müssen die Besten eingestellt werden?
Ich glaube schon Ein großartiger Entwickler ist nicht nur derjenige, der alles pünktlich erledigt. Nicht nur ein solcher Mensch ist viel produktiver als andere. Ein großartiger Entwickler geht ebenfalls mit gutem Beispiel voran und inspiriert einfach andere Teammitglieder. Andere konnten bei der Arbeit mit ihnen sehr weiterkommen.

OK, Sie werden also Ihre Standards senken. Das ist cool, wahrscheinlich werden Sie Ihre Meinung ändern, nachdem Sie eine wirklich miese Person eingestellt haben. Diejenige, die alle Ihre CS-Fragen einwandfrei beantwortet, aber nicht wirklich eine einzige Zeile Produktionscode schreiben kann. Viel Glück damit :)


3

Machen wir einen Schritt zurück.

Was versuchen wir zu tun? Schreiben Sie Software.

Warum glauben wir, wir müssen die Besten einstellen? Weil sich das verdammte Arnold-Kind nicht aus einer nassen Papiertüte heraushacken konnte und jetzt der SQL-Code durcheinander ist und ich mich nicht einloggen kann.

Okay, was ist das Beste ? Ich weiß nicht, er ist wahrscheinlich jemand, der eine Menge Geld will und einen drei Meter langen Lebenslauf mit einem großartigen Portfolio hat und bei Google oder so gearbeitet hat. Er sollte einen Abschluss haben und vielleicht ein paar Buchstaben am Ende seines Namens. Ja, das klingt für mich nach dem Besten, und mit dem Besten meine ich jemanden, der nicht so ein verdammter Arnold ist. Oh, und er sollte wissen, wie man wirklich harten Mist macht, von dem ich in der Schule gehört habe, wie "schreibe eine Blasensorte" oder wie sie es nennen. Ich werde einen der anderen Typen bitten, ein paar knifflige Dinge zu nennen, die sie in der Schule machen mussten, ja.

Klingt so, als würdest du dieses verdammte Arnold-Kind einfach nicht wollen? Würdest du? Ich habe es satt, fehlerhaften Code zu haben, es dauert ewig, bis das erledigt ist, und diese neuen Leute, die ich interviewe, sagen mir, dass ich alles neu schreiben muss!

Also, wozu bitten Sie das verdammte Arnold-Kind? Erstellen Sie eine PHP-Website, schreiben Sie etwas jQuery, lassen Sie PHP ein paar grundlegende CRUDs mit MSSQL ausführen und ändern Sie die Hintergrundfarben.

Klingt das nach einer Aufgabe, die sich ausschließlich für die Besten eignet? Ich bin mir sicher, dass die Besten es schaffen könnten, aber wahrscheinlich könnte jeder, der die richtigen Fähigkeiten hat, die dazu passen, dies tun.

Sie brauchen also nicht das Beste? Richtig, ich brauche nur jemanden mit den Fähigkeiten, die meine Ziele erreichen.

Oh. Ja.


@ user1525, es ist keine CRUD-App. Es ist Engineering-Software.
Graviton

Nicht immer. Viele Jobs erfordern keine Kenntnisse über Datenstrukturen, Algorithmen oder Rechenaufwand. Sicher, sie sind nicht die Jobs bei Google Search, aber es gibt eine große Nachfrage danach. Schauen Sie sich einfach die meisten Stellenausschreibungen in den Jobbörsen an: "Ich benötige ein JQuery-Plugin" oder "Geben Sie mir eine iPhone-App, die so aussieht wie diese PSDs". Die Leute wollen entweder das Beste oder das Billigste.
Inkognito

3

In Ihrem Fragentitel wird eine "normale Desktop-Anwendung" erwähnt, in Ihrem Text wird jedoch darauf hingewiesen, dass Sie Kenntnisse über Computergeometrie und lineare Programmierung anwenden müssen. Dies sind Anwendungsbereiche, aus denen riesige, jahrzehntelange Forschungsprogramme hervorgegangen sind, die massive gesellschaftliche Konsequenzen für jeden Fortschritt haben (Rückruf, lineare Programmierung abstrahiert die Ressourcenzuweisung ). Infolgedessen gibt es viele ausgeklügelte Ansätze zur Lösung von Problemen in diesen Bereichen, die sehr gut funktionieren.

Eine schlechte Einstellung

  • Vielleicht haben Sie noch nicht einmal von diesen Problemklassen gehört.
  • möglicherweise nicht mit den gängigen Lösungen vertraut sind,
  • Ich würde wahrscheinlich nichts über die besseren Sachen wissen, die es gibt (Hinweis: Die meisten Studenten hören nie von den ausgefallenen Sachen, wenn sie überhaupt von den Problemen hören), und
  • Es würde mit ziemlicher Sicherheit Ewigkeiten dauern, um solche Dinge umzusetzen (wenn man bedenkt, dass einige von ihnen ein komplettes Seminar über Datenstrukturen anbieten, Professor eingeschlossen).

Mit anderen Worten, denken Sie darüber nach, ob Sie wirklich an etwas für Fußgänger arbeiten. Wenn Sie großartig sind, sollte das Mieten viel einfacher sein. Wenn nicht, halten Sie Ausschau nach jemandem, der das tun kann, was Sie brauchen.


Sie müssen nicht die gesamte Bibliothek für rechnergestützte Geometrie / lineare Programmierung neu schreiben. Alles, was Sie für meine Anwendung tun müssen, ist, in der Lage zu sein, die vorliegenden Probleme in geeignete rechnergestützte geometrische / lineare Programmierbegriffe umzuwandeln und zu wissen, wann / wie die vorhandenen Bibliotheken zu verwenden sind.
Graviton

2

Sicher bin ich kein Superstar-Programmierer nach Joels Maßstäben. Trotzdem habe ich in meiner 20-jährigen Karriere als Entwickler einige erfolgreiche Projekte geschrieben. Ich hätte deine Fragen beantworten können. Aber weniger aus meiner Erfahrung bei der Arbeit, wo in der Tat ein Großteil der komplizierteren Arbeit erledigt wird, indem Sie Ihre Datenbank oder eine Bibliotheksfunktion bitten, dies zu tun.

Wenn Sie sich jedoch dazu entschließen, weniger erfahrene Mitarbeiter einzustellen, sollten Sie in Betracht ziehen, Technologien zu verwenden, die einfach zu handhaben sind. Wenn Sie beispielsweise C ++ für das gesamte Projekt verwenden möchten, beschränken Sie den C ++ - Teil auf Bibliotheken, die von Ihren besten Mitarbeitern geschrieben wurden, und lassen Sie die anderen Benutzeroberflächen in Visual Basic implementieren.


2

Notieren Sie die Werte, die Sie in einem Mitarbeiter suchen, der sich Ihren Reihen anschließt.

Wenn Programmierkompetenz der einzig geschätzte Wert ist, werden Sie schnell von Menschen umgeben sein, die genau das schätzen. Da die kompetentesten Programmierer über ein ausgefeilteres Wertesystem verfügen, können sie sich Ihrem Team nicht anschließen.

Es ist jedoch wahrscheinlicher, dass Sie nach innovativen, kreativen, vertrauenswürdigen, gelehrten, neugierigen, selbstlernenden, kontaktfreudigen, kompetenten und engagierten Menschen suchen. Zeigen Sie, dass Ihr Unternehmen diese Werte versteht und respektiert und bereit ist, seine Mitarbeiter bei ihrer Weiterentwicklung zu unterstützen.

Verstehen und verstehen Sie die Werte Ihrer derzeitigen Mitarbeiter und kommunizieren Sie diese in Ihren Bewerbungen. Gute Unternehmen mit einem nachhaltigen Wertesystem ziehen gute Mitarbeiter an.


-1: Wenn Sie Geld sagten (und das OP darüber sprach), wäre das natürlich sinnvoll. Ich verstehe allerdings nicht, wie ihm diese Antwort helfen würde. Sie sagen im Grunde, dass er nicht genug Marketing in seine Bewerbung eingibt, wenn ich richtig verstanden habe? Naja, vielleicht würde das ein bisschen helfen, aber ich sehe normalerweise nicht viele hochkompetente Leute, die nicht wenigstens einen vernünftigen Wert auf ... duh ... Kompetenz legen. .. wie gesagt, ersetze "Programmierkompetenz" durch Geld und deine Antwort macht viel Sinn, aber sorry, ich verstehe es nicht.
n1ckp

Wenn du meinen Kommentar nicht verstehst, solltest du ihn vielleicht nicht abändern. Jedenfalls ist das, was ich meine, ganz einfach. Im Laufe der Zeit habe ich einige exzellente Programmierer getroffen. Sie kennen ihre Sprachen, Algorithmen, Mathematik, Physik ... Was sie jedoch in erster Linie großartig machte, war das Interesse an mehr als nur dem Handwerk. Sie schätzen oft die Neugierde an sich und an anderen. Sie sehen die selbständige Gelehrsamkeit als wichtiges Merkmal (oder Wert) an oder lassen sich von den kreativen Menschen in ihrer Umgebung inspirieren. Oft sind diese Werte wichtiger als ihr Einkommen.
Dibbeke

@Dibbeke: naja ich habe es auch teilweise runtermodifiziert weil ich nicht verstehe wie das mit der frage zusammenhängt. Nizza schimpfen, und ich bin mit Ihrem letzten Kommentar nicht einverstanden (obwohl Ihre Antwort etwas anderes ist), aber ich weiß immer noch nicht, wie es dem OP helfen oder die eigentliche Frage beantworten würde.
n1ckp

@ n1ck Als Sie Marketing sagten, fragte ich mich, ob es wirklich dasselbe ist, einen Einstellungsprozess auf Grundwerten aufzubauen. Ich weiß es nicht, aber ich erkenne, dass der Aufbau eines sozialen Netzwerks von Vertrauen und Respekt stark davon beeinflusst wird. Dies wiederum beeinflusst die Reputation Ihres Unternehmens und hilft Ihnen, die besten Softwareentwickler für sich zu gewinnen.
Dibbeke

@Dibbeke: Ich bin mir nicht sicher, ob ich deinen letzten Kommentar bekommen habe, aber ich glaube, ich stimme dir zumindest ein wenig zu. Aber auch hier bin ich mir nicht sicher, ob es für das OP hilfreich ist (obwohl ich jetzt mehr sehe, wie es mit der Frage zusammenhängt). Was macht ich sagen , dass er nie etwas über seine Firma gesprochen, also ja vielleicht könnte es eine Ursache sein , dass seine Firma schlechten Ruf hat, aber ich denke , Sie zu Schlussfolgerungen sind springen ..
n1ckp

1

In jeder Organisation gibt es Menschen mit mehr Erfahrung und Menschen mit weniger Erfahrung. Darüber hinaus kann ein Experte auf einem Gebiet ein Neuling auf einem anderen sein. Sicher, ein begeisterter Amateur kann einer Codebasis mehr schaden als nützen, aber so lernen sie - indem sie ihre Fehler beheben und ihre Erfahrungen mit ihren erfahreneren Kollegen diskutieren.

Mein Vorschlag wäre, statt Superstars einzustellen, Leute einzustellen, die einigermaßen intelligent sind, zu Ihrer Unternehmenskultur passen, lernwillig sind und die ihre eigenen Grenzen kennen.


1

Auf jeden Fall sollten Sie danach streben, nur die Besten einzustellen. Das bedeutet nicht automatisch, dass Sie erfolgreich sein werden - es gibt nur so viele der "Besten", und es wird Gewinner und Verlierer im Kampf geben, um sie anzuziehen. Ein Großteil davon wird von Ihrer Eignung und Bereitschaft abhängen, hart an dem Problem zu arbeiten, sowie von den Ressourcen, die Ihnen zur Verfügung stehen.

Aufgeben, bevor Sie anfangen, ist der sicherste Weg zu verlieren.


1

Die binäre Suche ist ein interessantes Problem, da bekanntlich die meisten Programmierer Schwierigkeiten haben, sie richtig zu schreiben ( schreibt Bently in Programming Pearls ). Vielleicht ist es nicht so schlimm, es zu testen, solange Sie Kandidaten nicht aufgrund ihres Versäumnisses, es zu lösen, ausschließen. Wenn sie es schnell und richtig lösen, gibt es zumindest einen Hinweis darauf, um welche Art von Programmierer es sich handelt, sodass Sie in diesem speziellen Fall mehr Informationen haben.


1

Sie müssen die Besten einstellen. aber der Begriff wurde oft aus dem Zusammenhang gerissen. Sie müssen den besten Kandidaten mit den für diese Position erforderlichen Fähigkeiten finden und nicht den besten Programmierer im allgemeinen Sinne. Die Softwareentwicklung ist breit und nicht jede Position erfordert das gleiche technische Wissen.

Stellen Sie sich diese Frage (Sie haben es schon getan): Wenn Sie einen anderen Ingenieur in der gleichen Position für 5 Jahre haben, würden Sie erwarten, dass er sich an Fibonanci-Reihen und binäre Suchen erinnert?

Wenn die Antwort Nein lautet, ändern Sie Ihr Interviewmuster. Möglicherweise müssen Sie ein Dutzend Suchalgorithmen kennen, wenn Sie an einer Suchanwendung wie Google oder Bing arbeiten möchten. Alle anderen verwenden einfach map.get ("").

Richten Sie Ihre Interviews auf das, was die Position erfordert, und nicht auf einen guten Programmierer.


1

Wenn Sie sich wirklich nicht für Qualität interessieren, dann würde ich vorschlagen, eine der Outsourcing-Websites zu verwenden und mit kleinen Projekten zu beginnen. Sie können sie dann bezahlen, wenn sie die Arbeit erledigen können, und können auf einfache Weise eine Kaution hinterlegen, wenn sie dies nicht können.

Ich frage mich jedoch, ob es in einer Desktop-Engineering-Anwendung wirklich viel Routinecodierung gibt. Sie können sehr komplex sein, und die meisten Programmierer beherrschen die Komplexität nicht so gut. Sie könnten leicht eine Menge von Instant-Legacy-Code erstellen, der Ihr Team für die kommenden Jahre zusammenhält. Im Allgemeinen sind die ersten Einstellungen für ein neues Projekt die wichtigsten und geben den Ton für das gesamte Projekt an.


0

Ich stimme den meisten der obigen Kommentare zu, die sich auf die Anpassung einer Person an ein Problem beziehen. Dies führt in der Regel zu einer langfristigen Beziehung, anstatt einen Superstar einzustellen, der an einem regulären Problem arbeitet - was ihn nur frustriert, schnell zu gehen.
Trotzdem sollten Sie immer versuchen, für Ihr Unternehmen zu engagieren und nicht für eine bestimmte Position. Weil derselbe Typ früher oder später mit persönlichen Kontakten usw. zwischen Teams wechseln wird und sich möglicherweise als Sackgasse herausstellt. Stellen Sie sicher, dass Ihr Unternehmen über sehr strenge interne Transferrichtlinien verfügt und dass Sie ein klares Bild davon haben, was Sie in den nächsten Jahren in Ihrem Team tun werden, bevor Sie eine Person einstellen, von der Sie glauben, dass sie die Unternehmensgrenze nicht erreicht (aber das aktuelle Problem löst) ). Ich habe zu viele Fälle erlebt, in denen das Team durch Mittelmäßigkeit bei den Entwicklern besonders hart daran gearbeitet hat, sich um sie zu kümmern.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.