Frage:
Rekrutierung von Menschen, die pflegen und verbessern, nicht nur das Neue und Glänzende verfolgen
StackExchange What The Heck
2018-12-24 18:01:01 UTC
view on stackexchange narkive permalink

Meine Arbeit wird bald rekrutiert, und eine Sache, die ich gerne tun würde, ist, Leute auszusortieren, die mehr davon begeistert sind, neuen, aufregenden Code zu schreiben als älteren Code zu reparieren, und allgemeiner Leute, die erkennen, dass es um guten Code geht Mehr als nur Codezeilen pro Tag, und dieses Design, diese Dokumentation und das Testen gehören auch dazu, ein Codierer zu sein.

Wenn ich direkt frage: "Wie denken Sie über die Arbeit mit dem Code anderer Leute und die Behebung von Fehlern?" im Gegensatz zum Schreiben von neuem Code? ", vermute ich, dass viele Leute sagen werden, was sie zu sagen glauben - dh" Fehler zu beheben ist wichtig ", aber dies spiegelt möglicherweise nicht ihre tatsächlichen Arbeitspraktiken wider.

Welche Fragen oder höflichen (nicht zu zeitaufwändigen) Tests würden Sie stellen, um jemanden zu finden, der interessiert und bereit ist, Code zu pflegen und zu verbessern?

Bearbeiten, um hinzuzufügen: Die Rolle würde definitiv einige neue Arbeiten beinhalten - ich möchte nicht den Eindruck erwecken, dass es sich nur um Wartung handelt! Hier geht es mehr darum, Leute auszusortieren, die es vorziehen, jedes Mal zu löschen und neu zu schreiben, anstatt einen Fehler zu beheben ...

