So fügen Sie dem Team einen neuen Entwickler hinzu

24

Ich leite eine kleine Firma, die nur aus 2 Entwicklern besteht. Wir erstellen eine sehr große Anwendung für einen unserer Kunden. Die Entwicklung dieses Projekts dauerte 1,5 Jahre.

Jetzt hat sich dieser Kunde ein wichtiges Sponsoring gesichert und organisiert Veranstaltungen im Zusammenhang mit diesem Projekt. Jetzt haben wir eine Frist von 2 Monaten und wir können sie nicht verfehlen.

Wir denken darüber nach, dem Team einen neuen Entwickler hinzuzufügen, und ich frage mich, was wir tun können, um seine Integration zu unterstützen.

Das ist die Situation:

  • Wir nähern uns der Schwelle des Brooks-Gesetzes - der Punkt, an dem neue Entwickler hinzugefügt werden, wird kontraproduktiv sein.
  • Die Anwendung ist relativ gut gestaltet, aber die Implementierung ist in einigen Punkten (insbesondere bei älterem Code) chaotisch.
  • Es gibt Unit-Tests nur für neueren Code. Zu Beginn dieses Projekts haben wir keine regelmäßigen Tests durchgeführt.
  • Dokumentation und Kommentare sind unvollständig.
  • Die Anwendung ist sowohl groß als auch komplex.
  • Der Kunde hat fast jedes Detail seines Projekts sehr klar und "programmiererfreundlich" aufgeschrieben.

Ist es eine gute Idee, jetzt eine Person hinzuzufügen? Wenn ja, was können wir tun, um den neuen Entwickler bei der Integration in das Team zu unterstützen?

BEARBEITEN:

Der Sponsor organisiert für das nächste Frühjahr eine internetbasierte Sportveranstaltung. Es muss an einem bestimmten Tag des Jahres beginnen. Wir können es nicht ändern.

Was wir Entwickler (ich bin einer der beiden) tun müssen, ist:

  • Fertigstellung der bestehenden Bewerbung (ca. 25% der zu erledigenden Arbeit).

  • Erstellen eines neuen Moduls, das für die Organisation dieser Veranstaltung unerlässlich ist (ca. 75% der zu erledigenden Arbeit). Dieses neue Modul kann nicht entwickelt werden, ohne die API des Hauptprogramms zu verstehen.

Ich kann keine genaue Zeitschätzung vornehmen, aber wir befinden uns in einer riskanten Situation.

lortabac
quelle
11
Sie befinden sich nicht an der Schwelle des Bachgesetzes, das vor über einem Jahr verabschiedet wurde.
Ryathal
3
Sie haben kein Wort darüber geschrieben, welches Ziel Sie für diese Frist haben. Einige für diesen Sponsor spezifische Funktionen hinzufügen? Machen Sie eine Produktpräsentation für die Veranstaltungen? Installationspaket erstellen? Einige der wichtigsten Probleme beheben? Welche Probleme können Sie mit Ihrem derzeitigen Team nicht lösen?
Doc Brown
Wie viel Zeit brauchen die beiden Entwickler für sich alleine? 3 Monate (2 Entwickler * 3 Monate entsprechen 3 Entwickler * 2 Monate)?
scarfridge
@DocBrown Ich habe der Frage weitere Details hinzugefügt. Ich hoffe es ist jetzt klarer.
Lortabac
"Dokumentation und Kommentare sind unvollständig" ... "Der Kunde hat fast jedes Detail seines Projekts auf eine sehr übersichtliche und" programmiererfreundliche "Art und Weise niedergeschrieben." Lassen Sie den neuen Mitarbeiter die Schriften des Kunden in die Konstruktionsdokumentation übersetzen und dann "Es gibt Komponententests nur für neueren Code. Als dieses Projekt begann, haben wir keine regelmäßigen Tests durchgeführt". Lassen Sie ihn Tests schreiben und ausführen. Er wird nicht in die Quere kommen und zum Projekt
beitragen

Antworten:

24

Das Beste, was Sie tun können, ist, den neuen Entwickler nicht ins Feuer zu werfen, sondern einige Funktionen und / oder Fehlerbehebungen zu finden, bei denen der Entwickler keine Probleme haben sollte. Suchen Sie sich einen Bereich, in dem Arbeit erforderlich ist, ohne dass eine Person gleichzeitig die gesamte Architektur, die Anforderungen und die Codebasis kennen muss. Vielleicht soll er oder sie an der Dokumentation arbeiten, um das System schneller zu erlernen.

