Agil werden
Ich würde folgendes vorschlagen:
Bearbeiten der gleichen Dateien
Verwenden Sie zunächst Git (oder ein ähnliches gleichzeitiges Versionsverwaltungssystem). Solange Sie verschiedene Teile derselben Dateien bearbeiten, treten keine Konflikte auf. Wenn Sie Konflikte haben, werden diese deutlich als solche gekennzeichnet.
Der Versuch, ein Projekt mit mehreren Entwicklern ohne Git zu verwalten, ist wie der Versuch, einen Pudding ohne Puddingschüssel herzustellen. Es ist möglich, aber es wird ziemlich schnell ziemlich chaotisch.
Wie bereits in den Kommentaren erwähnt, ist Git kein Allheilmittel, aber in Kombination mit automatisierten Tests hilft es sicherlich sehr.
Listen Sie alle Funktionen auf
Zweitens teilen Sie das Projekt in vom Benutzer sichtbare Funktionen auf. Zum Beispiel "Wenn sich der Benutzer anmeldet, sollte er eine E-Mail erhalten" oder "Der Benutzer kann einen Artikel hinzufügen". Beziehen Sie hier alle Stakeholder ein. Holen Sie sich alle in einen Raum, und lassen Sie alle ihre Funktionen ausrufen.
Dies sollten vom Benutzer sichtbare Funktionen sein. Sie können später über die Implementierungsstrategie sprechen.
Schreiben Sie alle Vorschläge auf Karteikarten, auch die dummen. Rationalisieren Sie die Liste schnell, um Duplikate zu entfernen, und legen Sie alle Karten auf einen großen Tisch oder sogar auf den Boden.
Fügen Sie zusätzliche Karten hinzu, die benötigt werden. Angenommen, Ihre Anwendung sendet SMS-Benachrichtigungen. Vielleicht wissen Sie nicht, wie Sie das machen sollen, also haben Sie eine Frage. Schreiben Sie "SMS-Portale untersuchen" auf eine Karte. Ebenso für alle anderen großen Unbekannten. Sie müssen diese später auspacken. Diese Funktionen schaffen es wahrscheinlich nicht in Ihren ersten Sprint.
Sortieren Sie nun Ihre Karten in Gruppen, mischen Sie sie umher und bekommen Sie ein Gefühl für sie. Dies ist Ihr Projektumfang.
Poker planen
Versuchen Sie einmal, Poker zu planen. Geben Sie allen Entwicklerkarten, auf denen "1 Punkt", "2 Punkte" usw. steht, bis zu "4 Punkte". Auch eine "mehr" Karte. Ein Punkt entspricht ungefähr einer Stunde.
Gehen Sie die Funktionsliste nacheinander durch. Beim Vorlesen einer Funktion muss jeder eine Karte spielen. Wenn eine Person 1 und eine andere Person 4 spielt, liegt ein Kommunikationsproblem vor. Eine Person versteht die Funktion als etwas anderes als die andere Person. Besprechen Sie, was eigentlich gemeint war, und vermerken Sie es auf der Karte.
Wenn Sie zustimmen, dass ein Feature ein "Mehr" ist, ist dieses Feature zu groß. Sie müssen diese Funktion auflösen. Tun Sie dies auf die gleiche Weise wie zuvor.
Wenn Sie einverstanden sind, schreiben Sie die Zahlen mit einem anderen Farbstift auf die Karten.
Punkte sind besser als Stunden
Die Verwendung von Punkten anstelle von Stunden nimmt den Macho, mit dem wir Entwickler häufig zu tun haben, außer Acht. Es ist ein subtiler Unterschied, aber ich habe festgestellt, dass es ziemlich gut funktioniert.
Jetzt komponiere einen Sprint
Ein Sprint ist ein schneller Ausbruch in Richtung eines Ziels. Entscheide dich für die Sprintlänge, vielleicht 5 oder 10 Tage. Multiplizieren Sie die Anzahl der Tage mit der Anzahl der Entwickler mit der Anzahl der Punkte pro Tag.
Nehmen Sie anfangs 6 Punkte pro Tag und Entwickler an. Dies ist eine erreichbare Zahl. Wenn Sie 5 Personen haben, sind das 5 * 5 * 6 = 150 Punkte. Wählen Sie in Zusammenarbeit mit allen Entwicklern und dem Management Features aus der Liste aus, bis zu 150 Punkte. Das ist dein Sprint.
Seien Sie niemals versucht, mehr hineinzudrücken, als passt. Zu vielversprechend verletzt auf lange Sicht alle, auch Sie.
Hier müssen Sie Abhängigkeiten berücksichtigen. Zum Beispiel muss das Setup der Umgebung natürlich im ersten Sprint enthalten sein. Dies ist eigentlich relativ einfach, wenn alle anwesend sind. Sie haben 6 Köpfe im Raum, die alle sagen "das hängt davon ab" usw. Sie können dann die Karten mischen, um Abhängigkeiten zu demonstrieren.
Sobald Sie Ihren Sprint haben, kann nichts hinzugefügt werden, er ist für die 5 Tage gesperrt. Feature Creep wird das Team belasten, die Moral schädigen und alle verlangsamen. Irgendwann wird Creep ein Projekt zum Stillstand bringen. Als Teamleiter müssen Sie Ihr Team vor unkontrolliertem Zugriff schützen. Wenn eine neue Funktionsanforderung eingeht, muss sie dem nächsten Sprint hinzugefügt werden. WENN der nächste Sprint schon voll ist, muss etwas anderes herausgenommen werden.
Seien Sie niemals versucht, Extras einzusammeln. Vielversprechend bedeutet, dass Sie ungefähr einen Tag zufriedener Kunden sind, gefolgt von 4 Tagen Teamstress und möglicherweise mehreren unglücklichen Kunden, wenn das Team nicht pünktlich liefert.
Nun gehe zu ihm.
Karten austeilen, fragen, wer was machen will. Sie haben volle Sicht auf das, was getan wird, und Sie können die Punkte zählen, die bis auf Null ablaufen. Machen Sie zu Beginn eines jeden Tages eine Pause, damit jeder weiß, wer an was arbeitet und was getan wurde.
5 oder 6 anständige, motivierte Entwickler, die als Einheit an klar definierten, verwaltbaren Zielen arbeiten, können in einem 5-Tage-Sprint eine ziemlich große Menge an Dingen erreichen.
Sichtbarkeit erhalten
Stellen Sie sicher, dass jeder den Status des Projekts sehen kann. Kleben Sie alle Karten an die Wand. Links sind Karten, an denen noch nicht gearbeitet wurde. Auf der rechten Seite sind Karten fertig.
Wenn ein Entwickler an einer Karte arbeitet, nimmt er sie von der Wand und legt sie auf den Schreibtisch. Dies erhält die Sicht und verhindert, dass Menschen zu sehr auf die Zehen treten.
Es gibt technologische Alternativen zu Karteikarten, aber nichts geht über eine massive Papieranzeige des Projektstatus an der Wand.
Wenn möglich, lassen Sie alle für die Dauer des Projekts im selben Raum. Nehmen Sie die Stakeholder möglichst täglich in Kontakt.
Abbrennen
In einem Burndown-Diagramm können Sie Ihre Punkte grafisch darstellen, die in Richtung Null gehen. Wenn Ihre Best-Fit-Linie Null überschreitet, bevor Sie Ihr Zeitlimit erreicht haben, sind Sie wahrscheinlich auf Kurs. Wenn nicht, müssen Sie Ihren Kunden jetzt informieren, bevor Sie sich der Frist zu sehr nähern.
Wenn Sie scheitern, scheitern Sie früh.
Sie können mit Software einen Burndown durchführen, aber ich bevorzuge nur ein großes Stück Papier an der Wand. Zeichne und schreibe darüber.
Automatisiertes Testen
Wenn mehrere Entwickler zur gleichen Zeit an denselben Dingen arbeiten, werden sie wahrscheinlich von Zeit zu Zeit den Code des anderen knacken. Kommunikation und Sichtbarkeit helfen dabei, aber Sie werden wahrscheinlich einige Technologien einführen wollen, um Probleme zu finden.
Unit-Tests sind das Schreiben von Tests für jeden einzelnen Teil Ihrer Codebasis (im Idealfall für jede Methode). Ihre Unit-Tests sollten häufig ausgeführt werden, wenn möglich mit jeder Speicherung. Es gibt viele Tools, die dabei helfen können, zum Beispiel Karma oder Rspec.
Beim End-to-End-Test wird Ihr Projekt als Ganzes getestet und die Interna als Black Box behandelt. Richten Sie diese Tests an Ihren geschäftlichen Anforderungen aus, z. B. "Der Benutzer kann sich anmelden" oder "Der Benutzer kann eine Liste mit Elementen anzeigen". Winkelmesser ist ein schönes Beispiel für ein End-to-End-Web-basiertes Testframework.
Es gibt ganze Bücher über Tests, aber wenn mindestens einige Abnahmetests vorhanden sind, kann dies dazu beitragen, dass bei der Arbeit an Ihrem Projekt nichts kaputt geht.
Technische Schulden vermeiden und fertig werden
Technische Schulden sind ein Konzept, das Dinge beschreibt, die später bereinigt werden müssen. Eine häufige Quelle für Schulden sind Merkmale, die als erledigt gekennzeichnet, aber niemals als erledigt gekennzeichnet wurden. Ein erledigtes Feature ist in Git eingecheckt, wurde vom Stakeholder genehmigt und hat einen Test.
Überprüfen Sie Ihre Funktionen erst, wenn sie fertig sind. Massieren Sie niemals die Grafik. Auch dies schmerzt auf lange Sicht alle, auch Sie.
Dies ist ein Grund, warum wir zunächst nur 6 Punkte pro Entwickler und Tag nennen. Erledigt kostet zusätzliche Arbeit, fühlt sich aber großartig an und gibt dem Team einen Schub.