Sind Sie sicher, dass es Leute gibt, die mehr davon begeistert sind, älteren Code zu reparieren?Ich würde sagen, dass das Bereitstellen von Fixes und anderen No-Rewrite-Lösungen eher ein Devops-Job ist.Aber meiner Meinung nach sollte in den meisten Fällen das Löschen und Umschreiben erfolgen.Zumindest Refactor.Siehe 2.11 in [this] (https://arxiv.org/ftp/arxiv/papers/1702/1702.01715.pdf).
Nach dem Kommentar von @Džuris ist die beste Lösung häufig * umschreiben und löschen *: den vorhandenen minderwertigen Code abstrahieren, eine parallele, bessere Ersatzimplementierung schreiben, den Clientcode umschalten und dann die alte Implementierung entfernen.
@Džuris Ich arbeite jetzt seit vielen Jahren in einem Unternehmen und habe die gleichen Arten von Fehlern in drei Generationen einiger Softwareteile gesehen.Meiner Ansicht nach ist das Löschen und Umschreiben gefährlich, es sei denn, die Entwickler verfügen über Erfahrung mit den erforderlichen Funktionen (also keine Neueinstellungen).Andererseits stimme ich zu, dass Refactoring eine gute Idee ist - und auch ein sehr gutes Training.
Eine andere Frage ist, warum ich immer daran interessiert sein muss, was ich tue.Es ist doch Arbeit.Die Leute tun es, um Geld zu verdienen.
@Džuris: Von einem der Gründer dieser Website ... https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/
@mehrdad Ich möchte nur ganze Absätze dieses Artikels kopieren und in die Frage einfügen. Danke, es ist brillant!
Wenn Sie einen Schwerpunkt auf Legacy-Code legen möchten, verstehen Sie, dass es für die Karriere eines Softwareentwicklers tatsächlich schlecht ist, bei den aktuellen Technologien zu weit zurückzubleiben.Dafür brauchst du eine gute Geschichte.
Acht antworten:
Joe Strazzere
2018-12-24 18:09:02 UTC
view on stackexchange narkive permalink

Welche Fragen oder höflichen (nicht zu zeitaufwändigen) Tests würden Sie stellen, um jemanden zu finden, der interessiert und bereit ist, Code zu pflegen und zu verbessern?

Im Allgemeinen finde ich dass der Schlüssel darin besteht, mehr offene Fragen zu stellen, als Fragen, die mit einem einfachen Ja oder Nein oder einer sehr kurzen Antwort beantwortet werden können.

Etwas mehr im Sinne von "Erzählen Sie mir von der Art der Arbeit, die Sie gerne machen" würde Ihnen bessere Hinweise geben. Wenn es nur um Kreation / Erfindung und überhaupt nicht um Verbesserung / Test / Verfeinerung geht, ist der Kandidat möglicherweise nicht glücklich, die Rolle zu übernehmen, die Sie haben.

Wenn Sie diese Frage hinter sich gelassen haben, können Sie sich mit so etwas beschäftigen "Erzählen Sie mir von einer Zeit, in der Sie sich mit schwierigem Code befassen und ihn pflegen mussten."

Irgendwann im Interviewprozess möchten Sie die Details der Rolle klarstellen. Und Sie möchten klarstellen, wie lange diese Rolle dauern würde und wozu sie führen könnte. Es wäre dumm, die falschen Erwartungen für eine neue Einstellung zu setzen.

Wie andere bereits betont haben, hilft eine gute Stellenbeschreibung dabei, die richtige Art von Kandidaten zu finden und andere sich selbst auswählen zu lassen. Eine Stellenbeschreibung, die die Gedanken in "Menschen, die erkennen, dass guter Code mehr als nur pro Tag geschriebene Codezeilen umfasst und dass Design, Dokumentation und Tests ebenfalls Teil eines Codierers sind" enthält, könnte helfen.

Dies ist eine großartige Antwort. Ich fing an, meine eigene zu schreiben, merkte aber schließlich, dass ich diese gerade umformulierte.
Die Fragen wie "Erzählen Sie mir von einer Zeit, in der Sie sich in einen schwierigen Code vertiefen und ihn pflegen mussten" implizieren, dass der Kandidat dies bereits getan hat.Es gibt eine Fallgruppe, in der Kandidaten immer Jobspezifikationen unterzogen wurden, um neuen Code zu erstellen, während ihre eigentliche Aufgabe darin besteht, die Codes anderer zu knacken.Ich neige zu Fragen wie "Würden Sie eine Motivation verspüren, sich mit schwierigem Code auseinanderzusetzen und ihn zu pflegen? Welche könnten sie sein?".Ich bin nicht besonders für die Annahme, dass ein guter Mitarbeiter an und für sich einer ist, der hier und da seine eigene „nachgewiesene Erfolgsbilanz“ wiederholt
"Welche Motivationen würden dich antreiben?"Zum Beispiel eine Leidenschaft für Verifikation und Validierung, ein Interesse an Syntaxen verschiedener Sprachen, eine Bewunderung für Code, der großartig geschrieben wurde (Sie können die Arbeit anderer nicht korrigieren, wenn Sie keine Vorstellung von „richtig“ haben), Freude an der Verwendung von Einheit und RegressionTesten und dergleichen.Vielen Dank, dass Sie diesen unklaren Punkt angesprochen haben.
@davnicwil Es ist ein guter Ansatz, aber Vorsicht.Wenn die Antwort lautete: "Ich habe alles herausgerissen und neu geschrieben", haben Sie möglicherweise keine Person, die Wartungsarbeiten auf sichere Weise durchführt.Möglicherweise arbeitet eine Person auf der grünen Wiese an einem vorhandenen Projekt.Es gibt Zeiten, in denen ein Modul nur von Grund auf neu geschrieben werden sollte, aber sie sind selten und werden normalerweise neu geschrieben, um vollständige Unit-Testsuiten zu erfüllen.
@JoeStrazzere Fantastisch!Ich habe gerade die Aufforderung gesehen, die Frage zu stellen, aber ich habe keine Hinweise zur Bewertung der Antworten bemerkt.Viele Leute brauchen diesen letzten Teil, auch wenn dieses OP und Sie nicht in dieser Gruppe von Leuten sind :)
Ja, das ist der Weg, es zu tun.Ich frage gerne etwas in dieser Richtung: "Was hat Ihnen an diesem bestimmten Job am besten und am wenigsten gefallen und warum?"Wenn der Kandidat antwortet: "Ich habe es gehasst / geliebt, ältere Anwendungen zu pflegen, weil ich mit Code arbeiten muss, der nicht von mir stammt", nehmen Sie einen Hinweis.
„Wenn es nur um Kreation / Erfindung und überhaupt nicht um Verbesserung / Test / Verfeinerung geht, ist der Kandidat möglicherweise nicht glücklich, die Rolle zu übernehmen, die Sie haben.“ Oder er betrachtet Testen, Verfeinern, Refactoring usw. als impliziten Teil der Entwicklung undDenken Sie nicht einmal daran, es zu erwähnen.
@Michael, das ist tatsächlich ein interessantes Problem bei der Rekrutierung - vorausgesetzt, die Rekrutierer wissen, dass Sie etwas verwenden.Ein gutes Beispiel könnte die Versionskontrolle oder die Linux-Befehlszeile sein.Viele Leute wissen, wie man es benutzt, aber jemand, der Ihren Lebenslauf überprüft, kann nicht sicher sein, ob Sie es wissen, und kann Sie aufgrund dieses Mangels möglicherweise nicht in die engere Wahl ziehen.Gleiches gilt für Interviews - es ist wichtig, Fähigkeiten zu erwähnen, die offensichtlich erscheinen - im Idealfall nur kurz -.
"Wir suchen jemanden, der unsere alte ASP.NET-Anwendung wartet."Ich renne schon wie die Hölle, mach dir keine Sorgen über Interviewfragen!
BinaryTox1n
2018-12-24 21:28:54 UTC
view on stackexchange narkive permalink

