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.
Antworten:
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.
quelle
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.
quelle
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).
quelle
Tu es nicht.
Noch.
Traditionelle Ansicht
In Ihrer Frage beziehen Sie sich auf Brooks 'Gesetz aus Mythical Man-Month .
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:
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).
quelle
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:
quelle
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.
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.
quelle
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.
quelle
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.)
quelle
Es gibt verschiedene Möglichkeiten, die ich untersuchen möchte:
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.
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.
quelle
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.
quelle