Wie vertrete ich teure Programmierer?

33

In unserem Unternehmen müssen wir viele scheinbar nicht komplizierte Dinge tun, wie beispielsweise die Entwicklung einer mobilen Benutzeroberfläche.

Nehmen wir an, die erfahrenen Programmierer kosten uns 4x so viel wie die Anfänger.

Beide sind grundsätzlich in der Lage, die scheinbar einfachen Dinge in der gleichen Zeit zu erledigen.

Der Unterschied ist, dass die erfahrenen Programmierer weniger Bugs produzieren und ihr Code stabiler ist usw. Die Anfängerprogrammierer verschwenden viel Zeit von allen anderen (PM, Clients usw.). Sie sind aber deutlich günstiger.

Das Gegenargument ist, dass erfahrene und Anfänger die gleiche Zeit benötigen, um eine Tabelle in HTML zu erstellen. Daher ist es Luxus, erfahrene Programmierer einzustellen, um das zu tun, was auch Anfängerprogrammierer erreichen können.

Sollten wir in mehr und bessere Programmierer oder in mehr und bessere PM investieren, kann der Unterschied zwischen erfahrenen und neuen Programmierern in unserem Bereich viermal so groß sein.

user1721135
quelle
18
Erfahrene Programmierer erstellen Code schneller und mit weniger Fehlern, langweilen sich aber auch schnell bei der Arbeit an einfachen Projekten.
David25272
18
Let's say the experienced programmers costs us 4x as much as the beginners.- Das ist unwahrscheinlich. Das Verhältnis ist eher 2x oder 3x. Wenn Sie Programmierer so schlecht bezahlen, ist das, was Sie wirklich tun, Amateure anzuheuern und sie für die Arbeit auszubilden, die Sie brauchen, damit sie Ihr Unternehmen für umweltfreundlichere Weiden verlassen, sobald sie ein Minimum an Erfahrung haben.
Robert Harvey
4
Both are basically able to complete the seemingly simple things in the same amount of time.- Nun, der erfahrene Programmierer spart auf lange Sicht beträchtliche Zeit, weil Sie ihm keine genaueren Anweisungen geben mussten, was genau zu tun ist.
Robert Harvey
8
@jules: Um Outsourcing / Offshore zu betreiben, müssen Sie eine sehr detaillierte Spezifikation schreiben, ein Prozess, der genauso viel Zeit in Anspruch nehmen kann wie erfahrene Programmierer, die nur das eigentliche Programm schreiben. Nehmen Sie nicht mein Wort und sprechen Sie mit jemandem, der versucht hat, Offshoring zu betreiben. Ich habe.
Robert Harvey
2
@Ewan: Bitte geben Sie ein Beispiel für ein großes Unternehmen, das London in den letzten zwei Jahren verlassen hat, um günstigere Softwareentwickler in Großbritannien zu finden.
gnasher729

Antworten:

60

Ich habe Erfahrungen aus erster Hand, wie beide Theorien in der realen Welt erprobt werden - tatsächlich im selben Projekt.

Bevor ich ankam, war die Entscheidung gefallen, teurere BAs und sehr billige Programmierer einzustellen - die Idee war, gute Qualitätsspezifikationen zu haben, die von sehr jungen Programmierern sklavisch befolgt wurden.

Nach mehr als 6 Monaten des Hauptprojekts übernahm ich die Leitung der Entwicklung. Nachdem ich einige Hygienefaktoren behoben hatte, blieb das Problem der Codequalität bestehen. Ich hatte ein wenig Geld übrig und stellte einen sehr erfahrenen Programmierer (eher einen Solution Architect) mit außergewöhnlichen Kommunikationsfähigkeiten und einem früheren Leben als Trainer in C # (der Sprache, in der das Projekt geschrieben wurde) ein. Die Idee war, die Qualität der anderen Programmierer zu verbessern, indem Mentoring und effektiv kostenloses Training angeboten werden.