Nach meiner Erfahrung ist die Einstellung der Ingenieure normalerweise nicht der Grund, warum Legacy-Code keine Verbesserung erfährt. Wenn Sie in der Lage sind, eine Umgebung zu schaffen, in der Wartung, Refactoring und Verbesserung des vorhandenen Codes geschätzt und gefördert werden, erhalten Sie die gewünschten Ergebnisse.

Normalerweise sehe ich Druck vom Unternehmen, Funktionen bereitzustellen, oder Kritik vom Management (Roger hat die ganze Zeit in Codebasis X verbracht und es gibt keinen funktionalen Unterschied! Warum haben wir all diese Zeit / dieses Geld ausgegeben?).

Die meisten Ingenieure, mit denen ich gearbeitet habe, hassen es, von der alten Infrastruktur behindert zu werden, und werden sie in der richtigen Umgebung gerne umgestalten oder ersetzen. Führen Sie die folgenden Schritte aus:

  • Fördern Sie das Refactoring, während Sie fortfahren.
  • Besprechen Sie regelmäßig den Wert der Wartung.
  • Bestätigen Sie den Erfolg von Wartungsprojekten, beide gegenüber Ingenieuren und Management
  • kämpfen um die Wartungszeit Ihres Teams, auch wenn Sie diese in Schätzungen für neue Funktionen einbinden müssen

Sobald Sie dies getan haben Wenn Sie eine Umgebung erstellt haben, in der kontinuierliche Verbesserungen wichtig sind, können Sie diese in der Jobbeschreibung als Vorteil auflisten. "Unser Unternehmen legt Wert auf Tests, Refactoring, CI / CD und kontinuierliche Verbesserung. Wir lassen Code nicht verrotten und wir lassen Sie auch nicht verrotten."

Diese Antwort IMO ist wichtig, weil sie die Annahmen umdreht.Die Frage und die aktuellen Top-2-Antworten gehen alle davon aus, dass niemand die Code-Wartung durchführt. Der Codierer ist schuld. Aber ich stimme @BinaryTox1n zu. Diese Annahme ist nicht immer wahr.Refactor alten wichtigen hässlichen Code ... Aber wenn es keine Unterstützung / Belohnung von ihrem Chef und / oder Kollegen und / oder dem wichtigsten Management gibt ... Dann kann es sehr, sehr schwierig werden, das Richtige zu tun und alten Code zu verbessern.
@syn1kk absolut.Ich habe das Management * endlich * davon überzeugt, dass die Entwicklung aller glänzenden neuen Funktionen aufgrund der vorhandenen Infrastruktur zehnmal länger dauern wird.Jetzt bin ich glücklich, weil ich derjenige sein kann, der diesen alten Mist durch etwas ersetzt, das gleichzeitig dem Unternehmen und meiner Fähigkeit, die Codebasis zu tolerieren, zugute kommt.
IMO ist dies die einzig richtige Antwort auf die Frage.95% der Entwickler, die ich kenne, hätten gerne etwas Zeit, um die Codebasis zu verbessern, mit der sie arbeiten.Das Management stimmt in den meisten Fällen nicht zu.Um dieses Problem zu beheben, müssen Sie den Rekrutierungsprozess nicht ändern.Sie müssen dem Management klar machen, dass technische Schulden ebenso wie Geldschulden zurückkommen, um Sie * SEHR * hart zu beißen, es sei denn, Sie zahlen sie aus
@syn1kk "fast sehr sehr hart" Versuchen Sie aktiv entmutigt.
Dies verfehlte weitgehend den Punkt der gestellten Frage, bei der es darum ging, Leute zu finden, die bereit sind, * mit dem vorhandenen Code zu arbeiten * und diejenigen zu vermeiden, deren Antwort auf alles darin besteht, ihn zu zerreißen und zu ersetzen.Es geht nicht darum, Zeit für Wartung oder Funktionen zuzuweisen, sondern um die Bereitschaft des Ingenieurs, * Wartung * durchzuführen oder impulsiv * schlecht konzipierte * Änderungen vorzunehmen.
"technische Schulden" sind immer noch etwas sehr Immaterielles, wenn man sieht, dass es funktioniert.
Es ist wirklich einfach, mit den Fingern auf das zu zeigen, was mit einem etablierten System nicht stimmt, wenn man nur einen kleinen Teil davon betrachtet.Es braucht Zeit, das Ganze zu betrachten und damit zu arbeiten, um zu verstehen, was daran richtig war, insbesondere im Hinblick auf die Interaktion mit externen Systemen und Benutzern.Tauchen Sie vorher in ein Re-Design ein, und Sie haben keine technischen Schulden getilgt, sondern neue Schulden geschaffen ... und ein System, das nicht so funktioniert, wie es benötigt wird.
@ChrisStratton Auf die Frage "wie gestellt" gibt es bereits eine hervorragende Antwort.Ich habe mich für eine Antwort entschieden, die sich mit dem befasst, was meiner Meinung nach ein zugrunde liegendes Problem sein könnte.Das Zeigen des Werts der Wartung in einer erfolgreichen, gesunden Organisation ist wahrscheinlich genug, damit diese "nur neuen" Entwickler lernen, dass es einen besseren Weg gibt - was die Einstellung letztendlich erleichtert, weil Sie wissen, dass Ihre Organisation die Dinge richtig macht und jeden vernünftigen Entwickler aufnehmen kann.Dann wird Ihre Aufgabe einfach darin bestehen, unvernünftige Personen zu filtern, was bereits das Ziel eines jeden Interviewers sein sollte.
Wie viele sagten, scheinen Unternehmen das Konzept der technischen Verschuldung nicht zu verstehen.Für viele ist die Anwendung / Funktion gut genug, solange sie funktioniert.Dies führt in einer agilen Umgebung dazu, dass die Funktion geschlossen und der Liste der zu erledigenden Aufgaben neue hinzugefügt werden.Was sie nicht verstehen, ist, dass diese Verschuldung zukünftige Merkmale verlangsamt.Nach meiner Erfahrung zwingt dieses Missverständnis Entwickler dazu, die Schulden zu überspringen und neue Funktionen hinzuzufügen, da das Management erwartet, dass sie hinzugefügt werden.
Owen C. Jones
2018-12-24 18:37:43 UTC
view on stackexchange narkive permalink