Nik
quelle
Das Hinzufügen von Unittests für den alten Code und das Beheben von Fehlern sind einige Ideen, die der neue Entwickler tun könnte - natürlich mit Unterstützung und Codeüberprüfungen durch die anderen. Möglicherweise ist ein automatisierter UI-Test erforderlich? Das ist auch etwas, was der neue Entwickler tun und viel über die Anwendung lernen könnte.
Hans-Peter Störr,
18

Anstatt dem Team einen neuen Entwickler hinzuzufügen, sollten Sie einen erfahrenen Berater für den Zeitraum von zwei bis drei Monaten hinzufügen, um die vorübergehende Zunahme der Arbeitslast Ihres Unternehmens zu bewältigen. Die Idee ist, jemanden zu finden, der die Startzeit nahe Null bewältigt, aber gleichzeitig nicht unbedingt die beste Ergänzung für Ihr Team ist.

Auch wenn Sie der Meinung sind, dass die Zunahme der Arbeitsbelastung nicht vorübergehend ist, ist jetzt wahrscheinlich nicht der beste Zeitpunkt, um Ihr Team organisch zu vergrößern: Das Hinzufügen eines dritten Entwicklers ist für ein Team eine stressige Angelegenheit, auch wenn der Projekttermin noch nicht feststeht. Eine knappe Frist macht den Übergang nur noch schlimmer.

Der Nachteil ist, dass Sie im Gegenzug für eine vorübergehende Hilfe Code von einem Außenstehenden schreiben lassen. Um dieses Risiko zu minimieren, stellen Sie sicher, dass Sie beide alle Codeüberprüfungen mit ihm durchführen. Stellen Sie sicher, dass Sie auch alle seine Unit-Tests überprüfen und verstehen.

dasblinkenlight
quelle
5
Es kommt darauf an, wie weit sie zurückliegen. Der Berater wird mehr kosten und das Wissen mitnehmen, wenn er geht. Es ist wahrscheinlich auch ein Wunsch, jemanden zu finden, der eine Startzeit nahe Null benötigt.
Nik
1
@Nik Ich stimme zu, höhere Kosten sind definitiv ein Kompromiss; So fließt das Wissen aus dem Projekt ab. Es ist schwierig, eine Person zu finden, die sich dem Nullpunkt nähert, vor allem kurzfristig, aber ich habe es bei mehreren zeitkritischen Projekten gesehen. Die Kosten für die Anmietung waren jedoch recht hoch.
dasblinkenlight
Ich werde etwas recherchieren, aber ein erfahrener Berater ist in meinem Bereich möglicherweise schwer zu finden. Denkst du, es wäre möglich, mit jemandem aus einer anderen Stadt zu arbeiten? Oder würde Distanz den Prozess weiter verlangsamen?
Lortabac
3
Ich denke, Brooks Gesetz gilt auch für erfahrene Berater, daher denke ich nicht, dass dies eine echte Lösung für das Problem sein wird.
Doc Brown
@lortabac Wenn Sie jemanden hinzufügen, der aus der Ferne mit Ihnen zusammenarbeitet, verlangsamt sich dies sehr wahrscheinlich. Wie flexibel können die Sponsoren die Anforderungen für das Zusatzmodul kürzen? Möglicherweise möchten Sie sie bitten, die neuen Funktionen in der Reihenfolge ihrer Wichtigkeit zu sortieren und zu entscheiden, was das absolute Minimum der Anforderungen ist, die Sie implementieren müssen, damit das Ereignis einen Sinn ergibt. Wenn Sie keinen "Feuerwehrmann" vor Ort bekommen können, ist die Reduzierung des Anwendungsbereichs möglicherweise ein guter Notfallplan für Sie.
dasblinkenlight
14

Ist es eine gute Idee, jetzt eine Person hinzuzufügen?

Nein. Versuchen Sie, wenn möglich, den Kunden dazu zu bewegen, den Umfang zu reduzieren.

Wenn Sie eine Person so spät hinzufügen, erhöht sich das Risiko erheblich, und die Frist kann nicht verlängert werden (soweit ich verstanden habe).

Buhb
quelle
4
+1. Trotz all der gutgemeinten, höher bewerteten anderen Vorschläge denke ich, dass dies höchstwahrscheinlich das einzige ist, was in einer solchen Situation wirklich funktionieren wird.
Doc Brown
Stimme voll und ganz zu. Wenn Sie noch zwei Monate Zeit haben und nur daran denken , jemanden einzustellen, werden Sie von einer neuen Anstellung nicht viel profitieren. Wenn Sie nicht das größte Glück haben oder bereits eine kompetente Person im Sinn haben, werden Sie entweder zwei Monate damit verschwenden, nachzuschauen (und Ihre eigene Produktivität zu beeinträchtigen) oder jemanden einzustellen, der die Situation nur noch verschlimmert. Beschleunigen Sie nicht Ihre Einstellung.
jmk
10

