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.