Also, ich würde sagen, ein paar Dinge werden Ihnen dabei helfen:

  • Seien Sie bereit, erfahrenere (und damit teurere ) Entwickler zu beschäftigen Diese haben oft die Phase ihrer Karriere hinter sich gebracht.
  • Erstellen Sie ein Leistungspaket, das sich mehr an diese Gruppe richtet (denken Sie an mehr Renten, Vergütungen, Arbeitsatmosphäre und weniger Tischtennis, Fussball) , und X-Boxen)
  • Angesichts der Tatsache, dass Sie die Leute dazu bringen möchten, einiges an Legacy-Code, Verbesserungen, Business-as-usual usw. zu tun, versuchen Sie, Möglichkeiten einzuführen, um ein bisschen zu tun von mehr innovativer Arbeit für einen kleinen Teil der Zeit. Es ist eine gute Möglichkeit, Menschen Zeit für persönliche Projekte zu lassen. Denken Sie daran, dass Ihre Entwickler, wenn Sie aktuelle oder ältere Technologien verwenden müssen, mit Technologien zurückfallen, die ihre Karriere in ihrem nächsten Job vorantreiben. Lassen Sie sie also auch Schritt halten.

Haben Sie eine - nichts für ungut - langweiligeres Projekt, für das Sie Entwickler benötigen, ist eine der größeren Herausforderungen bei der IT-Rekrutierung, da Sie nicht alle Schlagworte hervorheben können, die Sie benötigen. Daher können Sie gute Mitarbeiter hauptsächlich durch andere Aufgaben gewinnen appelliere an sie.

Ein weiterer Punkt, den Sie hinzufügen sollten: Belohnen Sie diejenigen, die Code pflegen und verbessern.Oft wird dies als Arbeit der zweiten Ebene angesehen, wenn es in Wirklichkeit schwieriger ist, Code zu schreiben, der sowohl besser als das Original ist als auch sich nahtlos in das chaotische Zeug integriert.Wenn Sie Ihre neue Technologie intern im Unternehmen präsentieren und kaum größere Nacharbeiten erwähnen, erhalten Sie das, was Sie belohnen.
Ich stimme dem mit zwei zusätzlichen Kommentaren zu (die meiner Meinung nach keine weitere Antwort auf eine Frage wert sind, die bereits 7 Antworten hat).1) Erfahrene Berater sind für solche Dinge gut, da sie bezahlt werden können ($$$) und dann weitermachen können.2) Fragen Sie in Ihren Interviews, wie der Kandidat mit der in der Produktion befindlichen Reparatursoftware umgehen würde, bei der es unbedingt erforderlich ist, dass die Software rund um die Uhr ohne Ausfallzeiten aufgrund von Regressionen (und ohne CI / CD!) Laufen kann - möglicherweise aufgrund des $$$ Verlust im Zusammenhang mit solchen Ausfallzeiten.(Ich habe kürzlich einen 2-jährigen Beratungsvertrag mit dieser Einschränkung abgeschlossen ...)
Ich würde dem zustimmen, zumal ich einer dieser Berater bin!
O.M.Y.
2018-12-26 05:49:50 UTC
view on stackexchange narkive permalink