Tu es nicht.

Noch.

Traditionelle Ansicht

In Ihrer Frage beziehen Sie sich auf Brooks 'Gesetz aus Mythical Man-Month .

Das Hinzufügen von Arbeitskräften zu einem späten Softwareprojekt macht es später.

Brooks Gesetz zu ignorieren ist mit einem Preis verbunden. Multitasking nicht. Konzentrieren Sie sich auf die Lieferung Ihres Minimum Viable Product (MVP). Konzentrieren Sie sich dann auf die Rekrutierung, Beschaffung, Schulung und Verwaltung eines neuen Teammitglieds.

Zwei Monate sind so kurz. Planen Sie die Rekrutierung mit einer Burndown-Liste und Sie werden sehen, wie zeitaufwändig dies sein kann.

Larry Page und Sergei Brin haben zwei Jahre lang das erste Team für Google ausgewählt. Ihre Wahl für Mitarbeiter Nummer drei sollte auch eine sorgfältige sein.

Agile, New Millenium View

Wettbewerb treibt dynamisches Teaming mehr als in der Zeit, als der Mythische Mann-Monat geschrieben wurde (Mitte der 1960er Jahre). Lange Karrieren bei einem Unternehmen sind vorbei. Jetzt migrieren wir häufig zwischen Projekten und Unternehmen. Schnelle Teambildung schafft Erfolg. Langsames Hochfahren ist ein schwerwiegender begrenzender Faktor. Hervorragende Beispiele stammen aus Open Source-Projekten, Start-ups und dem verstärkten Einsatz von Teamprojekten in Informatikkursen.

Potenziell berücksichtigen agile Teams Einschränkungen in ihren Zeitplänen. Sie kommen nicht zu spät, weil sie auf die verfügbaren Ressourcen optimiert sind. Die Integration neuer Mitarbeiter ist eine weitere Einschränkung und wird als ein Kompromiss zwischen kurzfristigen und langfristigen Zielen angesehen. Das Agile-Team integriert ständig Code. Warum also nicht auch Menschen?

Die technische und soziale Integration eines agilen Teams für neue Mitarbeiter kann Folgendes nutzen:

  • Tägliches Gedränge
  • Paar-Programmierung
  • Refactoring
  • fehlende Komponententests hinzufügen
  • Lean-Dokumentation auf Vordermann bringen
  • Code-Überprüfungen

Das Opferlamm

In " Organisationsmuster agiler Softwareentwicklung" erörtert James Coplien die Gruppendynamik und die Kosten für das Hinzufügen neuer Teammitglieder. Sein Muster "Sacrificial Lamb" weist alle Mentoring- und Schulungsmaßnahmen einer Person zu und schützt den Rest des Teams vor Unterbrechungen.

Es ist eine Strategie, die Sie möglicherweise implementieren möchten.

Eine andere Strategie besteht darin, neue Mentoren einzustellen, die Fragen von Neueinstellungen für bestimmte Stunden pro Tag behandeln. Wenn Sie nur einen Mann übrig haben, arbeitet er vielleicht morgens oder nachmittags ohne Unterbrechung und beantwortet nachmittags bzw. vormittags Fragen. Die Gruppe, in der ich bin, hatte letzten Sommer zehn Praktikanten, so dass viele Leute viel unterbrochen wurden.

Derzeit wird das Mentoring von einer Person durchgeführt, hauptsächlich während und unmittelbar nach unserem Scrum am Morgen (8:30 Uhr bis 9:15 Uhr zusammen) und am Nachmittag zwischen 12 und 3:30 Uhr (er arbeitet von 7 bis 3:30 Uhr) pm).

DeveloperDon
quelle
Das Buch ist ein bisschen teuer, aber ich werde es mir ansehen.
Grün
Möglicherweise finden Sie Auszüge aus den Büchern, die ich online erwähnt habe, möglicherweise über Google-Bücher. Ich habe mir die Bücher Brooks und Coplien über meine örtliche Universitätsbibliothek ausgeliehen.
DeveloperDon
6