Nach ein oder zwei Monaten wurde schmerzlich klar, dass auch das nicht funktionieren würde, so dass das ursprüngliche Team aus dem Projekt entfernt und ein paar weitere Top-Drawer-Programmierer hinzugefügt wurden. Sie lieferten das Projekt, das das ursprüngliche Team innerhalb von mehr als 8 Monaten nach drei einmonatigen Sprints, die von vorne anfingen, nicht erfolgreich abgeschlossen hatte, da der ursprüngliche Code unwiderruflich war.

Wenn Ihre Anforderungen sehr einfach sind, können Sie vielleicht mit einem sehr jungen Programmierer davonkommen, aber die Wahrscheinlichkeit ist, dass sie auf lange Sicht viel mehr kosten werden. Manchmal entwickeln sich "einfache" Anforderungen zu einer großen Komplexität.

Wenn ich nicht die harte Entscheidung getroffen hätte, die Richtung zu ändern, würden sie wahrscheinlich immer noch daran arbeiten :) - In diesem Beispiel bedeutete der Mangel an Kommunikation und Kompetenz durch das ursprüngliche Team, dass sie keine Probleme mit dem aufwerfen würden Spezifikation, würde aber nur versuchen, das zu tun, was auch immer sie tun sollten, ob es architektonisch sinnvoll war oder nicht. Ein erfahrener und selbstbewusster Entwickler hat Fragen gestellt und sich mit den zugrunde liegenden Anforderungen befasst und daher beim ersten Mal die richtige Lösung entwickelt.

Oh, noch etwas. Gehen Sie nicht davon aus, dass Sie sofort einen großartigen Programmierer einstellen können. Es gibt viele Leute mit langjähriger Erfahrung in der Mittelmäßigkeit, die fast so schlechte Ergebnisse erzielen wie ein Junior, aber genauso viel kosten wie ein Superstar (manchmal sogar mehr). Ich habe eine sehr gute "Trefferquote", aber das hängt mit der Erfahrung zusammen und ich habe eine Menge. Das ist das Thema eines ganz anderen Gesprächs, das hier nicht zum Thema gehört ...

TL; DR Gute Programmierer sind ein Schnäppchen. Das Schwierige ist, sie zu finden und ein attraktives Arbeitsumfeld zu schaffen, um sie zu behalten.

mcottle
quelle
3
Ich würde "Experienced" mit "Good" in Ihrem tl tauschen, aus den Gründen, die Sie direkt darüber hervorheben. Es ist durchaus möglich (aber immer noch schwierig), gute Programmierer mit relativ wenig oder keiner Berufserfahrung zu finden. Ich gebe jedoch zu, dass die Erschließung des Potenzials dieser Entwickler Pflege erfordert, und es ist sehr wahrscheinlich, dass das Unternehmen des OP keine geeignete Kultur dafür hat. Ein Vorteil eines großartigen Programmierers besteht darin, dass er ein Vorbild für gute Verhaltensweisen und Praktiken ist und sich von der Mittelmäßigkeit abhebt.
Derek Elkins
1
@Derek Elkins - Guter Vorschlag, fertig. Stimmen Sie Ihrem zweiten Punkt zu. Bei einem Job war ich äußerst knapp im Budget und schaffte es dennoch, ein sehr gutes Team aus einem erfahrenen etablierten Programmierer und drei sehr jungen Programmierern (keine Abschlüsse, sehr wenig Erfahrung) als Neueinstellungen zusammenzustellen - eine davon war besonders außergewöhnlich. Aber ich habe viel Geld "ausgegeben", um einige deprimierend schlechte Lebensläufe durchzugehen, bevor ich sie gefunden habe, und mehr Zeit / Geld, um sie selbst zu trainieren, indem ich kleine Aufgaben auf die richtige Ebene stellte und sie ihre Lösungen besitzen und ihre Erfolge feiern ließ.
Mcottle
Ja, meine Erfahrung ist ähnlich, obwohl ich bedrückend schlechte Junior-Lebensläufe viel weniger bedrückend finde als ein Interview mit einem "Senior" -Entwickler mit 15 Jahren SQL-Erfahrung, der nicht weiß, was ein Outer Join ist. Es gibt jedoch einige Belohnungen für die Schulungskosten in Bezug auf Unternehmensfitness, Loyalität, allgemein verbesserte Moral und ehrlich gesagt, wenn sie erst einmal trainiert sind, sind sie wahrscheinlich besser und billiger als ein "typischer" Senior-Entwickler. Es ist auf jeden Fall eine Investition, und die Zeit bis zur Auszahlung kann oft zu lang sein, um nützlich zu sein, selbst wenn es sonst ein Nettogewinn wäre.
Derek Elkins
Großartiger Beitrag +1. Ich möchte nur den Vorbehalt hinzufügen, dass die Lieferzeit ein sehr stumpfes Instrument zur Beurteilung der Entwicklerqualität ist. Wir hatten einen "Superstar" -Auftragnehmer, der anfangs aufgrund seiner Entwicklungsgeschwindigkeit sehr gefragt war. Sobald die Leute versuchten, seine Sachen abzuholen, lösten sich die Räder bald - Hacks, harte Codierung, monolithischer Code, fehlende Unit-Tests - er wurde bald nach Eile zum Packen geschickt ...
Robbie Dee
Darüber hinaus verbringen Premium-Entwickler viel weniger Zeit mit dem Programmieren als ihre Junior-Entwickler, da sie dringend Hilfe benötigen, um anderen zu helfen, Code-Überprüfungen, Architektur, Entwickler, Brown-Bag-Sitzungen, Workshops, Schulungen usw.
Robbie Dee
19