Ich werde den bereits gegebenen Antworten eine neue Dimension hinzufügen. Kurz gesagt, mein Rat zu dieser Frage lautet: Betrachten Sie ältere Arbeitnehmer ernsthaft für diese besondere Rolle.

Die IT-Branche ist seit langem vom Thema Ageismus , wobei die schnellen jungen Köpfe der Jugend den etwas langsameren Köpfen älterer Arbeitnehmer vorgezogen werden. Diese etwas langsameren Köpfe verfügen jedoch über eine Fülle von Erfahrungen und Disziplinen, die vielen jüngeren Arbeitnehmern häufig fehlen, und die Wartungscodierung erfordert genau diese Disziplin.

Die Einstellung neuer Codierer erfordert selten viel Erfahrung, da Sie ihnen alle Besonderheiten der Codebasis und der Arbeitsmethoden Ihres Unternehmens beibringen. Ein "Kind", das gerade das College abgeschlossen hat, kennt vielleicht die neuesten und besten Möglichkeiten, um (wie Sie sagen) das Neue und Glänzende zu jagen, aber Sie können nicht den Instinkt lehren, Fehler zu finden, oder die Denkweise, die zum Durchstapfen erforderlich ist Meilen von unbekanntem Code. Erfahrung ist das, was diese Attribute liefert, und Erfahrung erfordert Zeit, also Jahre und Alter.

Nehmen Sie sich 2 Minuten Zeit und klicken Sie auf die folgenden beiden Google-Abfragen. Dann überfliegen Sie für jede dieser beiden Abfragen den Inhalt von 3 Treffern (insgesamt 6 Artikel):

Auch das wissen wir alle einmal Ein Programmierer beherrscht eine bestimmte Sprache, bei der er selten Probleme hat, neue zu lernen. Überprüfen Sie, ob ihre Arbeitshistorie zeigt, dass sie sich gut an neue Umgebungen anpassen. Schauen Sie sich an, wie viele Sprachen diese älteren Arbeitnehmer haben, nicht wenn sie die neuesten oder möglicherweise sogar genau die Sprachen kennen, die Sie benötigen. Wenn ihre Erfahrung nahe ist, werden sie lernen und von diesem Lernen leben. Sie stellen sie für Legacy-Arbeiten ein, genau das Gegenteil von modernster Arbeit.

Machen Sie auch Ihre Due Diligence. Verwenden Sie niemals das Alter allein als Grund für die Einstellung oder Nichteinstellung. In einem solchen Fall sollten Sie jedoch berücksichtigen, dass Alter und Erfahrung ein echtes Kapital sind und dass Sie Vorurteile haben sollten, jemanden einzustellen, der vielleicht 50 Jahre oder älter ist sorgfältig geprüft, da Ihnen möglicherweise genau die Fähigkeiten und Einstellungen fehlen, nach denen Sie in Ihrem OP gefragt haben.

Oh und noch eine letzte Sache. Seien Sie nicht überrascht, wenn Sie von Ihrer Personalabteilung einen ausweichenden Rückstoß erhalten. Aus komplizierten (aber fehlerhaften) Gründen, die auf den oben genannten Mythen beruhen, neigen Personalabteilungen häufig dazu, ältere Bewerber in IT-Abteilungen herauszufiltern. Seien Sie sich also bewusst, dass Sie möglicherweise Ihren eigenen Manager und Ihre Personalabteilung darüber informieren müssen, dass Sie diese Mythen ablehnen, ihnen einige der Studien zur Verfügung stellen, die Sie online über die obigen Links leicht finden können, und darauf bestehen müssen, dass sie nicht sind die sogenannten "überqualifizierten" Arbeitssuchenden abzulehnen, sondern sie zu den Interviews durchzuschicken.