Ich bin erfreut, dass Sie Brooks Gesetz erwähnt haben. Schön gemacht. Das Hauptproblem beim Hinzufügen eines weiteren Entwicklers ist der Overhead, um diese auf den neuesten Stand zu bringen, und der Overhead, um den Status mit ihnen zu synchronisieren, damit Sie wissen, wo Sie sich im Projekt befinden. Wenn Sie sich also für einen dritten Entwickler entscheiden, würde ich Folgendes versuchen:

  • Geben Sie dem neuen Mitarbeiter einen Bereich, in dem die Kosten für das Up-to-Speed ​​gering sind und er so schnell wie möglich loslegen kann. Dies hängt stark davon ab, wen Sie einstellen und welche Fähigkeiten sie haben.
  • Stellen Sie sicher, dass dieser Bereich lose mit anderen Bereichen der Anwendung verbunden ist, damit der Synchronisationsaufwand geringer ist. Es kann zu viel sein, ihn zu einer intensiven Datenbankarbeit zu schicken und Tabellen neu zu organisieren.
  • Tu, was du kannst, um die Moral aufrechtzuerhalten. Wie andere angemerkt haben, kann das Hinzufügen eines neuen Teammitglieds stressig sein, sodass möglicherweise eine Investition in kohlensäurehaltige Getränke hilfreich sein kann.
Grün
quelle
Bestimmen Sie möglicherweise die Bereiche, in denen Arbeit erforderlich ist, und lassen Sie die neue Person zunächst Tests für vorhandenen Code schreiben, um ihr Verständnis des Systems zu verbessern, bevor sie Änderungen / Ergänzungen vornehmen.
StevenV
@StevenV das ist eine exzellente, exzellente Idee. Das Schreiben von Tests für Komponenten, die Sie nicht kennen, macht Sie sehr schnell mit ihnen vertraut. Und das System ist testbarer, wenn Sie fertig sind. :)
Green
5

Wenn Sie sich strikt an das Brooksche Gesetz halten, werden Sie Ihr Team wahrscheinlich nie vergrößern.

Der Trick besteht darin, die neue Person anzuwerben, ohne von einer zu starken Verlangsamung Ihres aktuellen Teams getroffen zu werden. Irgendwann wird die neue Person auf dem Laufenden sein, und Sie können den Buckel überwinden.

In Ihrem Fall? Ich würde empfehlen, dass die neue Person all diese fehlenden Komponententests schreibt.

  1. Diese werden dringend benötigt, um sich vor Regressionsfehlern zu schützen, die Sie schneller verbrennen als jede Brooks-Verlangsamung.
  2. Neue Person lernt die Eingeweide Ihres Systems. Es ist ein kleiner Versuch durch Feuer - aber ihre Ausgabe geht nicht in den Produktionscode, so wenig Risiko dort.
  3. Setzen Sie ein hartes Limit für die Zeit, die die anderen Teammitglieder in Anspruch nehmen können. Lassen Sie sie beispielsweise Fragen in die Warteschlange stellen und interagieren Sie täglich nur 30 Minuten mit anderen Teammitgliedern, bis die Frist eingehalten wird.

Seien wir ehrlich: Sie müssen den Umfang und die Kundenerwartungen verwalten, unabhängig davon, ob Sie eine neue Person einstellen oder nicht. Die Auszahlung erfolgt im nächsten Zyklus.

Ed Yourdon hatte einen tollen Kommentar zu Brooks Gesetz. Er sagte: Natürlich werden Sie langsamer, wenn Sie Leute hinzufügen - aber wenn ein Projekt in Gefahr ist, bringt das einzige Zeitmanagement neue Leute. Also: Nehmen Sie sie, minimieren Sie die Auswirkungen auf die aktuelle Version und beseitigen Sie schlechte Darsteller, sobald Sie können. Auf diese Weise können Sie im Laufe der Zeit ein starkes Team aufbauen.

Ralff
quelle
3

Wenn Sie Arbeit an anderen Projekten haben, die Sie ihm zur Verfügung stellen können, haben die beiden derzeitigen Entwickler Zeit, sich auf die großen Lieferfristen zu konzentrieren, die hilfreich sein könnten.

HLGEM
quelle
3

Sie sagen, Sie müssen 25% der ursprünglichen Arbeit plus neue Arbeit abschließen. UND Sie müssen dies in zwei Monaten erledigen - wenn Sie 18 Monate gebraucht haben, um 75% der Arbeit zu erledigen. Um ganz klar zu sein, bedeutet dies für mich, dass Ihre Einschätzungsfähigkeiten für einen Code-fokussierten Programmierer im Durchschnitt sind - das heißt, Sie glauben, dass die Dinge ungefähr ein halbes bis ein Drittel dauern werden, solange sie es tatsächlich tun.