Wenn Sie umfangreiche Leistungsstatistiken haben, können Sie den Business Case mit Mathe erstellen. Dies könnte zeigen, dass die Entwicklungsgeschwindigkeit den Preisanstieg kompensieren würde, oder noch besser, dass ein robustes Design mehr Wartung und Entwicklung nachfolgender Versionen einsparen könnte. Leider sind solche Zahlen nicht so häufig verfügbar - insbesondere für neuere Technologien.

Ein weiteres Argument kann Time-to-Market sein. Dies wird vom oberen Management leichter verstanden. Wenn die Zeit jedoch nicht wirklich kritisch ist, hilft dies nicht.

In letzter Instanz finden Sie ein Bild von Red Adair , dem berühmten Feuerwehrmann, der nach mehreren erfolglosen Versuchen weniger erfahrener Männer in eine Katastrophe verwickelt wurde. Sein berühmtes Zitat:

Wenn Sie der Meinung sind, dass die Einstellung eines Profis teuer ist, warten Sie, bis Sie einen Amateur eingestellt haben.

... verdient es, in Farbe gedruckt und prominent an Ihrer Bürotür angebracht zu werden, damit jeder versteht, worum es geht ;-)

Christophe
quelle
Ich denke, dies ist die beste Antwort, die ich je gesehen habe, und da es bereits viele Antworten gibt, möchte ich hinzufügen, dass der Wert eines erfahrenen professionellen Entwicklers darin besteht, nicht dieselbe sich wiederholende Sache mit weniger Fehlern zu machen. Die Idee ist, jemanden zu finden, der sich wiederholende Arbeit eliminieren und die Abstraktionsstufe erhöhen kann und Junior-Teammitglieder betreut und anleitet. Wir brauchen eine stärkere Mischung aus Senioren und Junioren in der Entwicklung, um aus dem ständigen Recycling von alten schlechten Ideen herauszukommen, die auf lange Sicht nicht funktionieren.
JimmyJames
Ich denke, die Suche nach einfach zusammenstellbaren Statistiken zur Beurteilung der Entwicklerqualität wurde vor langer Zeit abgebrochen, sei es Codezeilen, Anzahl der Fehler, zyklomatische Komplexität, Codeabdeckung oder was auch immer. Die goldene Gans ist ein Prädiktor für die richtige Mischung von Entwicklern, die zu den geringsten Kosten zusammengestellt werden können, um ein Produkt zu produzieren, das gut genug ist.
Robbie Dee
@RobbieDee Es braucht kein perfektes Modell: nur einen pragmatischen Ansatz. Wenn Sie beispielsweise die Story Points, die den Entwicklungsaufgaben, der Implementierungszeit und dem Dienstalter des verantwortlichen Entwicklers entsprechen, systematisch schätzen, werden Sie im Laufe der Zeit sehr interessante Durchschnittswerte sammeln. Natürlich sind diese Statistiken nur für die Schätzung ähnlicher Aktivitäten mit derselben Technologie relevant. Und sie sind nur Durchschnittswerte und keine Kristallschale. Möglicherweise erhalten Sie jedoch Daten, die helfen, den Trend aufzuzeigen und die Preisrelationen für das Dienstalter zu rechtfertigen.
Christophe
@Christophe Story-Punkte dienen zum Vergleichen der Komplexität einer Aufgabe mit einer anderen - sie sind nicht zum Messen der Zeit gedacht, obwohl sie auf diese Weise massiv missbraucht werden (2 Punkte = 1 Tag usw.).
Robbie Dee
@RobbieDee Das ist mein Punkt: Wenn Sie Leistungsstatistiken möchten, müssen Sie die Leistungszeit und die Komplexität der Aufgaben vergleichen. Die Schwierigkeit besteht darin, eine genaue Bewertung der Komplexität zu erhalten. Der stat ist in der Praxis nur machbar, wenn Sie eine Annäherung leicht erhalten können. Wenn FP verwendet wird, ist es sehr genau. Die FP-Evaluierung ist jedoch zeitaufwändig und nicht sehr agil. Story Points sind weniger objektiv, aber einfacher zu bekommen. Sie haben natürlich Recht: Sie müssen die Skala linearisieren, wenn Sie Mittelwerte bilden möchten. Im Projektmanagement wird dieser Ansatz als "parametrisches Schätzen" bezeichnet.
Christophe
10

