Extreme Programmierung für einen einzelnen Entwickler [geschlossen]

10

Ich habe in den letzten zwei Wochen mit einigen grundlegenden extremen Programmierkonzepten gearbeitet, für ein kleines, gewinnorientiertes Multiplayer-Arcade-Spiel. Ich habe eine Woche damit verbracht, User Stories zu entwickeln und Anforderungen für die Erstellung eines Release-Plans zu ermitteln. Ich habe auch eine Woche damit verbracht, den ersten Iterationsplan zu programmieren und anzuwenden, den ich mir ausgedacht habe. Ich habe einige der offensichtlich nützlichen Konzepte für einen einzelnen Entwickler identifiziert.

  • Kontinuierliche Integration
  • Fügen Sie niemals frühzeitig Funktionalität hinzu
  • Testgetriebene Entwicklung
  • Wählen Sie eine Systemmetapher
  • Verwenden Sie einen einzelnen Integrationspunkt
  • Testen Sie alle Fehler
  • Ständig umgestalten
  • Legen Sie ein nachhaltiges Tempo fest
  • Einfachheit
  • Häufige Veröffentlichungen

Ich bin neugierig, ob mir etwas fehlt, das für die Arbeit mit einem einzelnen Entwicklerprojekt geeignet sein könnte.

Ist es vor diesem Hintergrund angesichts der Idee der Einfachheit und der testgetriebenen Entwicklung besser, etablierte, funktionsreiche und vorgefertigte Plattformen zu verwenden?

Oder sollte ich, wenn möglich, von Grund auf arbeiten, um zu vermeiden, dass Probleme auftreten, die mit Regeln wie ständigem Refactoring und niemals frühzeitigem Hinzufügen von Funktionen verbunden sind?

Kody Manharth
quelle
5
Elsesite, auf c2.com (eine Site, die früh für einige Diskussionen über agile (und speziell XP) Konzepte erstellt wurde) - Extreme Programming For One
Das ist eine erstaunliche Ressource, danke. Besonders gut gefällt mir die Idee des XP Pledge of Allegiance.
Kody Manharth
Wenn Sie sorgfältig lesen, werden Sie Namen wie Ron Jeffries und Kent Beck finden, die Kommentare abgeben ... und nun, es ist Wards Wiki .
Es wurde von den Machern des Paradigmas geschrieben, das ist fantastisch. Ich weiß nicht, wie ich noch nicht darüber gestolpert bin. Ich hatte www.extremeprogramming.org
Kody Manharth
2
Ihre Frage enthält keinen einzigen Punkt, der für eine erfolgreiche Softwareentwicklung obligatorisch ist. Die eigentliche Frage ist, welche brauchen Sie eigentlich?
Robert Harvey

Antworten:

5

Letztendlich geht es bei Extreme Programming um eine Reihe von Praktiken und Methoden, die zu einem verbesserten Geschäftswert führen. Das beste Beispiel dafür, das ich gefunden habe, ist von http://c2.com/cgi/wiki?ExtremeProgrammingEnablingChart

Extreme Programmierfreigabe

Alles in Blau ist Teil der Kerns von XP.

Es gibt Teile davon, die sich außerhalb befinden und dazu beitragen, Dinge innerhalb des blauen Bereichs zu ermöglichen. Sie sind Teil von XP als Ganzes, aber nicht kritisch dafür. Beachten Sie, dass ich persönlich kein XP-Praktiker bin und eine ganze Menge Kritik an Leuten "fast" nach XP gelesen habe, von denen verschiedene Leute gesagt haben, dass sie nicht XP sind. Lassen Sie uns diesen Aspekt des Dogmas von XP ein wenig beiseite legen und uns ansehen, was wir haben.

Erkennen Sie, dass eines der ersten und für die meisten Dinge darin besteht, sich vom Kunden für den Prozess zu engagieren. Eine Schlüsselkomponente von XP ist die Kundenbeteiligung. Dies zeigt sich in einer Reihe von Punkten wie Release-Planung, kleinen Releases und Kundenbewertung außerhalb des Unternehmens. Dies sind Dinge, die Ihre Kunden abonnieren müssen, wenn Sie als Einzelentwickler bei XP erfolgreich sein möchten. Wenn sie stattdessen nach einem Design und dann nach einer Entwicklungsphase und dann nach Tests und dergleichen fragen, haben Sie nicht die Verpflichtung von ihnen, weiter zu gehen.

XP bedeutet keine Planung. Es gibt mehrere Punkte, an denen die Planung Teil ist - Priorisierung, Schätzung der User Story, Iterationsplanung und Aufgabendefinition. Auch wenn Sie ein Entwickler in diesem Bereich sind, müssen Sie bei der Lieferung mit Ihrem Kunden zusammenarbeiten.

Punkte wie das kollektive Eigentum am Code und die Paarprogrammierung betreffen mehr als einen Punkt. Die Entscheidung für Dinge wie Codierungsstandards ist viel einfacher, aber das bedeutet nicht, dass Sie sie nicht befolgen müssen. Das kollektive Code-Eigentum gilt weiterhin - es ist nur so, dass das Eigentum auch der nächste Entwickler ist - schreiben Sie keinen Code, der nur für Sie und Sie bestimmt ist. Beachten Sie, dass dies in gewissem Maße im Widerspruch zum Code steht, der alle Absichten offenbart, die durch die Paarprogrammierung aktiviert werden. Sie müssen nicht überprüfen, ob Sie wartbaren Code schreiben. Daher ist auch die Dokumentation des Codes von entscheidender Bedeutung.

Abgesehen von diesen Einschränkungen gelten immer noch viele der XP-Designprinzipien. Dinge wie Test First Design, kontinuierliche Integration, Besprechungen mit dem Kunden, Refactoring, YAGNI, Spike-Lösungen - diese Anrufe können alleine getätigt werden.

Erkenne, dass Solo-XP genauso viel oder mehr Disziplin erfordern wie normale XP. XP wird oft als hochdisziplinäre Methode angesehen , da die Mitarbeiter die Best Practices, die es zu verkörpern versucht, strikt einhalten müssen. Wenn Sie keinen Trainer oder andere Leute haben, die diese Disziplin unterstützen, kann dies zu einer Ansammlung von Praktiken führen, die etwas Ähnlichkeit mit XP haben.

Verwandte Lektüre:

Ich möchte ein Zitat aus dem ersten der c2-Links herausziehen:

Damian Conway, ein bekannter Perl Language-Star und verrückter Wissenschaftler, glaubt, dass Extreme Programming tatsächlich eine Fehlbezeichnung ist. Da es viele der guten Programmierpraktiken verkörpert, die Programmierern beigebracht werden, aber mit ziemlicher Sicherheit ignorieren, glaubt er, dass es eigentlich Ultra Conservative Programming hätte heißen sollen


quelle
Erleuchtend, um es gelinde auszudrücken. Derzeit beschäftige ich mich mit TDD-Problemen in Flash mit Starling. Ich verwende FlexUnit und es kann keine grafischen Tests durchführen, da es kopflos ist. Wäre es in solchen Fällen angebracht, diese Tests einfach an manuelle Überprüfungen zu delegieren (z. B. ist der Test für das Logo auf dem Bildschirm zentriert). Würde dies als Integrationstest angesehen? (dh funktioniert das Begrüßungsbildschirmmodul ordnungsgemäß mit dem Bühnenmodul von Flash?) Sollte ich ein Verspottungsframework verwenden, um die erforderliche Situation zu simulieren? Können Tests rein ätherische Konstrukte sein?
Kody Manharth