Ich liebe diese Antwort wirklich!Erfahrung und Reife können so viel ausmachen, dass es seltsam ist, dass die Leute sie so gerne übersehen.Das heißt, es besteht auch die Möglichkeit, dass die Neulinge gut unterrichtet werden, wenn sie * sehr * unerfahren sind, nehme ich an.
@yochannah - Sie "übersehen" Erfahrungen aufgrund des Fortbestehens der Mythen über "ältere Arbeiter", die ich erwähnt und (indirekt) damit verbunden habe.Mehr als 50% der verfügbaren Belegschaft sind jetzt über 40 Jahre alt, und dennoch spiegelt die demografische Einstellung dies nicht wider.Ein Wort, das völlig unlogisch ist und dennoch ständig verwendet wird, ist "überqualifiziert", als wäre es eine schlechte Sache, mehr zu wissen, als der Job erfordert.
"Erfahrung und Disziplin" - meiner Erfahrung nach hat sich dies als Hybris, Inflexibilität und Widerstand gegen Veränderungen herausgestellt.
"Überqualifiziert" ist viel sinnvoller als Sie vielleicht denken.Ja, es kann eine schlechte Sache sein, mehr zu wissen, als der Job erfordert.Ein Job, für den Sie überqualifiziert sind, ist ein Job, der Sie mit ziemlicher Sicherheit nicht dafür bezahlt, was Ihre Erfahrung wert ist. Das bedeutet, dass Sie wahrscheinlich gehen, wenn eines der vielen besseren Angebote auftaucht.
@cHao - das mag für jüngere (Alter <40) Arbeitnehmer gelten, die leicht neue Jobs finden können, aber je älter ein Arbeitnehmer wird, desto mehr schätzen sie Stabilität und langfristige Beschäftigung, teilweise weil sie Verantwortung wie eine Hypothek und eine Familie haben, aber hauptsächlich, weilDer * nächste * Job ist ** keine ** sichere Sache.Seit mehr als vier Jahrzehnten hat die US-Justiz offiziell anerkannt, dass Unternehmen in einer Reihe von Fällen von Altersdiskriminierung häufig den Ausdruck "überqualifiziert" als Code für "zu alt" verwenden, und dennoch verteidigen die Personalabteilungen ihn weiterhin mit genau demselben Argument, das Sie gerade habengemacht.
@cHao - noch eine Sache.Zu einer Zeit war ich Manager für Critical Severity Incident bei einem großen internationalen Unternehmen.Es war ein hochbezahlter Job mit viel Sichtbarkeit und einem sehr hohen Stresslevel mit 24/7 Oncall.Heute würde ich diesen Job nicht annehmen, wenn Sie mir eine Million Dollar pro Jahr anbieten würden.Während ich die Arbeit leicht erledigen konnte - ich bin sehr gut darin -, möchte ich diese Art von Stress einfach nicht mehr. Meine Prioritäten haben sich geändert: Meine Hypothek ist erledigt und ich habe fast keine Schulden, meine Familie hat sich zerstreutdie Winde und leben in anderen Teilen des Landes, und ich brauche einfach sehr wenig Einkommen mehr.
Dustybin80
2018-12-24 18:52:18 UTC
view on stackexchange narkive permalink

Ich denke, die anderen Antworten sind gut, aber ich möchte besonders betonen, dass eine gute Stellenbeschreibung / Anzeige es den Leuten ermöglicht, sich selbst zu überprüfen. Sie sollten dann in der Lage sein, anhand Ihrer Interviewfragen zu beurteilen, wer sie tatsächlich richtig gelesen und klar verstanden hat.