Ich mag die Antwort von mcottle und habe sie positiv bewertet, aber ich möchte einige andere Dynamiken und Argumente behandeln, die die anderen Antworten noch nicht hervorgebracht haben.

Erstens impliziert die Antwort von mcottle die Tatsache, dass einige Probleme unterhalb einer bestimmten Fähigkeitsstufe einfach unmöglich sind. Die Art und Weise, wie Sie dies herausfinden, liegt leider daran, dass Ihr Team versucht und versagt, was sehr schwierig istteuer. Nach dem Scheitern gibt es zwei mögliche Lektionen, um daraus zu lernen. Eine Möglichkeit besteht darin, dass Sie feststellen, dass Sie kompetentere Entwickler benötigen, diese einstellen und das Projekt deutlich über das Budget und den Zeitplan hinaus abschließen. Sie sind jedoch zumindest für die Zukunft vorbereitet. Die andere Möglichkeit ist, dass ein solches Projekt für Ihr Team "zu schwer" ist und solche Dinge in Zukunft nicht mehr versucht werden sollten, dh Sie geben das Projekt und praktisch alle ähnlichen Projekte auf. Natürlich wird es selten so formuliert: "Wir sind zu dumm, um das zu tun", sondern es wird rationalisiert: "Unsere Systeme sind sehr komplex" oder "Wir haben viel Legacy-Code" oder einige andere. Diese letztgenannte Sichtweise kann die Sichtweise eines Unternehmens in Bezug auf die Möglichkeiten und die Dauer und die Kosten einer Entwicklung erheblich beeinträchtigen. "

Eine Frage ist, was genau ist Ihr Unternehmensplan? Okay, sie werden billige Nachwuchsprogrammierer einstellen. Drei Jahre vergehen, was nun? Was machen sie mit Entwicklern, die in diesen drei Jahren bei ihnen waren? Haben sie ihm / ihr nie eine Gehaltserhöhung gegeben? Folgende Optionen stehen hier zur Verfügung:

  • Sie erhöhen wettbewerbsfähig, um Mitarbeiter zu binden. In welchem ​​Fall könnten sie Probleme haben, jetzt Senior Developer-Raten zu zahlen? Ich werde jedoch darauf zurückkommen.
  • Sie haben stagnierende Raten, was bedeutet, dass sie sich irgendwann auf Mitarbeiter "reduzieren" werden, denen es an Antrieb und / oder Geschicklichkeit mangelt.
  • Sie entfernen aktiver mehr leitende Angestellte.