Mit Heroics können Sie möglicherweise das Produkt liefern, für das Sie einen Vertrag abgeschlossen haben, aber es wird Ihnen oder Ihren Kunden keinen Gefallen tun. Unter diesen Bedingungen wird es schlampig und voller Käfer sein, und du wirst mit Dämpfen laufen.

Bedenken Sie, dass die Zeit, die Sie für die Einstellung aufwenden, auch einen großen Einfluss auf Ihre Verfügbarkeit hat. Dies können Sie nicht nur an einem Wochenende tun, sondern es braucht Zeit, um talentierte Mitarbeiter zu finden, die gut passen. Stellen Sie sich darauf ein, dass Sie mindestens ein paar Wochen mit Suchen, Befragungen usw. verbringen. Stellen Sie sich darauf ein, dass Sie und Ihr vorhandener Mitarbeiter bei der Suche pro Woche etwa 10 Stunden produktive Zeit verlieren.

Meine Empfehlung:

Setzen Sie sich mit Ihrem Kunden in Verbindung, erklären Sie, dass Sie über Ihrem Kopf sind, und arbeiten Sie mit ihm zusammen, um den Spielraum auf ein Minimum zu beschränken.

Bearbeiten Habe gerade das Datum hier gesehen. Wie ist es dazu gekommen? (Vielen Dank an Ars Technica für die Veröffentlichung einer drei Monate alten Frage.)

Marc Paradise
quelle
Einige Tage nachdem ich diese Frage gestellt hatte, verließ ich die Firma. Wie einige Kommentare zu Ars Technica richtig hervorhoben, gab es tiefere Probleme, die ich in der Frage nicht erwähnt habe. Ich wollte nur eine Meinung zu diesem speziellen Thema einholen.
Lortabac
2

Es gibt verschiedene Möglichkeiten, die ich untersuchen möchte:

  1. Warten Sie mit der Einstellung des neuen Entwicklers, bis die Frist abgelaufen ist, damit Sie sich leichter darauf konzentrieren können, das Domänenwissen an den neuen Entwickler weiterzugeben. Dies wäre meine Vorliebe, da es in mancher Hinsicht leicht herausfordernd sein könnte.

  2. Lassen Sie den neuen Entwickler an Dokumentationen, Komponententests und anderen Dingen arbeiten, die den vorhandenen Code nicht ändern. Dies würde ich vorschlagen, wenn Sie den neuen Mitarbeiter hinzuziehen, um die Auswirkungen auf die aktuelle Arbeitsbelastung so gering wie möglich zu halten.

JB King
quelle
2

Das Datum ist bereits vergangen, aber für jeden, der es später liest.

Der Schlüssel zu berücksichtigen ist, dass der Kunde in dieser Situation viel mehr zu verlieren hat als Sie. Sie haben bereits viel Geld ausgegeben, und es steht ein Schlüsselereignis an, das ihr Geschäft beeinflussen oder zunichte machen könnte. Sie haben bereits ihr Geld, und der Verlust eines einzelnen Kunden sollte Ihr Geschäft nicht beeinträchtigen. Wenn dies der Fall ist, haben Sie andere schwerwiegende geschäftliche Probleme, die über das schreckliche Projektmanagement hinausgehen.

Am besten verhandeln Sie eine wesentliche Teilmenge der Funktionen und machen dann Überstunden, um dies zu erreichen. Wenn Sie in dieser Situation keine kleinere Teilmenge realisieren können oder nicht bereit sind, Überstunden zu leisten, sollten Sie wahrscheinlich nicht im Geschäft sein. Dies kann bedeuten, dass andere Kunden in die Warteschleife gestellt werden. Ich nehme jedoch an, dass Ihre anderen Kunden 3 Mannjahre lang nicht bezahlt haben. Platzieren Sie Ihre Ressourcen also dort, wo das Geld ist.

Wenn sie nicht bereit sind, den Umfang herunter zu verhandeln, sind Sie zum Scheitern verurteilt.

Es gibt keine Chance, dieses Projekt innerhalb des Zeitrahmens vollständig zu liefern. Wenn Sie der Meinung sind, dass Sie 25% für ein Projekt übrig haben, dessen Fertigstellung bisher 18 Monate gedauert hat, haben Sie noch mindestens 6 Monate Zeit (von ~ 2 Entwicklern). Das Hinzufügen einer anderen Person wird dies nicht wesentlich ändern.

Wie bereits erwähnt, braucht die Rekrutierung Zeit. Meiner Erfahrung nach dauert dies mindestens einen Monat. Fügen Sie dann Training hinzu und Ihre Zeit ist abgelaufen.

Ich hoffe, das hat für Sie geklappt.

David Barton
quelle