Ich habe kürzlich zum ersten Mal The Pragmatic Programmer gelesen und bin auf das Konzept von Tracer Bullets gestoßen. Mir wurde klar, dass ich in der Vergangenheit nach diesem Modell codiert und die Art und Weise, wie ich in meinem Gehirn arbeitete, als "agil" abgelegt hatte.
Sie geben nur ein Beispiel dafür, wo sie es in der Vergangenheit verwendet hatten. Die Art und Weise, wie die Situation als guter Kandidat für Tracer Bullets identifiziert wurde, war
Es gab viele Unbekannte und viele verschiedene Umgebungen, und niemand war sich zu sicher, wie sich die GUI verhalten sollte.
Auf diese Weise scheint eine große Anzahl von Projekten zu beginnen, insbesondere wenn Sie mit nicht-technischen Mitarbeitern an einer typischen Branchen-App für einen Hedgefonds arbeiten (als Beispiel).
Ich habe es benutzt, weil es sich einfach richtig anfühlte, ohne wirklich zu wissen, wie es heißt oder es mir erklären zu lassen. Ich wusste, dass es eine völlige Katastrophe wäre, wenn ich versuchen würde, alle in einen Raum zu bringen und sie dazu zu bringen, alles (oder zumindest einige Dinge) im Voraus zu spezifizieren, aber das ist wieder eine Art Gefühl ...
Kann sich jemand konkretere Kriterien einfallen lassen, wann dieses Modell der richtige Weg sein könnte?
quelle
Antworten:
Sie benötigen ein Projekt, in dem Sie sich ein Bild davon machen können, ob Sie mit nur einer kleinen Teilmenge von Funktionen auf dem richtigen Weg sind. Im Allgemeinen ist dies für Dinge wie das grundlegende GUI-Design möglich, aber es ist schwierig mit Dingen, bei denen die Ergebnisse unbekannt sind - z. B. wenn Sie eine Data Mining-App entwerfen und die Form des Tools davon abhängt, welche Art von Mustern in Ihren Daten auftreten.
Sie müssen sich auch in einer Situation befinden, in der Sie es sich leisten können, viele Male zu iterieren. Dies kostet Zeit und Entwicklung (und kann natürlich von Vorteil sein, wenn Sie agile Entwicklungsprozesse abonnieren), aber schwieriger sind die Kosten in Bezug auf die Exposition gegenüber Benutzern. Benutzer werden schnell erschöpft sein, wenn Sie ihnen zu viele Designs zeigen und die Qualität Ihres Feedbacks stark abnimmt. Sie benötigen also entweder einen großen Benutzerpool oder müssen Ihre (Mikro-) Releases sorgfältig auswählen.
quelle
Ich würde sagen, dass es wirklich nur einen grundlegenden Faktor gibt, der bestimmt, wie nützlich ein Tracer Bullet-Ansatz ist: Anzahl und Umfang der Unsicherheiten in der Architektur und im Design der Anwendung.
Da das primäre (wenn nicht nur) Ziel der Technik darin besteht, solche Unsicherheiten zu beseitigen, werden Sie nicht viel davon profitieren, wenn Sie keine haben oder sie die Architektur oder das Design nicht betreffen. Ein Greenfield-Projekt ohne architektonische Einschränkungen ist ein typisches Beispiel dafür, dass das Starten mit einem Tracer Bullet fast die einzig sinnvolle Sache ist, während ein ausgereiftes Projekt mit einigen neuen Funktionen zur Implementierung wahrscheinlich Zeitverschwendung wäre (auch wenn) Es kann Unsicherheiten hinsichtlich der Anforderungen geben, deren Aufklärung eher der Bereich der allgemeinen agilen oder iterativen Entwicklung ist.
quelle
Das Konzept der Tracer Bullet-Entwicklung habe ich in dem Buch Ship It! , bearbeitet von den pragmatischen Programmierern .
Ich denke, dass Sie sich in Ihrer Frage auf das Buch The Pragmatic Programmer: From Journeyman to Master beziehen . Ich habe das nicht gelesen und weiß nicht, wie TBD dort dargestellt wird. In Ship It! gibt es ein Kapitel (20 Seiten), das TBD gewidmet ist. Insbesondere sprechen sie über ihre Erfahrungen mit einem konkreten Beispiel: einer Datenerfassungsanwendung für ein Biotech-Unternehmen. Grundsätzlich erklären sie, dass sie durch nette Abstraktionsschichten (mit TBD entworfen) die Leistungsengpässe nacheinander beseitigen konnten, indem sie jede Schicht parellelisierten.
Aus meiner Sicht ist TBD zwei Dinge:
Ich denke, der erste Punkt ist eine sehr gute Möglichkeit, eine Software zu entwickeln, egal was passiert. Der zweite Punkt ist interessant: Er kann möglicherweise ein vollständiges Umschreiben eines Projekts aufgrund einer anfänglichen Architektur verhindern, die in der Praxis nicht funktioniert.
quelle