Die beiden zweiten Fälle bedeuten einen hohen Umsatz der Mitarbeiter, was zu einem Verlust des Unternehmenswissens und zu einer kontinuierlichen Ausweitung der Zahlungen an die Mitarbeiter führt. Im zweiten Fall wählen Sie im Wesentlichen schlechte Entwickler aus, sodass die Kosten in Form von zunehmenden Zeitplänen steigen. Die Art und Weise, wie dies ablaufen wird, ist, dass auf Projekt X alles gut läuft, bis Jim plötzlich geht, der einer der besseren Entwickler war, weil er seit zwei Jahren keine Gehaltserhöhung mehr erhalten hat. Jetzt wird das Projekt "verständlicherweise" deutlich länger dauern als Sie müssen neue Nachwuchsentwickler einstellen und ausbilden, die (vermutlich) nicht so gut sind wie Jim. So kalibrieren Sie Ihre Erwartungen neu.

Wenn Sie nur Junior-Entwickler haben, wo und wie sollen sie lernen, selbst wenn es um wettbewerbsfähige Erhöhungen geht? Sie hoffen im Grunde, dass einer von ihnen trotz seiner Arbeitsumgebung selbständig gute Praktiken lernt und letztendlich andere betreut (im Gegensatz dazu, dass er auf grünere Weiden geht). Es wäre viel sinnvoller, die Pumpe mit einigen guten Entwicklern zu "entlüften". Wahrscheinlicher ist, dass Sie eine Kultur erfahrener Anfänger entwickeln . Das Ergebnis ist, dass Sie Senior-Entwickler-Raten an Personen zahlen, die nur geringfügig besser sind als Junior-Entwickler und kulturell toxisch.

Ein Vorteil, vor allem, sehr guter Entwickler, dass ich überrascht sonst niemand erwähnt hat , ist sie leicht sein , kann Multiplikationsfaktor. Es kann durchaus vorkommen, dass sich ein Junior-Entwickler und ein Senior-Entwickler die gleiche Zeit nehmen, um einen Tisch zu erstellen. Ein guter Entwickler wird das jedoch nicht tun. Sie werden einen Tabellengenerator erstellen, der die Zeit für alle reduziert , um eine Tabelle zu erstellen. Alternativ / zusätzlich erhöhen sie die Obergrenze dessen, was für alle möglich ist . Zum Beispiel waren die Entwickler, die das MapReduce-Framework von Google implementiert haben, wahrscheinlich äußerst qualifiziert, selbst wenn die Benutzervon MapReduce sind absolut nicht in der Lage, selbst eine massiv verteilte Version ihres Algorithmus zu erstellen, was mit MapReduce jetzt problemlos möglich ist. Oft ist diese Dynamik weniger offensichtlich. Bessere Methoden für die Quellcodeverwaltung, das Testen und die Bereitstellung verbessern beispielsweise alle Beteiligten. Es kann jedoch schwieriger sein, die Zuordnung zu einer bestimmten Person zu finden.

Um ein bisschen über die andere Seite zu streiten, sind die Höheren vielleicht richtig. Möglicherweise sind erfahrenere Entwickler nicht erforderlich. In diesem Fall scheint die Entwicklung jedoch kein wesentlicher Bestandteil des Unternehmens zu sein. In diesem Fall würde ich Entwickler einfach komplett eliminieren und auf Anfrage Standard-Software verwenden oder Auftragnehmer einstellen. Es könnte sich lohnen, zu untersuchen, warum nicht nur Auftragnehmer, sondern ein internes Team hinzugezogen werden. Wenn Sie ohnehin eine Menge Abwanderung von Mitarbeitern haben, sollte es kein Problem sein, Fremdfirmen hochzufahren.