In der Tat würde ich das Angebot selbst herausfiltern, wenn ehrlich gesagt würde, dass sie eine alte Codebasis haben und nicht wollen, dass es weggeworfen und neu geschrieben wird.
Während ich mich wahrscheinlich für einen solchen Job entscheiden würde, da ich es tatsächlich genieße, Code zu analysieren und ihn zur Verbesserung zu optimieren.Als Kind habe ich vor den Tagen der Heim-PCs gelernt, wie man auf Papier programmiert, indem ich ein menschlicher Emulator / menschlicher Code-Interpret eines Spielprogramms wurde, das ich liebte, und erhielt einen Ausdruck der [Quellenliste] (https: //)web.archive.org/web/20150215080553/http://www.dunnington.u-net.com/public/startrek/STTR1).Seitdem habe ich eine Affinität zu solchen Arbeiten.
SafeFastExpressive
2018-12-25 08:41:57 UTC
view on stackexchange narkive permalink

Ich denke, Sie nähern sich dem aus der falschen Perspektive. Es ist kein Problem der Rekrutierung, es ist ein Problem der Führung. Praktisch jeder Programmierjob ist eine Mischung aus dem Schreiben von neuem und dem Verwalten von älterem Code.

Wie sie geführt und motiviert werden, ist der Schlüssel, um die überwiegende Mehrheit der Entwickler zu einer guten Leistung zu bewegen.

Kommuniziert ihr Manager ihnen die Prioritäten des Unternehmens klar? Die meisten Entwickler sind motiviert und tun gerne alles, was für den Erfolg des Unternehmens am wichtigsten ist.

Stellen Sie sicher, dass sie für ihre Beiträge belohnt werden und das Gefühl haben, dass sich das Unternehmen um sie und ihre Bemühungen kümmert?

Sind die Prioritäten des Unternehmens sinnvoll? Entwickler von einem Projekt zum anderen zu bewegen oder sie in endlosen Fehlerbehebungsarbeiten über triviale Probleme zu vergraben, ist eine großartige Möglichkeit, Ihre Entwickler zu desmotivieren. Macht Ihre Organisation regelmäßig Zeitpläne und Probleme "dringend" und verlangt die Entwickler, ständig im Laufe der Zeit zu arbeiten, um sie zu lösen?

Fördern ihr Manager und das Unternehmen eine teamorientierte Atmosphäre? Wenn es Zeit für die Krise ist, helfen ihr Manager und die oberen Führungskräfte dort, oder erwarten sie nur, dass die untergeordneten Entwickler "Todesmärsche" durchführen, um das "dringende" Problem des Tages zu lösen?

Ihre Aufgabe als Personalvermittler ist es, angemessene Erwartungen an das Arbeitsumfeld zu kommunizieren. Wenn es sich hauptsächlich um Wartungsarbeiten handelt, filtern sich Ihre Bewerber gut heraus, wenn sie dies nicht möchten.

+1 aus dem Büro, das eine Frist für den 1. Januar für einen zusätzlichen Gehaltsscheckbonus verfolgt.
AnoE
2018-12-25 00:40:35 UTC
view on stackexchange narkive permalink

In meinen Interviews stelle ich natürlich technische Fragen, insbesondere um unklare Teile des Lebenslaufs herauszufinden oder um mich eingehend mit Themen zu befassen, für die sie Experten sind.

Abgesehen davon habe ich Verbringen Sie so viel Zeit wie möglich, um einfach mit ihnen über unser Fachgebiet zu sprechen. Ich bin offen und ehrlich in Bezug auf das Ziel der aktuellen Diskussion (dh in einem frühen Telefonanruf würde ich sagen: "Dieser Anruf dient nur dazu, dass wir uns kennenlernen können, dies ist kein Test" usw. oder in einem Vor-Ort-Interview könnte ich sagen: "Ein Teil dieses Interviews besteht darin, das genaue Team in meinem Unternehmen herauszufinden, in dem Sie arbeiten können und Ihren Interessen so gut wie möglich entsprechen", und ich meine es ernst.

Dies ist nicht dazu gedacht, dass sie ihre Wache senken oder sie austricksen, sondern nur, um eine ehrliche Diskussion in Gang zu bringen. Ehrlich gesagt gibt mir dies die nützlichsten Informationen über die Person. Und wenn ich weiß, dass ich jemanden brauche, der an älterer Software arbeitet (was ich manchmal auch tue), dann werde ich klar und deutlich beschreiben, was ich brauche. Normalerweise kann ich an ihrer Reaktion erkennen, ob sie diese Art von Arbeit mögen, auch wenn sie dies nicht tun, aber immer noch "Ja" sagen.

Welche Fragen oder höflichen (nicht zu zeitaufwändigen) Tests würden Sie stellen, um jemanden zu finden, der interessiert und bereit ist, Code zu pflegen und zu verbessern?

Meine Die Frage wäre: "Sind Sie interessiert und bereit, Code zu pflegen und zu verbessern?" Schlicht und einfach. Ehrlich und direkt. Alles andere würde ihre und meine Zeit verschwenden. Wenn ihre Reaktion mir zeigt, dass die Antwort "Nein" ist, gehe ich von dort aus weiter. Wenn es "Ja" ist, mache ich das Übliche (grabe tiefer, lass sie ihr Verständnis dafür erklären usw.).

Ihre Reaktion geht danach in meine Gesamtbewertung ein. Das heißt, wenn sie nicht die Aufrechterhaltung der Arbeit wollen, aber viele andere Fähigkeiten haben, die wir brauchen, und wenn ich sicher bin, dass die aktuelle Teamstruktur mit so jemandem umgehen kann, dann ist alles in Ordnung. Oder wenn sie das wollen, mich aber irgendwie nicht davon überzeugen konnten, dass sie es wirklich meinten (oder verstanden) und nicht viel anderes auf den Tisch brachten, dann werden wir uns trennen.

Kudos @AnoE!Sie haben erkannt, was so wenige tun.Der Zweck des Interviews besteht nicht in erster Linie darin, ihren Lebenslauf zu überprüfen (obwohl dies eine kleine Rolle spielt), da dies durch Tests vor dem Interview erfolgen kann.Vielmehr ist das Interview die beste Gelegenheit, um herauszufinden, ob die Person gut zu dem Unternehmen und dem Team passt.Große Fähigkeiten mit dem falschen Persönlichkeitstyp können ein bestehendes Team zerstören.
Quasimodo's clone
2018-12-25 23:16:57 UTC
view on stackexchange narkive permalink

Meiner Meinung nach geht es nicht darum, wie die Leute Refactoring oder Code neu erstellen. Die Frage ist warum oder wann , eine Frage der Gründe für eine Entscheidung in bestimmten Fällen. Ich möchte erklären, warum:

Das Schreiben von neuem Code einschließlich der Einrichtung eines neuen Konzepts wird oft als undankbar empfunden, da die Wirtschaft normalerweise Druck auf Entwickler ausübt, effizient zu arbeiten, um Umsatzvolumen in zu generieren kürzeste Zeit.

Nicht selten habe ich ein interessantes Projekt erweitert. Nach mehreren Stunden Codeüberprüfung war ich entsetzt über die falsch konzipierte Codebasis. Es war nicht wirklich erweiterbar konzipiert und hatte mehrere Sicherheitslücken. Das Erstellen von zusätzlichem Code, der von dieser Basis abhängt, hatte zu einem kaum vorhersehbaren Verhalten geführt.

Ich hatte viele Situationen, in denen ich vorschlagen musste, eine vollständige Überarbeitung basierend auf einem neuen Konzept durchzuführen, während vorhandene Algorithmen des alten Projekts einbezogen wurden. Und das hat mich bei einer großen Aufgabe nicht sonderlich begeistert.

Ich bin der Überzeugung, dass die meisten Entwickler es lieben, einen einfachen Job auf der Grundlage eines gut strukturierten Frameworks zu erledigen - soweit es ihn gibt. Ich mache. Warum sollte man sich den Kopf zerbrechen, wenn es eine viel bequemere Möglichkeit gibt?

Wenn wir also nach neuen Teammitgliedern suchen, sollten wir Kandidaten nach Szenarien fragen, in denen sie es vorziehen würden, eine vorhandene Codebasis vorher neu zu schreiben Refactoring / Erweiterung und für detaillierte Erklärungen aus ihren Gründen. Wir möchten wissen, ob der Kandidat in der Lage ist, verlässliche Entscheidungen zu treffen, die unseren Unternehmensrichtlinien entsprechen.

"Die meisten Entwickler lieben es, einen einfachen Job zu machen, der auf einem gut strukturierten Framework basiert." - Ich bin wirklich traurig, einen solchen Kommentar zu hören.Nach meiner Erfahrung lieben die * besten * Entwickler Herausforderungen und sind bereit, so hart wie nötig zu arbeiten (wenn sie angemessen entschädigt und geschätzt werden), um Probleme zu lösen.Wenn Ihre Erfahrung - insbesondere als Personalvermittler - anders ist, habe ich Angst vor der Zukunft der Codeentwicklung.
@O.M.Y.Meine Erfahrung beschränkt sich auf kleinere Startup-Projekte vor allem in Deutschland.Die Anzahl der persönlich bekannten Entwickler ist möglicherweise nicht so repräsentativ wie Deutschland. Dies ist ein ganz besonderer Fall.Die meisten Entwickler hier haben erfahren, dass großartige Ideen von der Branche nicht wirklich gewünscht werden.Sie sind gezwungen, ihre Arbeit schnell und unkompliziert zu erledigen, um sehr kurze Fristen einzuhalten.Es ist jedoch keine schlechte Sache, Ihre Arbeit auf der Grundlage eines gut strukturierten Rahmens effizient zu erledigen.
Das Problem ist, dass das * Erstellen * eines solchen Frameworks, * generischen und wiederverwendbaren Codes * Zeit kostet, die oft nicht zum Budget des Unternehmens passt.So wird das Rad immer wieder erfunden, indem ähnliche Codes mehrmals geschrieben werden.In Deutschland erleben wir, dass Menschen ihren Job verlieren, wenn sie in einem einzigen Projekt nicht effizient zu sein scheinen.Was ich damit gemeint habe ist, dass es ein Gleichgewicht zwischen der Verwendung von vorhandenem Code und dem Umschreiben geben muss, falls erforderlich.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 4.0-Lizenz, unter der er vertrieben wird.
Loading...