This is a viewer only at the moment see the article on how this works.
To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk
This is a preview from the server running through my markdig pipeline
Agile Speccing®:-Writing Feature Specs, die eigentlich funktionieren
Tuesday, 11 November 2025
Einleitung
Im Laufe der Jahre I'-verlesene Hunderte von Feature-Spezifikationen geschrieben ,.- Einige waren brilliant , ;-die meisten waren blutig schrecklich ..- Der Unterschied zwischen einem guten Spec und ein schlechtes ist , '-t über Länge oder Formalität ,;-s es , ob es tatsächlich hilft Entwicklern bauen die richtige Sache, ohne sie verrückt in den Prozess fahren ?.-
Hier ist etwas, das ich bei Microsoft gelernt habe, dass sich verändert hat, wie ich über Specs denke. Eine Spezifität ist nicht eine Bibel. Wie jedes Werkzeug verwenden Sie es, um einen Job zu erhalten getan .. . . Sie fügen so viel Detail hinzu, wie Sie die Interessengruppen und die Entwickler müssen gehen . . . dann passen Sie es an . , . ändern Sie es und aktualisieren Sie es während das Feature entwickelt .
Behandeln Sie ein Spezifik als heiliges, unveränderliches Dokument und bauen Sie das falsche Ding perfekt.(' running sehr schnell in die falsche Richtung.
Dieser agile Ansatz zu Specs erzeugt eine besondere Herausforderung, wenn das Feature sich entwickeln kann, während du lernst, wie die Hölle du es abschätzst.?Wie kannst du wissen, wenn du messk3re getan hast??Das ist, was dieser Artikel über . ist?
Im Allgemeinen ein Prinzip I'-ve gelebt von in meiner Karriere...; ALLer Prozess, ob es Spezifikationen sein muss, Füllen Sie Berichte aus./- sogar Code Bewertungen etc. ...- sind eine Steuer, .-Wie alle Steuern muss es Wert für Geld in Bezug auf ein besseres Ergebnis liefern als wäre es ohne sie oder es muss gehen.MSC6-Wenn Ihr Prozess sagt, dass Sie ein strenges Story Point System und brennen Sie Grafiken aber kein Bugger verwendet sie für alles andere als belästigen Ihr Team haben????-
Grundsätzlich ist ein Feature Spec ein Konversations-Tool, um das Feature besser zu machen NICHT ein dogmatische...
Warum Agile und was eigentlich bedeutet
Agile ist nicht stehend und klebrige Notizen Wirtschaftsstrategie für den Aufbau der richtigen Sache unter UnsicherheitDaten leben in dieser Ungewissheit, also müssen sie auch agil sein. Agiles ManifestLassen Sie es werden, wie du über das Errichten von etwas denkst... Betrachten Sie es als ein Designmuster für die Produktentwicklung..... Es ist kein Prozess, der ;.
Erste Grundsätze
- Änderung ist die Standardeinstellung, nicht die Ausnahme. Märkte bewegen sich ,-Anwender überraschen Sie,-Abhängigkeiten rutschen aus . Ein Spezifik, das kann ’-Flex wird Fiktion
- Lernen Beats voraussagend Sie entdecken die wirklichen Anforderungen nur, nachdem Menschen das Ding berühren. billig und schnell.
- Fluss über Heldentaten Kleine, kontinuierliche Bewegungen schlagen große, häufige und kurze Schläge.
Die Wirtschaftlichkeit Warum spart Ihnen das Geld?
- Minimieren Sie die Kosten des Seins falsch... Kurze Zyklen Leichtgewichts-Spezifikationen bedeuten schlechte Ideen sterben schnell anstatt nach einem sechs ,- ?Woche bauen ?. ?
- Unumkehrbare Entscheidungen verzögern Halten Sie die Optionen offen bis zum letzten verantwortlichen Moment, wenn Informationen am höchsten sind und das Risiko am niedrigsten ist.
- Bestandsverringerung (MSK) Halb--geschriebene Epen und massive “"Zukunft” Sektionen sind Arbeit-in -Fortschrittsschulden. Schiff dünne Scheiben"MSC6" Bank der Wert.
Feedback-Schleifen sind das Produkt
Jede Schleife verkürzt den Abstand zwischen ” und ”:
- Technische Daten Fangunmöglichkeiten vor Code-Zemente sie
- Weitere Informationen finden Sie unter: aus den Annahmekriterien ausführbare Prüfungen
- Inneres Hundefutter beweisen, es löst ein reales Problem... nicht ein imaginiertes...
Aktualisieren Sie die Spezifikation nach jeder Schleife. Geschichte von dem, was du gelernt hast.
Was macht ein gutes Feature Spec
Das Problem – das Lösungsmuster von -
Das wichtigste Prinzip für das Schreiben von Spezifikationen Fangen Sie immer mit dem Problem an, nicht mit der Lösung.
Dieses Muster ist einfach.
- Problemstellung Was ist eigentlich gebrochen ?? ?Welche Schmerzen erleben Benutzer ? ? ? Welche Gelegenheit würde das Feature erstellen ?
- Lösung Hier ist ', wie wir vorschlagen, es zu beheben.
- Im Anwendungsbereich Was tun wir in diesem Spezifik
- Aus dem Anwendungsbereich Was wir explizit tun, 're NICHT tun, gleichwohl wichtig, ; füttert sich in die zukünftige Planung und stoppt die ', warum wir x-' questions
I'-ve gesehen, unzählige Spezifikationen, die direkt in User clicks button X springen, die API Y."- ohne jemals zu erklären, was der Benutzer tatsächlich versucht zu erreichen Dies ist arse--.backwards ?.- Die Implementierung Details sollten natürlich aus dem Verständnis des Problems fließen
Denken Sie daran, Entwickler feature Gebäudemaschinen WIRKLICH ist das Werkzeug, um Funktionen zu liefern. Notwendigkeit NICHT, wie es zu tun ist, wenn Sie eine UX Person haben, die für die UX Spec verantwortlich ist, dann sollten der dev und sie zusammen arbeiten. für den Benutzer das kann ändern und jeder wird ermächtigt, für die Änderung zu schieben (-in der Spec.)- und haben diese Überprüfung Prozess testen Sie die Idee
flowchart TD
A[Feature Idea] --> B[Spec / Proposal]
B --> C[Visuals: Flowcharts, Figma, UI Mockups]
C --> D[Implementation]
D --> E[Internal Testing]
E --> F[Feedback Loop]
F -->|Refine| B
F -->|Ship| G[Release to Users]
G --> H[User Feedback]
H -->|Iterate| B
Klarheit des Zwecks
Bevor Sie ein einziges Wort über die Implementierung schreiben, müssen Sie eine Frage beantworten. WARUM???
Warum bauen wir diese ,? , Welches Problem löst es ?? , Wer profitiert ,? , Wenn Sie diese Fragen eindeutig beantworten können , , , haben Sie eine Funktion , ' , Sie haben eine Wunschliste .. ,
Ein gutes Spektakel beginnt mit
- Die Problemstellung ' ist gebrochen oder fehlt ? ist spezifisch sein
- Die Auswirkungen des Nutzers Wen interessiert und warum?
- Erfolgskriterien Wie wissen wir, dass wir es gelöst haben?
- Nicht-MSK-Ziele Was tun wir explizit NICHT??. Dies verhindert ein Kriechen der Reichweite und endlose Debatten...
Die richtige Detailebene
Dies ist, wo die meisten Spezifikationen gehen Titten --up-. Zu vage und Entwickler sind nach links Vermutungen ;-e zu detailliert und you-you-MSC3re Micromanaging Implementierung Entscheidungen, dass Entwickler besser qualifiziert sind, um machen MS K4
Der Trick ist zu spezifizieren WAS IST muss ohne Verschreibung geschehen WIE Es passiert, zum Beispiel, :
**Sehr gut.**Wenn ein Benutzer versucht, ein Formular mit ungültigen Daten zu übermitteln, sollten sie sofort Feedback erhalten, welche Felder korrigiert werden müssen.
SchlechtÜber die Formular-Einreichung: ,, die Eingabe-Schaltfläche: ', auf Klick-Handler sollte validiert rufenForm.(), die durch Form iteriertFelder Array überprüft jedes Feld, ., Wert gegen seine Validierung: ., regex Eigenschaft und wenn ein Ausfall sollte anzeigenError-(), mit dem Feld: .Name und Validierung: MSC9, Message Parameter: MSV10,
Die erste sagt mir, was die Benutzererfahrung sollte sein .; .Ich kann es in React ., .Vue-, ?Vanilla JavaScript ?, ?oder Träger Taube für alles, was es zählt . . .Die zweite geht davon aus, Implementierung Details, die völlig falsch für den Tech-Stack oder Einführung unnötiger Einschränkungen sein könnte . . . Verschiedene Menschen haben unterschiedliche Stärken oft die Person, die das Spec schreibt ist .
## Verwenden Sie Bilder, um Flussdiagramme, den Punkt Across zu erhalten
Denken Sie daran, dass Sie versuchen, die Leute zu verstehen, was Sie vorschlagen, '. Einige Teams gehören Figma-Dokumente.(.a Storyboard, bis wir es versuchen.MSC9. Vorschläge, bis sie '.ve durch eine Rückkopplungsschleife gewesen ist. sicherstellen, dass Sie verstanden werdenVerwenden Sie alle Werkzeuge, die Sie benötigen
In einem Wiki mermaid-Mermaide-.-js Diagramme sind für diese GREAT Erinnern Sie sich an KI ist GREAT bei der Generierung diese zu gegeben eine Textbeschreibung
Einige Leute können geschriebene Beschreibungen parsieren einige benötigen Bilder und Filme
flowchart LR
A[User on Profile Page] --> B[Click 'Add Profile Picture']
B --> C[Upload Dialog Opens]
C --> D[Select Image File]
D --> E[Preview + Crop Options]
E --> F{User Confirms?}
F -->|Yes| G[Profile Updated with New Picture]
F -->|No| C
G --> H[User Sees Updated Profile]
Kantenfälle und Fehlerbehebung
Wenn es eine Sache gibt, die I'áve gelernt hat, dann ist diese 'ás Benutzer finden Wege, um Ihre Scheiße zu brechen, die Sie nie vorgestellt
Eine gute Spezifik doesns-' , nur beschreiben Sie den glücklichen Pfad -; , es berücksichtigt ,:
- Was passiert, wenn das Netzwerk mid---Operation ausfällt?
- Was ist, wenn der Benutzer keine Berechtigungen hat?
- Was ist mit gleichzeitigen Änderungen?
- Wie gehen wir mit Teilausfällen in verteilten Operationen um?
Sie müssen nicht alle diese im Spec-, zu lösen, aber Sie müssen anerkennen, dass sie vorhanden sind.Nichts irritiert Entwickler mehr als die Entdeckung auf halbem Wege durch Implementierung, dass niemand darüber nachdachte, was passiert, wenn die externe API ist unten.
Für VIELE ist es wahrscheinlich, dass sie 'aus dem Bereich für dieses Spezifikum .aus sind Sie können technische Spezifikationen von ' haben, die Details der Implementierung und die technischen Lösungen zu den technischen Fragen von ' detailliert beschreiben.
Sicherheits- und Leistungsaspekte
Diese sollten nicht nachgedacht werden shoehorned in während der Code-Rezension, wenn es spezifische Sicherheitsanforderungen gibt, die sie im Spec...
Ähnlich, wenn es Leistungseinschränkungen gibt, die von Bedeutung sind, muss diese Suche in unter 200ums für Datensätze von bis zu 1ums Million records komplettiert werden."),umsollte sie im Spec...
Die Struktur eines guten Spec
Hier ist die Vorlage, die ich für Feature-Spezifikationen verwende... Es ist nicht Gospel, sondern es hat mir gut gedient.
Übersicht
Ein oder zwei Paragraphen, die zusammenfassen, was wir uns bauen und warum es wichtig ist.Ihr CEO sollte in der Lage sein, genau diesen Abschnitt zu lesen und den Wert zu verstehen.
Hintergrund/
Was hat diese Funktion ausgelöst?? , Was haben Benutzer nach gefragt?? , was würde uns helfen, mehr Geld zu verdienen ,? , Dies hilft Entwicklern verstehen das Problem Raum ohne in jedem Produkt Meeting gewesen , . ,
Haben Sie es , — ,let ,’ Erweitern Sie Ihren Abschnitt auf Benutzerberichte mit personas gewebt in-,, so dass es nicht nur eine Checkliste, sondern eine lebende Karte, wie verschiedene Arten von Benutzern interagieren mit dem System-MSC2
Benutzerberichte mit Personen
Benutzergeschichten sind ,’ , nicht nur eine Box , - , Tikking-Übung , — , sie sind ein Weg zu wirkliche Menschen verkörpern und ihre Ziele - . - Sie wissen schon, dass Ihre Benutzer der ganze Sinn des Bauens dieser Scheiße. Indem du jede Geschichte an eine Person verankern, zwingst du dich, über tatsächliche Nutzungsmuster zu denken.
Am Ende personas sind eine gütige Art und Weise der Identifizierung WIE Ihre Software verschiedene Arten von Benutzern dienen kann... vielleicht Alex braucht ein Dashboard, um Sicherheitsprobleme in Ihrer Funktion zu sehen... vielleicht Morgan benötigt seine Berechtigungen eingeschränkt, um ihn zu stoppen Scheiße brechen etc....
Als ein [persona Ich will die Art der Benutzer [um etwas zu tun, so dass [Ich erreiche etwas Ziel
Das ,“ , so dass ,” , Klausel ist der Schutz gegen Gebäude-Features, die niemand braucht.—-it bindet jede Funktion zurück zu einem realen Ergebnis der --Welt
Beispiel Personas
- Alex der Administrator – ist für die Kontrolle der Aufsicht und Effizienz von . verantwortlich
- Jamie, der Casual User Werte Einfachheit und schnelle Gewinne.
- Priya der Power User Das System wird an seine Grenzen gedrängt.
- Morgan der Newcomer – ist für die Führung an Bord von , und Versicherung erforderlich.
- Taylor der Interessenträger Das System wird täglich verwendet, benötigt aber Sichtbarkeit in die Ergebnisse.
Beispiel Benutzergeschichten
Warum es wichtig ist |---------|-------|----------------| Alex ( [Administrator] )| Als ein VerwaltungsratIch möchte Rollen und Berechtigungen zuweisen so dass Ich kann die Datensicherheit und Compliance sicherstellen..Verhindert unbefugten Zugriff und hält das System vertrauenswürdig
- Jamie - casual user - - als Zufälliger BenutzerIch möchte ein einfaches Dashboard so dass Ich kann schnell die wichtigsten Informationen sehen, ohne überwältigt zu werden..- > | - Reduziert Reibung und erhöht Adoption. , | , Priya , ( , Power-Benutzer ,) , als ein NetzbenutzerIch möchte benutzerdefinierte Workflows erstellen so dass Ich kann repetitive Aufgaben automatisieren und Zeit sparen.. Ausschalten der Effizienz und fortgeschrittene Anwendungsfälle Morgan, Newcomer, ), als ein NeulingIch möchte Tutorials und Tooltips so dass Ich kann das System lernen, ohne das Gefühl verloren zu gehen, .| Verbessert Onboarding und Retention Taylor (Beteiligter) InteressenträgerIch möchte regelmäßige Berichte per E-Mail an mich so dass Ich kann den Fortschritt verfolgen, ohne mich einzuloggen.
Warum Personen zusammen arbeiten
- Personen, die das Abstrakte humanisieren Anstelle von Nutzern von ,”, denken Sie an Alex,, Jamie,, Priya,, Morgan, und Taylor, ..
- Geschichten binden Funktionen zu goals-. Die “-Klausel, die die Klarheit erzwingt, muss jedem Merkmal dienen.
- Es entstehen Muster. Wenn Sie mehrere Geschichten aufstellen, sehen Sie Überlappungen, Konflikte und Prioritäten über personas, .
Ausführliche Anforderungen
Das ist dein Fleisch und deine Kartoffeln..-Break it down by functional area.Verwenden von Unterpositionen liberal.MSC2-Bremsen oder Drahtrahmen, wenn du sie hast, ist ein Bild tausend Worte der Beschreibung wert.
Für jede Anforderung:
- Das erwartete Verhalten
- Einschränkungen oder Validierungsregeln
- Anforderungen an die Fehlerbehandlung
- Wie es mit vorhandenen Funktionen interagiert
Nicht--‘Funktionale Anforderungen
Performance-Targets,-Sicherheitsanforderungen,-Zugangsstandards,-Browser/-Geräteunterstützung.-Don-'-Angenommen, dass diese offensichtlich sind.-Aber in einigen Teams kann es sein, dass dies WHOLE ANDERE TEAMS...-aber don-Don, '-Verlieren Fokus, wenn ein Teil Ihres Zyklus zu einem Wasserfall wird, dann verloren Sie '-Agilität durch Definition.-
Aus dem Geltungsbereich heraus
Dieser Abschnitt ist genau so wichtig wie das, was die ' im Bereich der . sein explizit über, was Sie tun nicht in DIESem Spezifikum
Warum das so wichtig ist
- Verhindert Umfang Creep Aber könnten wir einfach nicht sterben, wenn Sie auf die Out of Scope-Abschnitt zeigen können
- Setzt Erwartungen Interessengruppen wissen, was Won-'-t Dieses Mal werden Sie geliefert.
- Ermöglicht zukünftige Arbeit Elemente hier könnten später zu ihren eigenen Spezifikationen werden
- Fokussiert das Team Alle kennen die Grenzen dieser Arbeit
Beispiele für gute Out of Scope items
- Die mobile Unterstützung von ( wird in getrennter Spezifikation adressiert
- Migration vorhandener Daten Die aktuelle Spezifikation behandelt nur neue Daten
- Benutzeroberfläche für die Konfiguration Die Konfigurationsdatei verwendet zunächst Konfigurationsdateien.
- Die Integration mit System X ist noch nicht verfügbar
Wenn jemand argumentiert, dass ein Out-- von --Scope Objekt sollte im Bereich sein, dass eine Konversation wert ist BEFORE Entwicklung beginnt nicht auf halbem Wege durch Implementierung.
Fragen offen
Seien Sie ehrlich über das, was Sie don-'-t wissen Diese klar markieren und stellen Sie sicher, dass sie vor Entwicklung beginnt beantwortet erhalten ?. - Nichts Schlimmeres als die Blockierung der Entwicklung, weil niemand entschieden, ob we-MSC3-re tun Soft Deletes oder Hard deletes
Abhängigkeiten
Was andere Systeme – /-Teams –/-Features sind, hängt davon ab, was bereit sein muss, bevor die Entwicklung beginnen kann.
Annahmekriterien
Wie wird QA dieses Testen??- Diese sollten konkret sein testbare Aussagen..-Bonuspunkte, wenn sie in einem Format geschrieben werden, das automatisierte Tests werden könnte.MSC4-Given-/-Wann?MSC6-Dann Stil...
Das Problem von Spec Bugs
Hier ist etwas, das nicht genug gesprochen wird. Specs können auch Bugs haben
Ein Spezifik-Fehler ist, wenn die Spezifikation selbst falsch ist...Vielleicht widerspricht sie sich selbst.,. oder es gibt Verhalten an, das technisch unmöglich ist, oder es löst das falsche Problem vollständig... Diese sind heimtückisch, weil Entwickler genau das implementieren könnten, was geschrieben wurde und immer noch mit einem Produkt enden, das nicht richtig funktioniert.(.in Agile der Hauptfokus ist es, diese ...'.Feedbackschleife so kurz wie möglich aus genau diesem Grund zu machen
Wie sich Fehler abspielen
- Unvollständiges Verständnis Die Person, die die Spezifikation schrieb, verstand das Problem oder das bestehende System vollständig.
- Widersprüchliche Anforderungen Verschiedene Stakeholder wollen verschiedene Dinge und niemand hat den Konflikt gelöst.
- Technische Unmöglichkeit Die Spezifikation fragt nach etwas, das tatsächlich getan werden kann.
- Änderung der Anforderungen Die Welt bewegte sich weiter, aber die Spec didn-'.t erhalten aktualisiert.
Bearbeitung von Spec Bugs
Wenn Sie einen Spec-Bug als Entwickler finden, haben Sie ein paar Optionen.
Option 1: sofort aufheben
Dies ist fast immer die richtige Antwort, sobald du etwas siehst, das Sinn macht, ,... heb es auf...
Senden Sie eine klare Nachricht an wer auch immer das spec-:-
- Was die Spezifikation sagt
- Warum es problematisch ist
- Was du denkst, sollte stattdessen geschehen, wenn du einen Vorschlag hast.
Tun Sie dies in schriftlicher Form (-Email,-Ticket, was auch immer ), so dass es eine Aufzeichnung .
Option Umsetzen Es Wie auch immer
Manchmal könnte man versucht sein, einfach zu bauen, was angegeben ist, obwohl man es kennt. DIESES ENTWICKELN
IM'hve gesehen Entwickler implementieren Spezifikationen, die sie wussten, waren falsch, weil ...'hs, was es sagte zu tun... und dann handeln überrascht, wenn QA lehnt es ab oder Benutzer beschweren Sie sich.'hre ein professioneller ?;h Teil Ihrer Arbeit ist es, sprechen, wenn Sie Probleme sehen...
Die Ausnahme ist, wenn du die Ausgabe angehoben hast., wurde gesagt, dass du trotzdem fortfahren sollst.MSC2 und bekamst das in schriftlicher Form.
Option Befestigen Sie sich selbst
Wenn Sie sich sicher sind, dass Sie wissen, was die Spezifik sagen sollte... könnten Sie versucht sein, es selbst zu korrigieren.... Dies ist in Ordnung für offensichtliche Tippfehler oder Formatierungsprobleme.... aber für wesentliche Änderungen müssen Sie Zustimmung von Stakeholdern erhalten....
Die Anforderungen ändern sich nie lautlos, das ist es, wie Sie am Ende Gebäude-Features niemand gefragt, um...
Vorbeugen von Spec Bugs
Der beste Ansatz ist, um Spec Bugs in den ersten Platz zu verhindern
- Entwickler frühzeitig einbinden Erhalten Sie technische Überprüfung der Spezifikationen, bevor sie fertig gestellt werden'... Wir stellen Unmöglichkeiten und Randfälle fest, die Produktleute vermissen könnten.
- Frühzeitige Einbeziehung von QA Wenn es kann getestet werden ' es kann gebaut werden ,, Ihr Job ist etwas, das es zu Benutzern macht ,, QA ist KRITICAL hier
- Beispiele frei verwenden Abstract Beschreibungen sind einfach zu missinterpretieren... Konkrete Beispiele Benutzer John hat die Erlaubnis, X.,. versucht Y.,. zu tun und sieht Z."). sind viel klarer
- Validierung gegen bestehendes System Machen die Spezifika Annahmen darüber, wie die Dinge derzeit funktionieren?
- Iterieren Sie auf Spezifikationen Behandeln Sie das Spec als lebendiges Dokument, wie Sie mehr während der Implementierung erfahren, und aktualisieren Sie es.
Häufige Spec Pitfalls
Das Novel-Spektrum für die Länge
Einige Leute denken, mehr Detail ist immer besser......'.s nicht.. ....s Eine "50-."page-Spezifikation, die niemand liest, ist schlimmer als eine "MSC4"page-spezifikation.
Wenn deine Spezifika sich in Krieg und Frieden verwandelt
- Muss es in mehrere Funktionen einbrechen
- Spezifizieren Durchführungsdetails, die Entwicklern überlassen werden sollten
- Lösen Sie das falsche Problem und müssen zurücktreten
Die vage Handwelle
Das entgegengesetzte Problem, das :, baut ein Reporting-System auf, und wir werden sehen, ob es zu dem passt, was du in deinem Kopf hattest, wird ?
Wenn Ihre Spezifika vollständig in einem einzelnen Satz gefangen werden kann, dann ist es nicht ein Spezifikum, sondern ein vager Wunsch.
Das erste Spektakel der Lösung
Wir brauchen ein Dashboard - " ist ' ist eine Anforderung -; ist eine vorkonzipierte Lösung - . Vielleicht benötigen Sie ein dashboard-,, aber vielleicht brauchen Sie etwas ganz anderes ?. Beginnen Sie mit dem Problem .. ist die Systemadministration kann ' nicht sehen, wenn es Probleme im System schnell und einfach .
Das sich bewegende Ziel
Anforderungen, die täglich ändern, sind T'.t-Anforderungen TM;.it sie T'.re Chaos Â.. Wenn Dinge sich verändern, dass schnell ?,.it Sie nicht verstehen, das Problem gut genug noch ... Stoppen und mehr Entdeckung vor dem Schreiben von Spezifikationen tun
Die Spüle der Küche
Während wir uns dort befinden, könnten wir auch ..."... Nein, wir konnten '.t...Jedes Feature hat einen Preis, .. Wenn Sie etwas neues hinzufügen möchten, schreiben Sie eine separate Spezifikation für sie und priorisieren es richtig...
Specs wie Quellcode behandeln
Dies ist die Mindset Verschiebung, die geändert, wie ich schreibt Specs Behandeln Sie Ihre Spezifika genau so, wie Sie den Quellcode behandeln
Versionskontrolle
Ihre Specs sollten in Versionskontrolle neben Ihrem Code leben..-Überprüfen Sie sie in....-Verfolgen von Änderungen...MSC2-Schreibe sinnvolle Commit-Nachrichten, wenn du sie aktualisierst!.-Dies erzeugt eine Geschichte, wie Anforderungen entwickelt wurden.
Bei Microsoft haben wir die Spezifikationen in den gleichen Repositories wie Code gehalten.. Als ein Spec geändert wurde, ging es durch denselben Überprüfungsprozess wie code.MSC3 Das war ']t Bürokratie... es gewährleistete jedem zu verstehen, was sich änderte und warum – auch das Revisions-Tracking in Word ist besser als nichts.
Refaktorisierungsangaben
Genau wie Code refactoring benötigt, so tun Spezifik. Wie Sie mehr während der Implementierung lernen, sollten sich die Specs entwickeln, um das Lernen zu reflektieren.
Finden Sie einen besseren Weg, um das Problem zu lösen - ? aktualisiere die Spezifikation, um den neuen Ansatz widerzuspiegeln und erkläre, warum du die Richtung geändert hast -. .
Die Spec nach der Entwicklung sollte verfeinerter sein als die Spec vor der Entwicklung, wenn es nicht ' ist.
Das Lebendige Dokument-Prinzip
Ein Spezifik ist ,' , wenn die Entwicklung beginnt , , , es ist nur , ' ready , für diese Stufe , die ,. , Es ist getan, wenn das Feature Schiffe und wird Wartungsmodus , bis dann ., , ist ein lebendiges Dokument , das mit Ihrem Verständnis des Problems entwickelt , . ,
Dies bedeutet nicht, dass sich die Spezifika täglich ändern sollte.Die wichtigsten Änderungen an den Anforderungen müssen diskutiert und vereinbart werden.
Denken Sie an es auf diese Weise, wenn Sie würden...
Warum Specs aktuell bleiben müssen
Hier ist etwas, das nicht genug diskutiert wird. Ihre Spezifikation wird die Grundlage für alles, was kommt nach...
PrüfpläneQA schreibt Testfälle auf der Grundlage des Spektakels ., wenn die Spezifikation veraltet ist. ,, Tests testen das falsche Ding. Sie erhalten falsche Positive.
DokumentationBenutzer-Dokumentation - , docs -, help systems - , enhance RAG AI Support Agent - - enfake sie alle von der Spec.. , Wenn die Spezifikation beschreibt Funktionen, die nicht existieren oder fehlen Features, die tun T, , Ihre Docs sind vom ersten Tag an falsch
Künftige EntwicklungWenn jemand das Feature sechs Monate später erweitern muss, lesen sie die Spezifikationen, um zu verstehen, wie es funktioniert, wenn es nicht mit der Realität übereinstimmt.
An BordNeue Teammitglieder lernen das System zum Teil durch Lesen von Specs.Vorherige Spezifikationen lehren ihnen das falsche mentale Modell, wie Funktionen funktionieren.
Dies ist, warum die Spezifität muss current-Molekül bleiben nicht nur über die Anfangsimplementierung-Motivumsetzung-Momentualumformung-Morbikel um alles andere
Bei Microsoft behandelten wir Spec-Updates mit der gleichen Bedeutung wie Codeupdates...Spec-Änderungen gingen durch Überprüfung. .. Sie wurden neben code... versioniert, als ein Feature die Aktualisierung des Spec änderte, war '.t optional. ;. es war Teil der Definition von ".done.
Wenn du den Code änderst, aber don-' aktualisierst, wird die Arbeit der Zukunft langsamer sein, weil niemand weiß, was der aktuelle Zustand tatsächlich ist.
# Die Beziehung zwischen Spezifik und Umsetzung
Hier ist etwas, das Junior-Entwickler oft nicht erfassen Das Spezifik ist nicht die Quelle der Wahrheit.
Die Spezifikation sagt dir, was du versuchst zu bauen - . Der Code ist das, was Du tatsächlich gebaut hast -. Diese beiden Dinge sollten ausrichten, aber wenn sie nicht mehr ' - , - der Code gewinnt ?. - Sie können nicht mehr einen Spektakulären ausführen.
Das bedeutet:
- Spezifikationen sollten sich entwickeln Während Sie die Dinge während der Implementierung entdecken, aktualisieren Sie das Spec... Es ist eine Dokumentation dessen, was Sie bauen, nicht ein heiliger Text.
- Umsetzungsdetails Don-'.t Gehören in Spezifikationen Sobald du begonnen hast, , zu implementieren, dokumentiert der Code selbst die Art und Weise, wie ( an einigen Stellen ein technisches Spec.', aber diese sind selten und oft ein Produkt von fiesen ', Agile Frameworks, ', ein Haustier Haß, MSC9, eine inhärent adaptive Praxis wie Agile zu projizieren, macht mich ein wenig barf ?)., Das Spec sollte das Warum dokumentieren
- Tests überbrücken die Lücke Gute Tests überprüfen, dass die Implementierung den Anforderungen entspricht....
Schreiben von Specs für unterschiedliche Zuschauer
Verschiedene Menschen brauchen verschiedene Dinge von Specs
Führungskräfte Sie wollen den Geschäftswert und die grobe Zeitleiste kennen... und ihnen den Überblick und die Erfolgskriterien geben.
Produktmanager Sie müssen verstehen, wie sie in die breitere Produktstrategie und Roadmap passt.
Entwickler Brauchen Sie genügend Details, um korrekt zu implementieren, ohne dass ihnen gesagt wird, wie man ihre Arbeit macht?
Schlussfolgerungen Notwendigkeit, zu wissen, wie man es überprüft funktioniert.
Designer Muss wissen, was die Benutzererfahrung sein sollte . ... . Geben Sie ihnen die User-Geschichten und Interaktionsströme . . . noch besser haben sie eine UX Spec entwickeln . / . Storyboards in parallel während der Arbeit mit dem dev .& . spec writer .
Ein gutes Spezifik dient all diesen Zielgruppen, ohne aufgebläht zu werden.Verwenden Sie Abschnitte und Struktur, damit die Menschen lesen können, was ihnen wichtig ist.
Testen Sie Ihr Spec
Bevor du ein Spec done-, stellst, frage dich:
- Konnte ein Entwickler, der nicht diese Funktion gesehen hat, es von diesem Spektakulären erstellen? Wenn nicht ,-you-''re fehlende Details ..' NIE haben Stücke wie .'"dies funktioniert wie Feature x im Current-System ?'.' Zuerst, dass -''s faule AF-MSC6' second .SK7' dieses Merkmal könnte sich ändern oder schwer zu verstehen Randfälle sein
- Konnte QA Testfälle von diesem Spec-?-Schreiben Wenn Ihre Akzeptanzkriterien nicht klar genug sind
- Könntest du etwas völlig nutzlos bauen, das immer noch zu diesem Spezifikum passt? Wenn so ,, , Sie haben die tatsächlichen Anforderungen richtig erfasst ,
- Beschreibt diese Spezifität WIE zu implementieren oder WAS zu erreichen ist? Wenn es ', das ehemalige ,, du, ',re micromanaging, MSC3,
Der agile Ansatz bei den Spezifikationen
Aber wir sind agil, ! Wir brauchen keine Spezifizierungen Ich höre dies eine Menge . Es ist ein Unsinn '
Agile doesns.'.t bedeuten keine Planung oder Dokumentation von .". Es bedeutet, auf Änderungen nach einem Plan zu reagieren. Spezifika sind Werkzeuge, die nicht Verträge sind. Du erstellst sie mit gerade genug Detail, um begonnen zu bekommen.,, dann entwickle sie, während du lernst.., Meine ...',Agile Reise... ', war noch extremer, da du super gut in Spezifikationen bekommst, auch wenn die mehr werden Agile, ,, wirst du ladaptieren und verbessern basierend auf dem, was dein Team will.
Wie agile Daten vom Wasserfall abweichen
Der fundamentale Unterschied ist das Format oder die Länge des ;.
Wasserfallspektren:
- Vollständig vor jeder Entwicklung geschrieben
- Ziel für Vollständigkeit ab dem ersten Tag
- Änderungen erfordern formale Änderungskontrollprozesse
- Spec wird nach der Genehmigung von " sperrend" geschaltet.
- Annahme: :- wir können alles wissen, bevor wir beginnen
- Lineare :-Spezifikationen Erstellen von →-Tests Bereitstellung von →
Agile Angaben:
- Beginnen Sie mit minimalen lebensfähigen Details zu beginnen
- Unvollkommenheit am Anfang erwarten
- Änderungen sind zu erwarten und willkommen
- Spec entwickelt sich kontinuierlich mit dem Feature
- Annahme: :- wir lernen, wie wir bauen
- Cyclical-Versionen des Entwurfs von → Erstellen von S→ Erfahren Sie mehr
Der Wasserfall Ansatz geht davon aus, dass Sie alles perfekt vor dem Schreiben einer Zeile von Code angeben können..- Das ist eine schöne Fantasie..-In Wirklichkeit entdecken Sie die Hälfte der Anforderungen, sobald Benutzer tatsächlich versuchen, das feature.MSC4-Plan für das ?,-Umarmung es sind die ULTIMATE-Tester....-Sie können Scheiße brechen, die Sie getan haben, '-t sogar wissen, dass du gemacht in einem Tempo, das Kausalität zu verletzen scheint, .-Erwarten Sie es nicht erwarten, ,-Plan es und fixieren Sie es (-und fügen Sie es zu einer Zukunft Spezifität hinzufügen, wenn Sie $'-re immer noch in der Spezifika
## Feedback Loops sind alles
In agilen Spekturierung sind die Feedback-Loops Ihre beste Freundin... You.'.re ständig die Eingaben sammeln und die Spektualisierung aktualisieren.
Entwickler-FeedbackDie anfängliche Ansatz gewonnen ,' , die Arbeit wegen der X-. , I' , schlägt Y statt ,." , , → , Update-Spezifikation zu reflektieren neuen Ansatz und warum es geändert , . , Am Ende Sie , ' , sind immer das erste .' user " , um eine Funktion . . , Wenn es Scheiße aussieht , dass ... , Sepc Bug und bekommen es sortiert , wenn Sie stoppen was auch immer Sprint ?/ , Spike etc , es zu tun .
Benutzer-FeedbackTesten Sie die Funktion mit realen Benutzern, auch intern, weil ...", →, mein Problem löst Pivot die Spezifikation basiert auf dem, was du lernst
Rückmeldungen zur UmsetzungBeim Bau von , entdecken Sie Randfälle, technische Einschränkungen, oder nähern Sie sich besser an..
QA-FeedbackDas Spezifik sagt X, aber nicht Y-Szenario betrachten.
Jede dieser Feedback-Schleifen macht die Spec besser Die Spec nach einem Sprint der Entwicklung sollte genauer sein, als die Spece vor ., , weil du ?' , gelernt hast Dinge, die du am Anfang kennen konntest .
Dies ist, warum Wasserfall-Spezifikationen oft ausfallen... sie überspringen die Rückkopplungsschleifen...... wenn du merkst, dass die Spezifikation falsch war...... dann hast du das Falsche gebaut.
Große Sache ,, , Feedback ALS FEASIBLE-. , es ,' , warum ich gebaut LLMApi es hilft Ihnen, ein BIT dann verwenden gefälschte Daten zu erstellen, um nützliches Feedback zu erhalten.
Unvollständigkeit auf den ersten Blick umarmen
Hier ist etwas, das traditionelle Projektmanager nervös macht. es ist völlig in Ordnung, wenn die erste Spezifikation Lücken hat.
Markieren Sie Abschnitte als ", TBD, ", wenn Sie noch nicht wissen ', Liste offene Fragen prominent. Seien Sie explizit darüber, was Sie haben ', die noch herausgefunden
Dies ist ,' , nicht schlampig , ; , es ist .' , Ehrlichkeit , . , Sie wissen nicht alles vorne , . , vorgeben, Sie tun nur bedeutet, dass you ,' ,ll schreiben selbstbewusste Spezifikationen für die falsche Lösung .
Beginnen Sie mit
- Klare Problemstellung Sie müssen dies wissen
- Vorgeschlagener Lösungsansatz
- Rough "-Done-"-Kriterien werden verfeinert
- Bekannte Unbekannte als offene Fragen markiert
Dann füllen Sie die Lücken, wie du lernst.., es ist viel besser, eine unvollständige -, aber...
Das Spec wird sich ändern
Akzeptieren Sie dies jetzt Ihr Spezifik wird sich während der Entwicklung ändern Wenn es nicht tut, haben Sie entweder unglaublich Glück oder du lernst nichts.
Änderungen, die Sie erwarten sollten
- Technischer Ansatz verschiebt sich, wenn Sie Einschränkungen entdecken
- Scope-Anpassungen, wenn Sie erkennen, dass Sie zu viel bauen.
- Verfeinerung der Kriterien, wie Sie das Problem besser verstehen
- Neue Randfälle während der Implementierung entdeckt
- Bessere Lösungen durch Experimente gefunden
Jede Änderung sollte erfolgen.
- Dokumentiert Aktualisieren Sie die Spec.,. don.'.t nur den Code ändern
- Kommunikation Teilen Sie den Stakeholdern mit, was sich geändert hat und warum
- Mit Gründen versehen Erkläre, was du gelernt hast, was die Veränderung anregte
Die Versionsgeschichte wird zu einer Aufzeichnung dessen, was du gelernt hast... Das ist eine wertvolle Dokumentation für zukünftige Features.
Wenn Agile Speccing falsch läuft
Der agile Ansatz kann fehlschlagen, wenn Sie eine kritische Sache vergessen " wird sich ändern - " bedeutet nicht -' bedeutet keine Grenzen
Schlechte agile Spezifizierungen
- Spec ändert sich täglich ohne klaren Grund
- Keine Definition von ".done." also wächst das Feature weiter.
- Änderungen werden mitgeteilt (Spec-Updates werden erwartet, um direkt zu Ihren Kollegen Gehirne springen.
- Als Ausrede verwendet, um Dinge nicht durch zu denken
- Die Interessenträger sind überrascht von Änderungen des Geltungsbereichs, weil ihnen niemand etwas gesagt hat.
Gute agile Spezifizierungen
- Veränderungen treten aus klaren Gründen auf der Grundlage des Lernens auf
- Kriterien sind klar, auch wenn andere Details vorhanden sind.
- Änderungen werden besprochen und dokumentiert
- Agil zu sein bedeutet nicht, schlampig zu sein
- Stakeholder sind Teil des Feedback-Loops
Das Spezifik ist ein lebendiges Dokument, aber es ist nicht Chaos. Es entwickelt sich auf der Grundlage des Lernens.
ALFILE macht nie, was immer Sie wollen und ruft es an.
Es ist ein dynamischer Prozess, der das SOLE GOAL hat, um so schnell wie möglich die besten Sachen zu bauen. Agiles Manifest sagt, wie es .' s erstes Prinzip .
Unsere höchste Priorität ist es, den Kunden durch eine frühzeitige und kontinuierliche Lieferung zu befriedigen von wertvoller Software
Es ist nicht zu faff herum ausspunken Code, weil Sie das Gefühl mögen.
Nur genug Details zum Starten
Die Frage ist: Wie detailliert sollte die Spezifikation sein?
Für einige Funktionen, die sein könnte .
- Ein Absatz, der das Problem beschreibt
- Drei Punkte skizzieren die Lösung
- Eine klare Definition dessen, wie MSC1 aussieht
Für andere könnte es sein
- Detaillierte Benutzerströme mit Mockups
- Leistungsanforderungen, die durch Daten gesichert werden
- Integrationsspezifikationen für mehrere Systeme
Detail hinzufügen, wo Ungewissheit vorhanden ist. Wenn jeder sich darauf einigt, wie etwas arbeiten sollte... du musst es in qualvollen Details niederschreiben.... wenn es eine Meinungsverschiedenheit oder Verwirrung gibt...
Aber am Ende gibt es genug Details, um die Rückkopplungsschleife zu starten.
## Vorlagen und AI-:-Vorlagen Schnell starten
Der Zweck am Anfang ist es, genug zu haben, um Ihre unmittelbaren Bedürfnisse zu erfüllen, ob diese
- Eine grobe Schätzung, sogar eine SWAG, ist besser als nichts.
- Input für Priorisierungsgespräche
- Gerade genug für Sie persönlich, um mit dem Codieren zu beginnen
Vorlagen verwendenHaben Sie eine grundlegende Schablone mit den Schlüsselabschnitten (.Problem ,. Lösung Im Scope messK4. Aus dem Scopes messk5. Fertige Kriterien Füllen Sie aus, was Sie wissen messksk7. Lassen Sie die Abschnitte leer, wenn Sie noch nicht wissen .. Markieren Sie sie als ".TBD.".
Eine einfache Vorlage könnte sein
# [Feature Name]
## Problem
[What's broken? What pain exists?]
## Proposed Solution
[High-level approach]
## What "Done" Looks Like
- [ ] Specific, testable criterion 1
- [ ] Specific, testable criterion 2
- [ ] Specific, testable criterion 3
## In Scope
-
-
## Out of Scope
-
-
## Open Questions
-
-
Das ist es . Fünf Minuten des Füllens, das innen und du hast genug, um zu diskutieren oder sogar Gebäude zu beginnen.
Verwendung von KI zum Entwurf von SpezifikationenWerkzeuge wie Claude oder ChatGPT können brilliant sein, um einen ersten Entwurf zu erhalten.
ABER - und dies ist kritisch don-'-t lassen Sie die Gründlichkeit von AI-' verführen, um alles hinzuzufügen
KI liebt es, umfassend zu sein...It-'.ll gibt Ihnen Abschnitte über Sicherheitsabwägungen.MSC2. Leistungsanforderungen.,. Zugänglichkeit.
Strip die meisten von denen out-.-Halten Sie, was Sie benötigen JETZT-.-Der Rest kann später hinzugefügt werden, wenn Sie es wirklich brauchen
Denken Sie an die AI---generierte Spec als Menü wählen Sie die Bits, die für den Einstieg wichtig sind . .. , Ignorieren Sie den Rest . . . Sie können immer wieder kommen für Sekunden .
Das Ziel ist ein komplettes Spezifikum ,; , es ist , ' genug Spezifika zu arbeiten beginnen , . , ob das eine schnelle Schätzung , die ,, , eine Entscheidung über Priorität , oder einfach Klarheit darüber, was Sie , ' , Gebäude für sich selbst ,
Das gemeinsame Modell
Hier: ', was sich im agilen ändert Sie schreiben ein Spezifik und werfen es über die Wand zu Entwicklern. Das Spec ist ein kollaborativer Aufwand.
Die beste Annäherung I'-ve gesehen
- Produkt-/Pm skizziert das Problem Was muss gelöst werden und warum?
- Entwickler tragen einen technischen Ansatz bei Wie könnten wir es lösen? - Was sind die Einschränkungen?
- Designer tragen UX-Anforderungen bei Was die Benutzererfahrung sein sollte
- QA trägt zu Testszenarien bei Kantenfälle und Validierungsansätze
Jeder trägt dazu bei, dass es niemand exklusiv besitzt Dieser kollaborative Ansatz fängt Probleme früh an, wenn sie nicht zu spät, sondern billig zu beheben sind.
Noch wichtiger ist es bedeutet, dass die Spezifizierung reflektiert was wirklich möglich ist nicht das, was jemand sich in Isolation gewünscht hat
Entwicklung während der Entwicklung
Hier, wo sich agile Spezifikationen von traditionellen unterscheiden. die Funktion kann sich entwickeln, wie Sie es bauen
Sie entdecken, dass Ihr anfänglicher Ansatz won-'-t-Arbeiten-?-Aktualisieren Sie die Spezifik, um den neuen Ansatz widerzuspiegeln
Sie versuchen die Funktion und erkennen, es doesns-'-t tatsächlich das Problem zu lösen.
Benutzer-Feedback zeigt eine bessere Lösung. Integrieren Sie es und erklären Sie die Änderung.
Diese Evolution ist eine Funktion, die nicht ein Fehler ist, sondern ein Fehler...You.'.re reagiert auf neue Informationen... Die Spezifika sollte erfassen, dass lernen..., nicht so tun, als hättest du vollkommenes Wissen vom ersten Tag an.
Aber dies erzeugt ein Problem, wenn das Feature ändern kann, wie Sie es schätzen , ? Wie wissen Sie, wann du ,' bist getan ,
Die Bewertungsherausforderung
Dies ist das schmutzige Geheimnis der agilen Schätzung ist blutig schwierig, wenn Eigenschaften sich entwickeln können
Traditionelle Schätzung geht davon aus, dass du weißt, was du gebäudest .. Du kannst es in Aufgaben zerlegen messK2. schätzen jede Aufgabe messk3. fügen Sie sie nach oben
Agile Schätzung erkennt an, dass du nichts weißt.
Du schätzst Reichweiten, ,, nicht absolut Anstelle von ", dies wird dauern 3, wochen Sie sagen ", irgendwo zwischen 2 und 5 Wochen je nachdem, was wir entdecken .",
Sie schätzen in Iterationen... Wir verbringen einen Sprint damit und berichten über das, was wir gelernt haben.
Du bearbeitest die Zeit--Box anstatt des Umfangs-. Am Ende der Woche haben wir die beste Version, die wir in dieser Zeit bauen können.
Aber alle diese Ansätze haben eine kritische Anforderung Sie müssen wissen, was "... bedeutet... Ohne eine klare Definition von done-,-Feature kann ein Feature für immer metastasieren
Es ist eine häufige Kritik an Agile im Vergleich zu Wasserfall Ansätzen, die ohne ein konkretes Spezifik kann es keine guten Schätzungen sein.
Definieren von "-Done-"-Dore-M(-Dor, wie man die Metastasierung der Funktion beendet
Dies ist, wo viele agile Specs auseinander fallen ,. , Jeder , ' , aufgeregt über Flexibilität und Iteration , aber niemand will derjenige sein, der sagt , , " right , dass , ' , es zu sein .
Ohne eine klare Definition von done-,-Features don-'-t Finish-Mesk2-Sie metastasieren .-Sie verbreiten sich.-Sie wachsen Ranken in andere Teile des Systems, bevor Sie wissen, dass es , Ihr einfaches Kommentarsystem " hat sich in ein volles soziales Netzwerk mit Messaging verwandelt ,-Profile und Freunde Anfragen .
Das Problem mit der Vague
I'-ve gesehene Spezifikationen mit Annahmekriterien wie .:
- Nutzer können Beiträge kommentieren
- Das Dashboard zeigt relevante Informationen an
- Sucharbeiten gut
Dies sind die Definitionen von getan;.Sie sind vage Bestrebungen..Was macht ". relevante Informationen".bedeutet ?.Was ist '. funktioniert gut"?.Sie können auf diese für immer iterieren und nie gemacht werden..
Der Entwickler muss wissen was spezifisches Ding, wenn implementiert, bedeutet, dass ich aufhören kann, an dieser Funktion zu arbeiten
Schreiben von Beton-Kriterien
Gute Kriterien sind:
- Prüfbar Sie können überprüfen, ob es erfüllt ist.
- Spezifische Keine vagen Worte wie z.B. " good, " oder "MSC3" relevant, "
- Gebunden Sie implizieren unendlichen Umfang
SchlechtKommentare sollten moderiert werden **Sehr gut.**Nutzer von Admin können Kommentare aus dem Admin-Panel ablehnen oder löschen Nicht genehmigte Kommentare sind nicht sichtbar für regelmäßige Benutzer , . , E-Mail-Benachrichtigung an Admin gesendet, wenn neuer Kommentar veröffentlicht wird , ." ,
SchlechtDie Suche sollte schnell sein. **Sehr gut.**Die Ergebnisse werden nach Relevanz geordnet.-.Text-Suchergebnis: ). mit Datum als Krawatte-.
SchlechtDas Armaturenbrett zeigt nützliche Metriken an **Sehr gut.**Alle Metriken aktualisieren einmal pro Stunde."
Beachten Sie den Unterschied: Die guten Beispiele sagen Ihnen genau, was zu existieren hat und wann Sie aufhören können Dinge hinzuzufügen.
Die Out of Scope Sektion ist Ihr Freund
Denken Sie daran, früher, als ich sagte, dass die Out of Scope-Abschnitt ist so wichtig wie was?
Für jedes Feature gibt es Dutzende von Dingen, die du hinzufügen könntest: . Der Out of Scope-Abschnitt ruft explizit heraus, was du tust:.. Dies verhindert, dass das " während wir '.re da drin sind: ,. Wir könnten auch Gespräche führen, die zu Metastasen führen.
Im AnwendungsbereichVerschachtelte Kommentare Ein Level der Antworten Ein Level Aus dem AnwendungsbereichUnbegrenzter Kommentar Threading - ,.Kommentar Voting – ,.Kommentar Threadings – ,.Am besten kommentieren sortieren – MSC4.Kommentar Permalinks Diese können später als separate Features kommen.).
Jetzt, wenn jemand suggeriert, "shouldn-''t Kommentare haben Upvotes ??"' kannst du auf die Spezifität zeigen und sagen, dass -''s aus dem Anwendungsbereich für diese Iteration - .'s diskutieren es als ein separates Feature, sobald grundlegende Kommentare arbeiten
Oh und die NEXT-Spezifikationen ?. Nun, du hast eine Reihe von ungenutzten guten Ideen bereits gefangen !.
Time---Boxen als letztes Resort
Manchmal weißt du wirklich nicht genau, wie "..."... aussieht, wenn du anfängst..... Der Problemraum ist zu ungewiss, ,... völlig neu oder sogar ein System mit hinterem Ende muss gleichzeitig gebaut werden.MSC5... In diesen Fällen kann ,...
Weitere Informationen über die Anwendung von '.com finden Sie unter: http:www.2.com/
Aber beachten Sie, dass Sie immer noch einen Beton haben.".done...Zustand: (2. weeks evaluieren Sie ).. Sie bauen nicht nur auf unbestimmte Zeit!.. Diese Explorationen werden oft in einem Kontext wie einem Druck von '.Sprint im SCRUM gemacht, der als ' bezeichnet wird.
Spikes Sprints
Ein Spike ist einer von diesen '-go haben ein Spiel und herausfinden, dass diese tech... es kann so lange dauern wie ein Sprint oder länger... aber es in der Regel nur ein paar Tage, wenn ich devs tun diese Ich normalerweise für eine E-Mail am Ende fragen ... oder einen Wiki-Post etc....
Es wird erwartet, dass ein Sprint am Ende etwas anderes haben kann als die Person, die in ihm engagiert ist, um den Loop zu testen.).. Ein Spike MIGHT haben aber wahrscheinlich das einzige, was geliefert werden kann, ist das Wissen für das Team.
Sie sind auch FUN für Devs und helfen dem Team Ich sammle oft Spike-Ideen während eines Projekts, und wenn es eine Lull Ich ließ devs wählen ein zu erkunden .(USUELL für einige zukünftige dev aber oft nur um Jim den Junior dev stoppen gehen über IT-).
Scope Creep während der Entwicklung zu verhindern
Selbst mit klarem "-Kone-"-Kriterien kann ,-Scope kriechen .-Sie entdecken Kantenfälle Sie realisieren Benutzer brauchen etwas, das Sie hatten '-t betrachtet .-Wie gehen Sie damit um, ohne Ihre Definition von done ? zu brechen
Dokumentieren Sie es don.'t einfach tun Wenn du etwas Neues entdeckst, das hinzugefügt werden muss, aktualisiere die Spec... Mache es explizit, dass sich der Geltungsbereich geändert hat.
Dies dient zwei Zwecken.
- Sichtbarkeit Alle wissen, der Umfang geändert und warum
- Kostenbewusstsein Interessengruppen sehen, dass das Hinzufügen von Dingen Auswirkungen auf die Zeitlinie hat
Wenn Ihr Spezifik hält wächst , , , dass ,' , ein Signal .. , entweder Sie bauen die falsche Sache ' , und müssen zurücktreten und überdenken , oder dies sollte mehrere Funktionen sein ?, , or you need to cut scope to ship something useful earlyer , um . ,
Wann es erledigt werden soll
An einem gewissen Punkt müssen Sie ship-.. Die Funktion doesns-MSC2.t müssen perfekt sein, muss es nützlich sein
Ein guter Test Können Benutzer Wert von dieser Funktion erhalten, wie es steht .
Wenn ja, , Ausschiffen Sie können immer in der nächsten Version iterate tunes.' Auslaufen bedeutet nie verbessert werden, es bedeutet, dass das Problem gut genug gelöst wird, damit die Benutzer profitieren und wir zu anderen Arbeiten übergehen können.
Wenn nein - , - du bist noch nicht fertig -, - unabhängig davon, was dein Spezifik sagt
Der schwierigste Teil der agilen ist die Startarbeit von ;.'.s stoppt Arbeit von.. Clear ".done...". Kriterien machen Stopp möglich
Aber denken Sie daran, dass Sie abwägen müssen, ob Sie es an jedermann freigeben haben eine enge Gruppe für A./.B. UAT (.User Acceptivity testing.)..Das ist oft eine geschäftliche Entscheidung um das Risiko... Manchmal ist die Öffentlichkeit FUCKING DUMB und sieht ein teilweise abgeschlossenes Vorschau-Feature als GOSPEL FÜR IHRE SYSTEMQUALITÄT...Wenn das ein Problem ist, ist eine kontrollierte Gruppe sicherer.
# Der Spec-Überprüfungsprozess
Ein Spezifik ist getan, wenn du es schreibst ; Beenden Sie es ' Beendet, wenn es gemacht wurde ' Bewertet von den Leuten, die es verwenden
Behandeln Sie Spec Bewertungen wie Code Bewertungen
Die beste Praxis, die ich bei Microsoft gelernt habe spec reviews funktionieren genau wie Codereviews Sie sind kollaborativ , nicht kontradiktorisch ( obwohl die Microsoft ' Boys Club oft machte die Spec Bewertungen wie Gladiatorial Kampf fühlen, wenn jemand ein dick war ; hey Simon ist das Ziel ist es, dich zu fangen ; es 's, um die Spece besser machen.
Bei der Überprüfung von Spezifika .: .
- Fragen stellen Was passiert, wenn X auftritt?
- Alternativen vorschlagen Haben Sie überlegt, Y Ansatz?
- Fehlende Fälle aufzeigen Dies bewirkt, dass das Bild durch Z-Szenario ergänzt wird.
- Annahmen zur Herausforderung Warum lösen wir es auf diese Weise?
Wenn Ihr Spezifik überprüft wird
- Fragen sind Chancen Sie offenbaren, was nicht klar ist und was du verpasst hast
- Vorschläge zur Verbesserung der Spezifikation Betrachten Sie sie ernst, auch wenn Sie nicht akzeptieren alle von ihnen
- Es ist nicht persönlich Wie die Code-Rezension, die ,, es,', über das Bilden der Arbeit, besser ,, nicht dich angreifend
- Der Rezensent könnte falsch sein Erkläre, warum dein Ansatz Sinn macht.
Die besten Spezifika-Bewertungen sind Konversationen, die immer wieder auftauchen...Sie lernen voneinander...Die Spezifika, die auftaucht, ist besser als das, was eine Person allein geschrieben haben könnte.MSC3.
Wer sollte es überprüfen?
Erhalten Sie Bewertungen aus allen Perspektiven, die wichtig sind
Entwickler-Überprüfung Gibt es technische Einschränkungen, die wir haben?' in Erwägung gezogen??. Gibt es genug Details, um ? zu implementieren?Welche Fragen würden Sie haben, wenn Sie dieses Gebäude bauen würden?
Produktbewertung Behebt dies das richtige Problem??Bereinigt es sich mit der Produktstrategie??Beeinträchtigt was fehlt ?Bedeutet das Kriterium " tatsächlich den Wert für Benutzer an??
Design-Überprüfung Ist die Benutzererfahrung sinnvoll???Haben wir Barrierefreiheit erwogen??" Was ist mit Mobile??" Lösen wir das Problem des Nutzers oder bauen einfach Funktionen auf.
Überprüfung der Qualitätssicherung Können wir das testen??Sind die Annahmekriterien klar genug?MSC2B Was ist mit Kantenfällen?MSSK3B Was könnte schief gehen?
Du brauchst kein formales Zeichen, sondern ein offizielles Zeichen von jedermann. Du brauchst ihren Eingang, um die Spezifikation besser zu machen.
Gemeinsame Wiederholungsfragen
Gute Rezensenten stellen Fragen, die das Spec-:-Verbessern
- Was passiert, wenn der Benutzer X.?". (. Edge-Fälle macht?
- Wie interagiert dies mit der vorhandenen Funktion Y.?"?
- Was ist unser Rückfall, wenn die Abhängigkeit Z bereit ist?
- Wir könnten dies vereinfachen, indem wir stattdessen W tun.
- Wie werden wir wissen, ob dies erfolgreich war?
- Was tun wir NICHT?
Keiner von diesen sind gotchas-.-Theyen, die echte Fragen, die helfen, Fleisch aus der Spec...
Einschließlich Feedback
Du wirst jeden Vorschlag akzeptieren , . , dass ,' fein ,. Aber für jedes Stück Feedback , : ,
- Betrachten Sie es ehrlich Nicht abweisen, weil sie nicht verstehen
- Wenn Sie es akzeptieren Aktualisierung des Spektakels , Dank an den Rezensenten
- Wenn du es nicht annimmst Erklären Sie, warum sie vielleicht einen fehlenden Kontext haben.
- Wenn es aus dem Anwendungsbereich herauskommt Fügen Sie es zu dem Abschnitt " aus dem Scope-Bereich oder " hinzu
Die Spezifika sollte besser mit jeder Runde der Überprüfung erhalten ,. , Wenn es doesns , ' , t , , , you , ' , nicht hören oder Ihre Rezensenten sind ,' ,t verlobt .
Holen Sie sich Bewertungen aus all diesen Perspektiven, bevor Sie mit der Implementierung beginnen..-Probleme in den Spezifikakosten zu finden Minuten.
Ein konkretes Beispiel für einen Markdown-Übersetzungsdienst
Um dies alles weniger abstrahiert zu machen ,, , hier , was ein Spezifik für das automatische Markdown-Übersetzungsfeature aussehen könnte, das ich für dieses blog gebaut habe .. , Das zeigt die Prinzipien we ,' , die diskutiert wurden
Problemstellung
Blogposts, die nur in Englisch geschrieben werden, schließen nicht aus.--Englisch sprechende Leser aus..-Manuelle Übersetzung jedes Posts in mehrere Sprachen ist Zeit.MSC2-verbrauchende und verzögerte Veröffentlichung..-Wir brauchen eine automatisierte Lösung, die Markdown-Blogposts in verschiedene Zielsprachen übersetzt, ohne dass für jeden Post manuelle Intervention erforderlich ist.
Lösung
Implementieren Sie einen Hintergrunddienst, der Markdown-Dateien automatisch in konfigurierte Zielsprachen mit dem EasyNMT maschinellen Übersetzungsservice übersetzt.
- Markdown-Dateien für Änderungen überwachen
- Translatierbaren Text extrahieren, während Markdown-Struktur und Codeblöcke erhalten bleiben
- Batch-Übersetzungsanfragen für Effizienz
- Übersetzte Markdown-Dateien mit entsprechenden Sprachsuffixen generieren
Erfolgskriterien Was ist das Ergebnis?
Diese Kriterien sagen uns genau, wann wir aufhören können, an dieser Funktion zu arbeiten.
- Neue Blog-Posts werden automatisch in alle konfigurierten Sprachen übersetzt.
- Übersetzte Dateien pflegen identische Markdown-Struktur zu Originalen
- Codeblöcke,-Bild URLs, und Formatierung bleiben unverändert
- Übersetzung komplettiert innerhalb von Minuten für einen typischen Blog-Post
- System übersetzt nur Dateien, die sich durch Hash-Vergleich verändert haben.
- Service startet erfolgreich, auch wenn die Übersetzungs-API vorübergehend nicht verfügbar ist
- Fehler während der Übersetzung werden protokolliert, aber don-'.t Absturz der Anwendung
Beachten Sie, dass diese spezifisch und testbar sind..-Wir können jedes einzelne überprüfen, wenn alle erfüllt sind. ,-Wir sind fertig..-Wir tun nichts mehr, wenn wir Funktionen wie die Qualität der Übersetzung hinzufügen: "- oder manuelle Übersetzungsbearbeitung, es sei denn, wir expandieren ausdrücklich den Bereich.
Im Anwendungsbereich
- Hintergrunddienst zur Bearbeitung von Markdown-Dateien
- Integration mit EasyNMT Übersetzung API
- Hash---basierte Änderungsdetektion, um unnötige Re---Übersetzung zu vermeiden
- Batch-Verarbeitung, um EasyNMT-' s Wortlimit zu handhaben
- Round---Robin Lastausgleich über mehrere EasyNMT-Instanzen
- Erhaltung der Markdown-Syntax-Codeblöcke und Bilder während der Übersetzung
Aus dem Anwendungsbereich
- Benutzeroberfläche für manuelle Übersetzungsbearbeitung
- Translation Memory oder Glossar-Management kann hinzufügen, wenn Qualitätsfragen auftreten
- Real---Zeit-Übersetzung Die Verarbeitung von Backgrounds ist akzeptabel
- Übersetzung von Code-Kommentaren innerhalb von Codeblöcken
- Automatische Qualitätsbewertung von Übersetzungen -(-manuelle Überprüfung zunächst erforderlich -)-
Technische Einschränkungen
- EasyNMT hat ein Wortlimit pro Anfrage. meistlucid---nmt die kann nehmen ficken BÜCHER, ), muss entsprechend chargen
- Der Übersetzungsdienst kann langsam sein, wenn der zweite Timeout pro Charge erreicht wird ).
- Mehrere EasyNMT-Instanzen, die für eine angemessene Leistung erforderlich sind
- Dateisystem I/-O darf die Hauptanwendung nicht blockieren
Offene Fragen zur Spec Time
- Sollten wir Übersetzungen zwischenspeichern, um zu vermeiden, dass neue Dateien translatiert werden Behoben ,: , Yes , , , mit Datei Hash Vergleich
- Wie gehen wir mit EasyNMT-Serviceausfällen um? Behoben:-Protokollfehler und überspringen-Datei wird beim nächsten Dienst neu starten / - ein Leistungsschalter vielleicht einen Spike
- Welche Qualitätsfragen könnten wir mit technischen Inhalten sehen? Entscheidung: :-Schiff und Bewertung der manuellen Überprüfung von Fängen
Was wir bei der Umsetzung gelernt haben
Mehrere Dinge entstanden während der Entwicklung, die das Spec-:-Verfeinerung
Batch Größe TuningBegonnen mit einer Reihe von Batches von 20-, fanden aber eine zuverlässigere Linie für den Aufenthalt unter der Wortgrenze von EasyNMT-', während der Erhaltung des Kontexts von MKK5.
BilderkennungUrsprünglich wurden die Dateinamen im Markdown an den Übersetzungsdienst gesendet, um Satzparsing zu brechen..e Hinzugefügt Dateierweiterungserkennung zum Überspringen von Bildpfaden.
Verfügbarkeit der DiensteEasyNMT kann beim Start temperamentvoll sein. /model_name Endpunkt vor dem Versuch von Übersetzungen
Hash-SpeicherUrsprünglich geplanter Datenbankspeicher für Datei-Hasches-,, aber Dateisystem-MSC2 .hash Dateien erwiesen sich einfacher und vermieden Datenbank-Abhängigkeit für diesen Service
Diese Lernen wurden zurück in die Dokumentation gefaltet und informiert ähnliche Funktionen später
Warum dieses Spec funktionierte
Diese Spezifität folgte den diskutierten Prinzipien
- Problemstellung zuerstBegonnen mit dem eigentlichen Problem, ist die manuelle Übersetzung langsam, nicht die Lösung.
- Freier GeltungsbereichExplizit ausgerufen, was wir taten, ', das Translationsgedächtnis, ,, UI-Bearbeitung,),
- Rechter DetaillierungsgradTechnische Daten Spezifiziert, was geschehen muss.Bewahren Sie die Markdown-Struktur, ohne genaue Implementierung vorzuschreiben.
- Lebendes DokumentOffene Fragen wurden gelöst und Entscheidungen im Zuge der Umsetzung dokumentiert
- ZusammenarbeitWährend der Implementierungs-Probleme aufgezogen, wurden wie beim Umgang mit dem Dateinamen über )e diskutiert und aufgelöst, dann dokumentiert
Das Ergebnis – ein Feature, das monatelang in der Produktion lief – ,® übersetzt automatisch jeden Blog-Post mit minimaler Intervention
Häufige Fragen zu Agile Specs
Basierend auf dem, was wir behandelt haben, sind hier Fragen, die häufig auftauchen
Benötige ich wirklich eine Spezifikation für ein kleines Feature?
Es hängt davon ab, ob es wirklich trivial ( Wechseln der Taste text.,, die Fixierung eines Typo-),, no.., aber wenn Sie brauchen, um...
- Schätzung, wie lange es dauert
- Zustimmung von Interessenträgern einholen
- Sicherstellen, dass QA weiß, was zu testen ist
- Dokumentieren Sie, was Sie für zukünftige Referenz gebaut haben
Dann ja.,, sogar eine schnelle Spezifität hilft... es tut... es muss formal sein... ein paar Kugelpunkte in einem Ticket, das Problem abdeckt.
Der test, wenn du erklären kannst, wie '... wie " aussieht in zwei Sätzen... du brauchst eine Spezifikation.
Wie handle ich Stakeholder, die alles im Rahmen wollen?
Punkt auf die Out of Scope-Sektion; erklären Sie, dass;
- Hinzufügen von mehr erhöht die Zeitlinie Sie wollen das Feature A in den 1 Wochen oder die Features A, ,, B, ,, C, , und D in den 5 Monaten
- Wir können es als Nächstes machen. ", die eine große Idee ist, ., Let-'s erhalten den Kern arbeiten zuerst ,, dann angehen, dass als separate Spezifikation ."
- Time---Box Kräfte Prioritäten Wir haben 2 Wochen, welche von diesen am wichtigsten ist
Wenn sie darauf bestehen, dass alles genauso kritisch ist, dann schlagen sie vor, welche andere Arbeit stattdessen zu verzögern ist.
Was, wenn sich die Spezifikation so sehr ändert, dass sie von Anfang an unerkennbar ist?
Dass ,''s fein , ,' so lange wie ,:'
- Änderungen werden dokumentiert, um den code zu ändern.
- Änderungen werden mitgeteilt. Die Interessengruppen wissen, was sich verschoben hat und warum.
- Du hast etwas gelernt, die Veränderungen spiegeln das Lernen wider.
Wenn die Spezifikation nicht erkennbar ist, weil Sie das Problem zunächst völlig missverstanden haben, dass -' - ein Zeichen für mehr Entdeckungen ist, bevor Sie nächstes Mal beginnen - . - aber Iteration und Lernen werden erwartet
Die Versionsgeschichte sollte die Geschichte von dem erzählen, was du gelernt hast
In Startups wird dies als ein "'-Pivot" bezeichnet, wo Sie beginnen, ein Spiel aufzubauen und am Ende bauen eine erstaunliche Messaging-System stattdessen "MSC2" Sie haben gehört, von mobilen Spiel Glitch-, "Sie haben wahrscheinlich von dem Messaging bit gehört.;...
Don-'-t erhalten zu gesperrt in, .- Wenn dort, '-t Möglichkeiten durch Drehen TAKE THEM-.-t
Sollte ich Spezifikationen für Fehlerbehebungen schreiben?
Für kritische Bugs, :, nein, ,, fixiere sie einfach.
Für komplexe Bugs, die mehrere Systeme beeinflussen oder architektonische Änderungen erfordern, ist : ja. Behandeln Sie es wie ein Feature – . – Was ist 's gebrochenes (Problem – ), – wie man es repariert ' – Solution – MSC8 – wie Sie es kennen ' – fest ), – was Sie nicht ändern
Für alles, was dazwischen liegt, verwenden Sie Ihr Urteil... wenn die Lösung offensichtlich ist oder Nebenwirkungen haben könnte....
Dies ist ESPECIALLY true für Sicherheits-Bugs... Du musst genau wissen, was du behebt und wie du es verifizieren wirst.
Wie formal sollte die Spezifität sein?
So formal, wie dein Team es braucht Einige Teams sind in Ordnung mit detaillierten JIRA-Tickets Andere wollen richtige Dokumente in der Versionskontrolle
Die Formalität ist weniger wichtig als der Inhalt
- Problemstellung löschen
- Vorgeschlagene Lösung
- Definition des Fertigerzeugnisses
- Grenzen des Geltungsbereichs löschen
Du kannst schreiben, dass in Markdown-,-Confluence-,-Wort oder auf einer Serviette zerkratzt Das Format doesns.'-t matter... das Denken tut .-
Dies ist der oft unerwähnte KEY zu Agile-Entwicklung.; und warum ich Agile Frameworks hasse.(. und SCRUM-).. Der WHOLE POINT ist, dass wie ein agiles Spezifik Ihr Prozess auch adaptiv sein muss..... Wenn ein wenig zu schreiben nicht für ein Team funktioniert, aber eine Menge tut dies tun .. Wenn keine Docs für ein winziges Team arbeiten, sondern volle docs für einen großen arbeiten?,. Wenn Tageszyklen für ein Team arbeiten, aber eine Woche Sprints für einen anderen, dann tun Sie das. Die WHOLE IDEA ist es, das beste Produkt zu machen - Ihr Team ist die Maschine MAKING, dass product-.. Machen Sie die Maschine so reibungslos wie möglich arbeiten
Als Manager schauen Sie, was Ihre Ausgänge sind, wenn das Board einen Burn-Down Graphen benötigt, wie können SIE die aktuellen Daten verwenden, um eins zu bauen?.. Wenn Sie die risible verwenden müssen
Am Ende Sie Team outputs features UND was Stakeholder brauchen, wenn Sie die Auswirkungen auf das Team reduzieren können, dann, dass...
Was ist, wenn I''m der einzige Entwickler auf dem Projekt
Du benötigst immer noch Specs.,, vielleicht mehr so.., In sechs Monaten, wenn du diese Funktion erweitern musst, wirst du nicht daran erinnern, warum du bestimmte Entscheidungen getroffen hast.MSC4, Das Spec ist dein vergangenes Selbst, das mit deinem zukünftigen Selbst spricht.
Plus, das du immer noch brauchst
- Schätzarbeit für wen immer Sie zahlen
- Definieren Sie was bedeutet, damit Sie beenden können
- Dokumentieren Sie, was Sie für andere gebaut, die später beitreten könnte
Schreib-Spezifikationen für sich selbst ist wie Schreiben Einheit tests.:, es fühlt sich jetzt langsamer an, aber spart Zeit später.MSC1.like me...,. IM'.m in meinem 50.s. ,. I FORGET SHIT heutzutage.MSSK6. schreibe es auf, damit es erledigt wird, auch wenn es nur eine github Ausgabeliste ist.)..
Wie gehe ich mit Scope Kriechen verkleidet, wie 'Bedarfsklärung
Rufen Sie es aus, wenn jemand sagt: " Ich vergaß zu erwähnen, dass es auch tun sollte, dass nicht klären ;" es ' "neuen Umfang"
Response-:"Das ist eine gute Anforderung -,- aber es ist nicht, was wir in der Spezifikation vereinbart haben .-Lets fügen Sie es zu den Out of Scope Abschnitt für jetzt und diskutieren, ob es enthalten oder speichern Sie es für die Version
Wenn es wirklich eine Anforderung ist, dann nicht ein nettes -.
- Aktualisieren Sie die Spezifikation, um es aufzunehmen
- Aktualisierung der Schätzung
- Erhalten Sie eine Einigung auf die neue Timeline oder was zu schneiden, um die ursprüngliche Timeline passen
Nie leise absorbieren scope krye-.-It-'-ll zerstören Ihre Schätzungen und Glaubwürdigkeit
Kann ich mit der Codierung beginnen, bevor die Spezifikation vollständig ist?
Ja, ,, wenn du - 're Prototyping zu beantworten offene Fragen - . Nein, ,, wenn Sie Gebäude für die Produktion - MSC5
Prototyping, um zu lernen ist gut, :... Wir haben drei Ansätze, lassen Sie mich jeden Spike zu sehen, welche am besten funktioniert, die das Spec-. informiert
Bauen von Produktionscode, bevor die Spezifikation fertig ist, bedeutet, dass Sie das falsche Ding bauen.
Ausnahme , wenn du die Produktinhaber und Entwickler bist , ,( ,solo Projekt , ), , können Sie spezifizieren und gleichzeitig kodieren , aber immer noch dokumentieren Ihre Entscheidungen, wie Sie gehen , . ,
Die ', bis die Spezifikation fertig ist, ist ein GREAT Weg, um die devs aufgeladen zu beginnen ., Bewertung von Technologie-Annäherungen .,, schreiben gemeinsame Boilerplatte etc .
Was, wenn mein Team keine Daten liest?
Finden Sie heraus warum.
- Zu lange Machen Sie sie kürzer, mehr Scannable
- Zu formell ,?' Verwenden Sie ein leichteres Format
- Nicht relevant Stellen Sie sicher, dass sie wirklich das Detail benötigen, das Sie zur Verfügung stellen
- Schlechte Angewohnheit Beginnen Sie mit der Spezifitätsprüfung, bevor die Entwicklung beginnt
Wenn Leute die Spezifität überprüfen überspringen und dann das falsche Ding bauen, machen Sie den Schmerz sichtbar.......... ..dieser war......... im Spektifikum...... also müssen wir...
Auch machen :-Spezifikationen leicht zu finden, wenn sie sich in einem obskuren Wiki vergraben haben.
Wie viel Zeit sollte ich auf einem Spezifikum verbringen
Regel des Daumens-:---MSC1-- der Entwicklungszeit -.--
Für ein Feature mit einer Woche, :, 1-2, Tagen auf dem Spec... Für ein Feature der 1--Woche... einen halben Tag auf dem Spec... Für einen Tag, an dem ein oder zwei Stunden auf dem Spec-.
Aber nicht religiös sein über es , . , Einige Funktionen benötigen mehr up ,- ,front thinking , . , Andere sind offensichtlich und die Spezifizierung dauert , 20 , Minuten ,
Wenn du mehr Zeit auf dem Spec als auf der Implementierung verwendest, dann überdenk es mit 're überdenke daran, dass : Specs Werkzeuge sind, die dir helfen, nicht Kunstwerke zu bearbeiten..
Warum sind Schätzungen immer falsch?
Da die Software-Schätzung grundsätzlich schwierig ist, ist hier die unbequeme Wahrheit Schätzwerte funktionieren nur, wenn du die Aufgabe vor dem , in dieser Umgebung mit diesen Werkzeugen exact erledigt hast.
Was fast nie passiert
Jedes Mal, wenn Sie schätzen
- Unbekannte Unbekannte Probleme, die du nicht kennst
- Bekannte Unbekannte Probleme, die Sie kennen existieren aber haben keine IDEA wie zu lösen
- Änderung der Anforderungen Das Spektakel entwickelt sich, wie Sie bauen (.Der CEO hat eine verrückte Idee in der Dusche ... Es passiert ;. Ich habe einmal einen Anruf von meinem Kunden HUGELY DRUNK in der Brause mit einem dummen Ides).
- Umweltunterschiede Diese Bibliothek arbeitete in Ihrem letzten Projekt, aber diese hat unterschiedliche Abhängigkeiten.
- Probleme bei der Handhabung Die Build-System-Ausführungspipeline- oder Testumgebung verhält sich anders
- Integrationsüberraschungen Das API you-'®re Aufrufen funktioniert nicht ganz wie dokumentiert
- Menschliche Faktoren Sie werden unterbrochen, wenn Sie sich mit Fragen der Produktion befassen.
- Finanzen Manchmal wird früher eine kleinere Version benötigt, weil *Ansonsten sind wir ' Aus dem Geld , dass ,' , COMMON in Startups , . , ( , IMKSK5 , haben einen Artikel auf , ,' , Start-up dev , und wie es sich von ,' , normal dev-' , in der Zukunft .)
Dies ist der Grund, warum
- Ranges schlagen Punkteschätzungen --Tagen, die Unsicherheit erkennen
- Spikes Hilfe Verbringen Sie einen Tag zu untersuchen, bevor die volle Arbeit geschätzt wird... ist diese Technologie härter oder einfacher als ich geschätzt habe.
- Zeit---Boxen ", die wir auszahlen und sehen, was wir erhalten, setzt Erwartungen
- Historische Daten Verfolgen Sie, wie lange ähnliche Aufgaben tatsächlich dauerten
- Padding ist ehrlich Wenn Sie denken, 3 Tage sagen, , sagen, dass Sie mehr Recht haben, . das Konzept von .
Je mehr Roman die Arbeit, desto schlechter Ihre Schätzungen ,. , Gebäude der gleichen CRUD-Form you , ' , have built .50 times , ? , You , ' , wird in der Nähe sein ?. , Integration mit einem neuen Service mit einem unbekannten Protokoll ,? , Ihre Schätzung ist eine Vermutung in Hoffnung gewickelt ,
Dies ist, warum die Spezifika klar brauchen ".done-". Kriterien... Sie können '.t genau schätzen, aber Sie können definieren, wann zu stoppen .. Das ist wertvoller als .
Was ist mit Spezifikationen für Forschungs- oder Explorationsaufgaben?
Diese benötigen unterschiedliche Kriterien für ", anstatt X works, ,", es ist 's, die ",we, MSC7,ve beantwortete Frage Y-."
Beispiel für die Exploration
- ProblemstellungWir wissen nicht, ob Annäherung A oder Annäherung B besser für die Empfehlungsmaschine ist
- LösungVergeben Sie die beiden Ansätze für das Prototyping der 1-Woche
- Fertige KriterienWir haben arbeitende Prototypen von jedem ,, , Performance-Metriken für beide , , , und eine Empfehlung zu verfolgen,
- Aus dem AnwendungsbereichProduktionsimplementierung ( kommt, nachdem wir uns entschieden
Zeit---Boxen ist für die Exploration von entscheidender Bedeutung – ohne sie – ,-Forschungsaufgaben enden niemals mit ..
Wie schreibe ich Spezifikationen für Features, die ich nicht vollständig verstehe?
Beginnen Sie mit dem, was Sie wissen
- Problemstellung: Sie sollten dies wissen
- Vorgeschlagener Ansatz - Ihre beste Vermutung - )
- Offene Fragen Alles, was du nicht weißt
- Geleistete Kriterien - auch wenn grob -
Markieren Sie Abschnitte als ", TBD, .", seien Sie ehrlich über Ungewissheit.
Dann verwenden Sie die Spec-Review-Prozess, um Lücken zu füllen Die Gespräche während der Überprüfung oft klären, was Sie nicht verstehen
Erinnern Sie sich an die unvollständigsten Beats von -, die vollständig sind
Kann GitHub Ausgaben , / , JIRA Tickets werden die Spec , ?" ,
Absolut, das Spezifik doesn't müssen ein separates Dokument sein.Eine gut geschriebene GitHub Ausgabe oder JIRA Ticket kann als Spezifik perfekt gut dienen.
Was zählt, ist der Inhalt, nicht der Container, sondern ein gutes Problem.
- Problemstellung löschen Was lösen wir und warum?
- Vorgeschlagene Lösung Wie wir uns ihm nähern
- Fertige Kriterien Prüfbare Annahmekriterien
- Geltungsbereichsgrenzen --Was ist ' in und außerhalb des Erfassungsbereichs?
- Offene Fragen Markieren Sie diese mit einem Etikett oder ähnlichem
Die Vorteile der Verwendung von Issues
- Alles an einem Ort --Code, ,-Spezifikationen und Aufgabenverfolgung
- Einfache Verknüpfung Referenzbezogene Probleme – ,Prs – ,emitt
- Integrierte Versionierung von - Ausgabe Bearbeitungsverlauf zeigt, wie sich die Anforderungen entwickelten
- Vertrauter Workflow Team weiß bereits, wie man es benutzt
Tipps für die Verwendung von Problemen als Spezifika
- Verwenden Sie die Ausgabe-Beschreibung für das Spec.,, nicht in den Kommentaren begraben.
- Aktualisieren Sie die Beschreibung, während sich die Spezifikation entwickelt.
- Beschriftungen verwenden, um den Zustand anzuzeigen
- Pin wichtige Spezifika Diskussionen, so dass sie nicht erhalten verloren in Kommentaren
- Link zu den Belegen Mockups M), falls erforderlich
Der Test könnte jemand das Problem lesen und wissen, was zu bauen ist.,, was bedeutet , und was bedeutet, dass ?, wenn ja, ,, es eine gute Spezifikation unabhängig vom Format ist.
Was ist mit Spezifikationen in regulierten Industrien?
Wenn Sie sich in der Gesundheitsfürsorge befinden, dann benötigen Sie vielleicht mehr formale Spezifikationen für die Compliance. Die Grundsätze gelten immer noch.
- Beginnen Sie mit dem Problem
- Definieren Sie klar
- Evolve wie du lernst
- Halten Sie die Spezifikationen aktuell
Aber du musst auch :
- Folgen Sie Ihren Standards für die Dokumentation
- Erforderliche Abschnitte einschließen Sicherheitsanalyse,Bestimmung der Vorschriften,Betrachtungspfade
- Erhalten Sie formale Zeichen, wenn erforderlich
- Genauere Versionshistorie beibehalten
- Halten Sie Spezifikationen, nachdem das Projekt beendet wird.
Selbst in regulierten Umgebungen – agile Spekting-Arbeiten – . – Sie haben einfach mehr Reifen, um durchzuspringen –. – Die Spezifikation ist immer noch ein Tool – ; – es ist nur ein Werkzeug, das die Regulatoren und Entwickler zufriedenstellen muss.
Schlussfolgerung
Gute Feature-Spezifikationen in einer agilen Umgebung zu schreiben ist eine Fähigkeit, die sich mit der Praxis verbessert Das Ziel ist es, perfekte Specs nach oben vorne zu schreiben (ethey don.'eat existent );eit 'es zum Schreiben von Spezifikationen, die Ihrem Team helfen beginnen und entwickeln, während Sie lernen .e
Die wichtigsten Grundsätze
- Specs sind Werkzeuge, nicht Verträge Details hinzufügen, wo du es brauchst, entwickeln sich wie du lernst
- Beginnen Sie mit dem problem,-nicht die Lösung Umsetzung fließt aus dem Verständnis des Problems
- Nicht diktieren Alle tragen dazu bei, die Spezifikation besser zu machen
- Definieren Sie eindeutig Verhindern Sie die Metastasierung der Funktion mit konkreten, testbaren Kriterien
- Aus dem Anwendungsbereich Was du nicht tust, ist so wichtig wie das, was du bist
- Voraussichtliche Entwicklung Eigenschaften ändern sich, während du sie erbaust.
- Halten Sie die Spezifikationen aktuell Sie werden die Grundlage für Tests und zukünftige Entwicklung
Der schwierigste Teil ist das Schreiben der anfänglichen Spezifika ., es zu wissen, wann die Arbeit an einer Funktion zu stoppen.., ohne klare Kriterien ", ,, Eigenschaften wachsen für immer und nie Schiff.
Dies ist, warum agile Schätzung so schwierig ist, .-YOU-'-YU nicht nur die Implementierungszeit abschätzen.;-YuU-'-You-Schätzung der Lernzeit abschätzt.. Wie lange wird es dauern, um zu entdecken, was tatsächlich das Problem löst??.Niemand weiß es, weil du es noch entdeckt hast, '.
Das beste, was Sie tun können :, um klar zu sein, was "... bedeutet: ,, Zeit: -, Box Ungewissheit:,, und aktualisieren Sie die Spezifikation, wie Sie lernen ., Behandeln Sie es wie code.:, Version: ,, refactor it...
Eine gute Spezifikation befähigt Entwickler, Probleme intelligent zu lösen, während sie genau wissen, wann sie aufhören können.' ist ein Konversationsstarter.
Und wenn du einen Entwickler liest, der ein Spezifik liest, das nicht Sinn macht oder kein klares Menü hat, " Kriterien: sprechen nach oben. Es ist nicht schwierig ; Es ist professionell ' Besser jetzt zu sortieren, als eine Funktion zu bauen, die wächst, bis es die gesamte Anwendung übernimmt..