Derek Elkins
quelle
Der Auftragnehmer könnte eine sehr brauchbare Antwort auf dieses OP sein, wenn er die Fähigkeiten eines Senioren benötigt, sich aber kein ganzjähriges Vollzeitgehalt von einem leisten kann. Finden Sie ein lokales Vertragsunternehmen, das vertrauenswürdig ist. Ich würde sagen, die Idee des Auftragnehmers sollte zu einer eigenen Antwort erweitert werden.
Rwong
6

Dies ist keine Entweder-Oder-Situation.

Vor allem bei einem größeren Projekt haben Sie regelmäßig ein paar relativ erfahrene Mitarbeiter in Führungspositionen und einige weniger erfahrene Mitarbeiter in Führungspositionen. Auf diese Weise können die Senioren nicht nur direkt am Projekt mitarbeiten, indem sie Code schreiben und die schwierigeren Entscheidungen treffen, sondern sie können auch indirekt mithelfen, indem sie die Junioren betreuen.

Mit etwas Sorgfalt kann dies auch dazu beitragen, dass die leitenden Ingenieure nicht schnell ausbrennen, da sie ständig aufgefordert werden, Arbeiten auszuführen, die für sie keine Herausforderung oder kein Interesse darstellen. Zumindest meiner Erfahrung nach kann ein Sprint viel interessanter werden, wenn man einige begeisterte Nachwuchskräfte (oder sogar Praktikanten) betreut.

Fairerweise sollte ich hinzufügen, dass diese Art von Position wahrscheinlich nicht für alle leitenden Ingenieure geeignet ist. Es erfordert ein stark erhöhtes Augenmerk auf Architektur und Design, Kommunikation, Dokumentation und so weiter. Besonders früh erfordert es häufig auch viel Disziplin - für jemanden, der Karriere als Programmierer gemacht hat, ist es verlockend, einfach nur in den Code einzusteigen, anstatt einen Junior-Ingenieur zu unterrichten, wie man das macht. Es ist auch häufig verlockend, ein vollständiges Neuschreiben von Grund auf durchzuführen, wenn Code nicht so ist, wie Sie es persönlich bevorzugen - auch wenn er für den Job vollkommen ausreichend ist.

Wenn jedoch, kann man wirklich nicht das Management überzeugt mit einer Mischung aus Erfahrungsstufen zu gehen, gibt es im Grunde gar keine Frage , dass Sie haben , um weitere Erfahrung zu gehen. Wenn Sie ein Projekt ausschließlich dem Nachwuchs überlassen, stehen die Chancen gut, dass Sie nie ein brauchbares Produkt erhalten. Schlimmer noch, sie werden nicht bemerken, dass das, was sie tun, keinen wirklichen Fortschritt in Richtung eines brauchbaren Produkts bringt. Sie werden also in einer bestimmten Richtung weiterarbeiten, lange nachdem eine erfahrenere Person erkannt hätte, dass sie ein Produkt hergestellt hat Frühzeitig ein grundlegender Fehler, der es erforderlich macht, sich zu sichern, neu zu gruppieren, sich zu orientieren und eine neue Richtung einzuschlagen, um die Hoffnung zu haben, ein sinnvolles Ziel zu erreichen.

Jerry Sarg
quelle
5

Jedes reale Projekt wird von der Kundennachfrage bestimmt und beinhaltet daher Aufgaben mit geringer Komplexität (z. B. Erstellen von CRUD-Formularen) und hoher Komplexität (z. B. Erstellen eines ereignisgesteuerten Benachrichtigungssystems). Die einzige Möglichkeit, Aufgaben mit geringer Komplexität auszuführen, besteht darin, den Kunden wiederholt das Wort "Nein" zu sagen, zu dem keine Vertriebsabteilung bereit ist, von der ich jemals gehört habe.

Wenn Sie nur Junior-Entwickler haben, bedeutet dies, dass Sie nur die Aufgaben mit geringer Komplexität ausführen können und daher nur ein Produkt mit geringem Wert entwickeln und auf dem Markt härter darum kämpfen können, Ihre Produkte zu differenzieren. Wenn Sie differenzieren möchten, müssen Sie eine hochwertige Funktionalität erstellen, die sich zwangsläufig in hochkomplexen Aufgaben niederschlägt. Wenn es einfach wäre, wäre es schließlich nicht wertvoll. Das heißt, Sie brauchen Mitarbeiter, die diese hochkomplexen Aufgaben ausführen, und Sie brauchen leitende Entwickler.

Wenn Sie nur hochrangige Entwickler haben, verschwenden Sie ihre Fähigkeiten auf minderwertige Arbeit, haben Probleme, sie zu behalten, wenn Sie sie zu dieser Arbeit zwingen, und riskieren, dass sie in das Land der Architekturastronomie aufbrechen, um einfachere Aufgaben zu erledigen interessant zu arbeiten. Dies bedeutet, dass Sie auch einige unerfahrene Entwickler benötigen, um diese Aufgaben zu erledigen.

Ein gesundes Team, das an kundenorientierten Produkten arbeitet, ist normalerweise eine Mischung. Das Verhältnis zwischen Junior- und Senior-Entwicklern hängt vom Verhältnis zwischen Aufgaben mit geringer und hoher Komplexität ab und hängt von Ihrer Geschäftsstrategie ab. Wenn Sie aktiv nach großen Mengen leicht verständlicher Cookie-Cutter-Arbeiten mit geringen Gewinnspannen suchen, werden Sie nicht viele hochkomplexe Aufgaben haben und wahrscheinlich hauptsächlich Junior-Entwickler einstellen. Wenn Sie aktiv versuchen, unterversorgte Nischen mit höheren Gewinnspannen zu differenzieren und anzuvisieren, haben Sie viele hochkomplexe Aufgaben und suchen meistens hochrangige Entwickler.

Joeri Sebrechts
quelle
3

In meiner Antwort behaupte ich, dass erfahrene Programmierer nicht unbedingt schneller programmieren als junge Entwickler. Tatsächlich sind die schnellsten Programmierer im Durchschnitt Leute, die gerade die Universität verlassen haben.

Domain-Wissen ist ein Schlüssel zum Senior-Entwickler. Ein guter Senior-Entwickler sollte über fundierte Fachkenntnisse verfügen, über die Junior-Entwickler möglicherweise nicht verfügen. Erfahrene Entwickler verstehen das Problem, was zu lösen ist und wie es zu lösen ist. Sie können kompliziertere Probleme für das Unternehmen lösen als die meisten Nachwuchsentwickler.

Das Programmieren ist relativ billig, es ist das Expertenwissen, das zählt.

Kleinschach
quelle
2

Versuchen Sie nicht, "den Fall zu machen". Der Markt bestimmt den Preis für die Mitarbeiter. Wenn der Markt bereit ist, viermal mehr für Erfahrung zu zahlen, dann liegt es daran, dass die Unternehmen insgesamt festgestellt haben, dass es eine vierfache Produktivitätssteigerung gibt.

Jetzt könnte der Markt natürlich falsch liegen, vielleicht 3,5 oder 5x, aber es sei denn, Sie sind eine digitale Agentur, treten gegen den Markt an oder solche Nuancen sind unwichtig.

Ihr eigentliches Problem ist: Sind Sie in Interviews gut genug, um zwischen einem guten erfahrenen Entwickler und einem alten Entwickler zu unterscheiden, der es übertreibt?

Deine zweite Frage von PM vs. Entwicklerbudget. Ich würde sagen, dass ein Entwickler auf eine PM verzichten kann, aber eine PM kann nicht auf einen Entwickler verzichten. Lassen Sie Ihre Entwicklungsmaschine zuerst sortieren, und holen Sie sich dann eine PM, um den Administrator aus ihren Händen zu nehmen.

Ewan
quelle
Obwohl dies im wirtschaftlichen Sinne richtig sein könnte, könnten die Märkte in abgelegenen Gebieten, z. B. Kleinstädten und ländlichen Gebieten, sehr verzerrt sein. Universitätsstädte könnten besser sein.
Rwong
stimmt, aber Ihr Geschäft ist an einem Ort.
Ewan
2

Sie werden für ein Viertel der Kosten eines wirklich guten Entwicklers niemanden in Ihrem eigenen Land finden. Vielleicht finden Sie jemanden für die Hälfte des Gehalts, und das wird ein absoluter Anfänger sein. Für jemanden mit einem Viertel des Gehalts müssen Sie ins Ausland gehen, und dann haben Sie Probleme mit der Kommunikation, mit Menschen, die sich blindlings an die Vorgaben halten, und mit allen Arten von Problemen.

Sie brauchen einen guten Entwickler. Wenn Sie mehr Junior-Programmierer hinzufügen, benötigen Sie einen guten Entwickler mit ausgeprägten Kommunikationsfähigkeiten, der bereit und in der Lage ist, die Junioren im Auge zu behalten. Ohne einen guten Entwickler sind Sie verloren. Sie können glücklich sein, einen außergewöhnlich talentierten Anfänger zu finden, aber sobald er oder sie herausfindet, dass sie gut sind, werden sie ein höheres Gehalt wollen.

Wenn Sie keinen guten Entwickler haben, haben Sie niemanden, der das Gesamtbild sieht, und niemanden, der Probleme lösen kann, die nicht mit Stackoverflow gelöst werden können. Und Sie werden Code haben, der stinkt und nicht mehr zu warten ist, da Junior-Entwickler nicht wissen, wie man wartbaren Code erstellt. Sie können es lernen, aber sie werden es nicht ohne einen guten Entwickler im Team tun.

gnasher729
quelle
1

Es gibt ein paar Hürden, die Ihr Unternehmen überwinden muss, bevor Sie entscheiden können, ob die Einstellung besserer Programmierer kostengünstig ist. Es tut mir leid, wenn ich negative Annahmen darüber mache, wo Sie arbeiten, aber ich bin nicht überzeugt, dass sie wissen, was sie tun.

  1. Haben sie genau eingeschätzt, wie komplex die von Ihnen erstellte Software ist? Es hört sich so an, als würden sie nicht glauben, dass Ihre Arbeit sehr schwierig ist. Warum also bessere Leute einstellen? Haben Sie den Fall durchlaufen, in dem Fehler gemacht werden und wie bessere Lösungen und Produktivität Geld verdienen würden? Zeit sparen ist großartig, aber viele Unternehmen würden lieber eine ganze Woche Zeit für einen Programmierer verschwenden, als ihnen das Geld für den Kauf eines Mauspads zu geben.
  2. Ist Ihr Unternehmen für gute Programmierer attraktiv? Können sie sie identifizieren? Es gibt nichts Schlimmeres, als einen Senior-Entwickler einzustellen, mehr Geld dafür zu bezahlen und das gesamte Team wegen mangelnder Fähigkeiten und / oder mangelnder Führung zu unterdrücken.
  3. Kann Ihr Unternehmen einen guten Programmierer einsetzen? Wenn sie nur beschissene Brillen nach ihnen werfen und ihnen sagen sollen, dass sie es einfach bauen sollen, worum geht es dann? Werden sie ihnen die Freiheit geben, die Dinge auf ihre Weise zu tun? Schließlich weiß eine gute Programmiererin per Definition, wie sie ihre Zeit besser nutzen kann. Sie wirken sich auf die Menschen in ihrer Umgebung aus und bewirken, dass sich andere Programmierer verbessern. Sie führen bessere Designs und Architekturen ein, auf denen der Rest aufbaut, um das Produkt so viel besser zu machen.

Tut mir leid, aber ich habe das Gefühl, dass Ihr Unternehmen nicht weiß, was es mit einem guten Programmierer anfangen soll. Sie möchten ihn vielleicht davon überzeugen, zuerst bessere Manager einzustellen und diese internen Probleme zu lösen.

JeffO
quelle