# Agile Speccing: Kirjoituksia, jotka todella toimivat

<!--category-- Software Development, Documentation, Agile -->
<datetime class="hidden">2025-11-11T11:30</datetime>

# Esitys

Vuosien mittaan olen lukenut / kirjoittanut satoja ominaisuuksia koskevia sääntöjä, . jotkin niistä olivat loistavat,; useimmat olivat verisen hirvittävät.. Hyvän ja huonon sääntöjen välinen ero ei ole длинasta tai muodollisuudesta vaan siitä, auttaako se itse asiassa kehittäjiä rakentamaan asianmukaista asiaa ajamatta heitä hulluiksi prosessissa,

Tässä on jotakin, mitä olen oppinut Microsoftissa ja joka muutti tapani ajatella erityispiirteitä. **Luettelo ei ole Raamatun teksti.** Kuten mikä tahansa väline, käytätte sitä työn tekemiseksi. lisäätte niin paljon yksityiskohtia kuin olette,, sidosryhmätM SK3 ja kehittäjät tarvitsevat päästämään eteenpäin . sitten mukautelette sitäMSC5 muuttakaan sitäCSK6 ja ajantasaistetaan sitä featuren kehittyessä

Suhtaudu asiakirjaan kuin pyhään asiakirjoon, jota ei voida muuttaa, ja te rakennatte väärän asian täysin.

Tämä agile-lähestymistapa määritelmiin luo erityisen haasteen: jos ominaisuus voi kehittyä, kun olette oppineetM SK1 miten te sen arviotte?

Yleisesti ottaen olen noudattanut periaatetta, jonka mukaan olen työskennellyt urani aikana.; Kaikki prosessit, olivatpa ne sitten tarkistuksia tai kertomuksia, /, raporttien täyttäminen /, jopa kooditarkastukset jne.

**Periaatteessa; feature Spec on keskusteluväline, jolla parannetaan ominaisuuksia NOT a dogmatic**

[TOC]

## Miksi Agile ( ja mitä se itse asiassa tarkoittaa

Agile ei ole ”’” – tai ”-” - tai ”Ups and sticky notes“ – tai “.”. **talousstrategia oikean asian rakentamiseksi epävarmuuden alla**. Eläimet elävät tässä epävarmuudessa , joten niiden on oltava myös joustavia [Agile Manifesto](https://agilemanifesto.org/), tehkää siitä se, miten te ajattelette kaiken rakentamista, . ajatelkaa sitä mallina tuotekehityksen suunnittelulle.

### Ensimmäiset periaatteet

* **Muutos on standardin mukainen, ei poikkeus** Markkinat muuttuvat, käyttäjät hämmästyttävät, riippuvuus vähenee, ., joustamattomuudesta voi tulla kuvitelma
* **Oppiminen on parempi kuin ennuste.** Todelliset vaatimukset paljastetaan vasta sen jälkeen, kun ihmiset käsittelevät asiaa. Agile tekee oppimisesta *halpa ja nopea*.
* **Herokätisyyden virta.** Pienet, jatkuvat liikkeet voittaa suuret, harvoin M SK2huoletMSC3 laskut .

### Taloudellisuus (miksi tämä säästää rahaaM SK1

* **Minimise the cost of being wrong.** Lyhyet kierrokset + kevyet erityispiirteet merkitsevät sitä, että huonot ajatukset kuolevat nopeasti sen sijaan, että ne kumottaisiin kuuden viikon rakentamisessa
* **Viivästykset peruuttamattomissa päätöksissä.** Pidätte vaihtoehdot avoimina aina viimeiseen vastuulliseen hetkeen asti; sitoudu silloin, kun tiedot ovat korkeimmat ja riski alhaisinM SK1
* **Vähentää varastoa.** Puolet -kirjalliset epit ja valtavat “future SSK2osat ovat työtäM SK3in -progressivelka S. aluksen pienten osien MISK6pankki arvo MESK7

### Tulosputket ovat tuote

Jokainen ketju lyhentää “idea” ja “käytännöllinenM SK3 välistä suhdetta.

* **Luettelo ⇄ DevM SK1** mahdottomuudet päästä kiinni ennen kuin koodi siementoi ne.
* **Dev ⇄ QAM SK1** muuttamaan hyväksymiskriteerit täytäntöönpanokelpoisiksi tarkastuksista.
* **Sisäiset koirajauhot ⇄ käyttäjätM SK1** osoittaa, että se ratkaisee todellisen ongelman

> Tarkastetaan täsmennystä jokaisen loopin jälkeen. Muutospäiväkirja on *tarina siitä, mitä olette oppineet*.

# Mikä tekee hyvästä erityispiirteestä

## Ongelma-ratkaisumalli

Yksittäinen tärkein periaate määritelmien kirjoittamisessa: **Aloita aina ongelmasta, ei ratkaisusta .**

Tämä malli on yksinkertainen:

1. **Ongelma** - Mitkä käyttäjät kokevat vaivaa?
2. **Ratkaisu** Tässä on se, miten ehdotamme sen korjaamista. / hyödyntää tätä tilaisuutta
3. **Laajuudessa** - Mitä teemme tältä osin
4. **Laajuuden ulkopuolelle** - Se, mitä me teemme, ', emme tee nimenomaisesti , mikä on yhtä tärkeää, M SK3, panee meidät tulevaan suunnitteluun ja lopettaa kysymyksen.

I'on nähnyt lukemattomia täsmennyksiä, jotka nousevat suoraan \"\ käyttäjä klikkää X-puppua, joka kutsuu API:ta Y \ "\ selittämättä koskaan sitä, mitä käyttäjä itse asiassa yrittää saavuttaa \.\ Tämä on arse\M SK4\ taaksepäin\.\ täytäntöönpanon yksityiskohtien pitäisi kulkea luonnollisesti ongelman ymmärtämisestä\

Muistakaa, että kehittäjät ovat erityispiirteitä rakentavia laitteita aidosti (koodi on väline, jolla tarjotaan erityispiirteetM SK1 kertoa heille mitä *on tehtävä* NOT miten se tehdään. jos teillä on UX-henkilö, joka on vastuussa UX:n erityismääräyksestä, silloin devin ja heidän pitäisi työskennellä yhdessä *käyttäjälle* , joka voi muuttua ja jokaisella on valtuudet vaatia muutosta ”(” -määräyksessä “)” - ja sen tarkistamista koskevan prosessin avulla testata ajatus“.”

```mermaid
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
```

## Tarkoituksen selkeys

Ennen kuin kirjoitatte yhden sanan täytäntöönpanosta, teidän on vastattava yhteen kysymykseen. **Miksi?**

Miksi me rakennamme tätä??, mitä ongelmaa se ratkaisee??, ketkä hyötyvät siitä? ?, jos pystytte vastaamaan näihin kysymyksiin selkeästi?

Hyvä tarkistus alkaa :

1. **Ongelman lausunto** - Mitkä ovat?
2. **Kuluttajien vaikutus** - Kuka huolestuttaa ja miksi?
3. **Tuloskriteerit** - Miten tiedämme, että olemme ratkaisseet sen?
4. **Ei---tavoitteet** - Mitä me nimenomaisesti emme tee ? Tämä estää laajuuden leviämistä ja loputtomia keskusteluja

## Oikea yksityiskohtainen taso

Tämä on se paikka, jossa suurin osa täsmennyksistä menee tits-upM SK1 liian epämääräinen ja kehittäjät jäävät arvaamaan ; liian yksityiskohtainen ja te' mikrohallinnatte täytäntöönpanoa koskevia valintoja, joita kehittäjät ovat paremmin päteviä tekemään

Trick on määritellä **Mitä** on tapahduttava ilman **Miten** tapahtuu. Esimerkiksi

**Hyvä**Kun käyttäjä yrittää toimittaa lomakkeen, jossa on virheellisiä tietoja, hän saa välittömästi palautetta siitä, mitkä alueet tarvitsevat korjausta.

**Huono**: "Formin jättämisessä, jättämispuitteellaM SK3s Click-käsittelijällä pitäisi kutsua validateFormiMSC4, joka toistaa lomakkeen kauttaFields-arvojen tarkastuksessa kutakin aluetta koskevien sääntöjen vastaisen arvon.

Ensimmäinen kertoo minulle, millainen käyttäjäkokemus pitäisi olla; Voin panna sen täytäntöön React-ohjelmissa, VueM SK2 vanilla JavaScript , tai karrier pigeon riippumatta siitä, mitä se merkitsee–. Toinen edellyttää toteutus yksityiskohtia, jotka saattavat olla täysin vääriä tekninen ryhmälle tai ottaa käyttöön tarpeettomia rajoituksiaMSC5 Eri ihmisillä on eri vahvuudet usein henkilö, joka kirjoittaa tarkistuksen ei oleMST6 ei teknistä M ST7 eiM st8 ei henkilö, jolla kirjoitetaan koodiaMst9 kuvitelkaa olevanne taksikuljettaja, jota ei kerrota määräajasta mutta jokaista vaihtelua ei tapahdu.

<img src="https://media.tenor.com/la1K-_RBV0cAAAAi/chick-stab-chick.gif" />
## Käyttäkää kuvia / etenemissuunnitelmat; Saavuta tavoitetta

Muistakaa teidät'pyritätte saamaan ihmiset ymmärtämään, mitä te ehdotatteM SK1tarkoitan teille.Jotkin ryhmät sisältävät Figman asiakirjoja (kertomustaulua /ux 'tarkistusta') tai kuvauksia UI:stä, jonka designer on rakentanut *varmistamaan, että teidät ymmärretään*. Käyttäkää kaikki tarvittavat työkalut

[Wikin mermaid-ohjelmassa .js-diagrammat ovat GREAT tälleM SK1 ](https://www.mostlylucid.net/blog/category/Mermaid); muistaa, että AI on loistava luomassa näitä myös tekstin kuvauksen perusteella

Jotkut ihmiset osaavat analysoida kirjallisia kuvauksia, jotkut tarvitsevat kuvia ja elokuviaM SK1

```mermaid
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]
```

## Rajatapaukset ja virheiden käsittely

Jos on yksi asia, jonka olen oppinut, se on tämä. **Käyttäjät löytävät keinoja murtaa se, mitä ette ole koskaan kuvitelleet**

Hyvässä määritelmässä ei ”'” vain kuvata onnellista tietä, vaan siinä otetaan huomioon“;” ja “:”.

- Mitä tapahtuu, kun verkko epäonnistuu keskipitkällä aikavälillä
- Mitä tapahtuu, jos käyttäjällä ei ole lupia?
- Mitä tulee samanaikaisiin muutoksiin?
- Miten käsittelemme osittaisia epäonnistumisia hajautetuissa operaatioissa?

Te ette' tarvitse ratkaista kaikkia näitä yksityiskohtia, mutta teidän on tunnustettava, että ne ovat olemassaM SK2 Mikään ei häiritse kehittäjiä enempää kuin todeta täytäntöönpanon puolivälissä, ettei kukaan ole miettinyt sitä, mitä tapahtuu, kun ulkoinen API on heikentynyt .

MYÖNTEISistä se'on todennäköistä, että neM SK1 jäävät tämän tarkistuksen soveltamisalan ulkopuolelle. Teillä voi olla 'tekniset tarkistuksetMSC4, jotka antavat yksityiskohtaiset täytäntöönpanoa koskevat yksityiskohdat ja tekniset ratkaisut.

## Turvallisuus- ja suoritusnäkökohdat

Niitä ei pidä ”'” –kodin tarkastelun yhteydessä käsitellä jälkikäteen – jos on olemassa erityisiä turvallisuusvaatimuksia, ”(“ –todentamisasteet”, “,” –tietoen salaus, „,” – tilintarkastuksia koskevat merkinnät, ” )” – täsmentää niitä ”Specissä”, ”M SK6”

Vastaavasti, jos suorituskykyrajoituksia on, jotka ovat tärkeitä M SK1Tämä haku on saatava päätökseen enintään 200ms:n alapuolella, kun tietojenkokonaisuus on 1 miljoonan rekisterin arvoinen

# Hyvän lajin rakenne

Tässä on malli, jota käytän ominaisuuksien määrittämiseen.

## 1. Yleiskatsaus

Yksi tai kaksi kohtaa, joissa esitetään yhteenveto siitä, mitä me rakennamme ja miksi se on tärkeää.

## 2.Täytäntöönpano

Mikä on tämänhetkinen tilanne?What'What prompted this feature? What have users been asking for? What would help us make more money?

Sain sen—let’s laajentakaa osuuttanne **käyttäjäkertomukset** ”’” ei ole vain luettelo, vaan elinkelpoinen karta siitä, miten erilaiset käyttäjät toimivat järjestelmän kanssa.

---


## 3. käyttäjien tarinat henkilöiden kanssa

Käyttäjäkertomukset eivät ole pelkkiä laatikkoja, ne ovat tapa **ilmentää todellisia ihmisiä** ja niiden päämäärät. Te tiedätte **koko tämän asian rakentaminen**.
Kun kutakin tarinaa sitotaan henkilöön, pakotetaan ajattelemaan todellisia käyttömalleja, motivaatioita ja rajoituksia.

Loppujen lopuksi henkilöt ovat tervetullut tapa tunnistaa, miten ohjelmistonne voi palvella erilaisia käyttäjätyyppejä. Kenties Alex tarvitsee taulukon turvallisuuskysymyksiä varten omassa ominaisuuksissanne, kenties Morgan tarvitsee luvansa rajoitettuja, jotta hän ei murtaisi mitään jne.

**Kuten [persona / käyttäjän tyyppi] Haluan [tehdä jotain] Jotta [Olen saavuttanut jonkin tavoitteen**

Euroopan unionin **“siihen** lausekkeella suojataan rakennuksia koskevia ominaisuuksia, joita kukaan ei tarvitse.

---


### Esimerkki henkilöistä

- **Alex hallinnoija** – huolehtii valvonnasta
- **Jamie tavallinen käyttäjä** – arvostaa yksinkertaisuutta ja nopeita voittoja
- **Priya Power User** – vie järjestelmän rajoilleen
- **Morgan uusitulija** – tarvitsee ohjeistusta
- **Taylor, sidosryhmä** – ei, ’ ei käytä järjestelmää päivittäin, mutta tarvitsee näkyvyyttä tuloksiin.

---


### Esimerkki käyttäjäkertomuksista

| Persona | tarina SSK2 Miksi se on tärkeää |
|---------|-------|----------------|
| Alex **Hallinto**, Haluan antaa tehtävät ja valtuudet **niin että** Voin varmistaa tietoturvan ja -vaatimusten noudattamisen. M SK1 Estää luvattoman pääsyn ja pitää järjestelmän uskottavana
| Jamie **Tavallinen käyttäjä**, Haluan yksinkertaisen taulukon **niin että** Voin nopeasti nähdä tärkeimmät tiedot ilman, että olen hämmästynyt. M SK1 Vähentää joustavuutta ja lisää hyväksyntää . \|
| Priya **Sähköinen käyttäjä**, Haluan luoda räätälöityjä työvirtoja **niin että** Voin automatisoida toistuvia tehtäviä ja säästää aikaa
| Morgan **Uusitulija**, Haluan ohjattuja opastuksia ja työkaluohjeita **niin että** Voin oppia järjestelmästä ilman, että tunnen menettäväni. M SK1 Parantaa paikan päälläoloa ja säilyttämistä . ≥|
| Taylor ( Stakeholder ) | **sidosryhmät**, Haluan, että minulle lähetetään säännöllisesti raportteja **niin että** Voin seurata edistymistä ilman, että tallennetaan.

---


### Miksi Personat + tarinat toimivat yhdessä

- **Personas humanize the abstract.** Sen sijaan, että "käyttäjät" ja "käyttäjät" ajattelevat Alexia ja Jamiea ja Priyaa sekä Morgania ja Tayloria
- **tarinat yhdistävät piirteet tavoitteisiin.** “ niin, että ”lauseke vahvistaa selkeyttä M SK2 jokaisen ominaisuuden on oltava tarkoituksenmukainen
- **Muodot tulevat esiin.** Kun kerrotaan useita kertoja, näette päällekkäisyyksiä, konflikteja ja painopisteitä henkilöiden kesken.

## 4. Yksityiskohtaiset edellytykset

Tämä on lihanne ja perunanne. Jakakaa se toiminnallisella alueella. Käyttäkää alaotsakkeita vapaasti . Luottakaa mallit tai moitteet, jos niissä on niitäM SK3 kuva on tuhannen sanan arvoinen

Jokaisen vaatimuksen osalta vahvistetaan

- Odotettu menettelytapa
- Kaikki rajoitukset tai validointisäännöt
- Ongelmanhallintavaatimukset
- Miten se toimii olemassa olevien ominaisuuksien kanssa

## 5. MuutoinM SK1Funksivaatimukset

Toimivuustavoitteet, turvavaatimuksetM SK1 käyttökelpoisuusnormit, ohjelmistojen tukeminen / Älkää luulko, että nämä ovat itsestään selviäMSC6 Joissakin joukkueissa ne voivat olla TOisia TEAMejaMST7 mutta etteMst8 unohda keskittymistäänM st9 Jos yhdestä pyörän osasta tulee vesifalli, te olette menettäneet valmiutenne määritelmän mukaanMstr10

## 6. Laajuuden ulkopuolelle

Tämä kohta on aivan yhtä tärkeä kuin se, mitä te ette tee tässä tarkistuksessa.

Miksi tämä on tärkeää:

- **Ennaltaehkäisy Scope Creep** - " Mutta voisimmeko,' emmekö vain,..." keskustelut kuolevat nopeasti, kun voimme viitata ulkopuoliseen ulottuvuusalueeseen
- **Asetetaan odotukset** - sidosryhmät tietävät mitä **won't** toimitetaan ( tällä kertaaM SK1
- **Mahdollistetaan tuleva työ** - Siihen sisältyvistä tuotteista voi tulla myöhemmin omat erityissäännökset
- **Työryhmä keskittyy** - Kaikki tietävät tämän työn rajat

Esimerkkejä tavaroista, jotka eivät kuulu soveltamisalaan:

- "Yhtenäispuhelintuki (kysymykset käsitellään erikseen
- " Olemassa olevien tietojen siirtäminen
- "Admin UI konfigurointia varten ( käyttää alun perin config-tiedostoja
- "Systöön X-järjestelmään integroiminen (riippuvuus ei ole vielä saatavilla

Jos joku väittää, että ulottuvuuskohdan olisi kuuluttava soveltamisalaan, -:n ja -:n väliseen ulottuvuuteen, että ' on keskustelu, joka kannattaa käydä ennen kehityksen alkamista., ei ole täytäntöönpanon puolivälissä.

## 7. avoimet kysymykset

Olkaa rehellisiä siitä, mitä ette tiedä.

## 8. Riippuvuus

Mitkä muut järjestelmät/teamitM SK1features riippuvat siitä? Mitä on oltava valmiina, ennen kuin kehitys voi alkaa

## 9. Hyväksymiskriteerit

Miten QA testaa tämän?? Niiden pitäisi olla konkreettisiaM SK1 testattavissa olevat lausunnot . Bonus-pisteet, jos ne ovat kirjoitettu sellaisessa muodossa, että niistä voisi tulla automaattisia testejä.

# Spec-virheongelma

Tässä on jotain sellaista, josta ei puhuta tarpeeksi. **Specsilla voi olla myös virheitä.**

Tarkistusvirhe on silloin, kun itse määritelmä on väärä.. Se voi olla ristiriidassa sen kanssa. , tai se täsmentää käyttäytymistä, joka on teknisesti mahdoton., vai se ratkaisee täysin väärän ongelman.. Nämä ovat petollisia, koska kehittäjät saattavat panna täytäntöön sen, mitä ' on kirjoitettu ja silti saada aikaan tuotteen, joka ei toimi asianmukaisesti.

## Miten Specin virheet tapahtuvat

1. **Epätäydellinen käsitys** - Asiakirjan kirjoittaja ei ymmärtänyt täysin ongelmaa tai olemassa olevaa järjestelmää
2. **Konfliktivaatimukset** - Eri sidosryhmät haluavat erilaisia asioita, mutta kukaan ei ratkaissut konfliktia.
3. **Tekninen mahdottomuus** - Päätöslauselmassa pyydetään jotain, mitä ei voida tehdä todellisuudessa
4. **Vaatimusten muuttaminen** - Maailma siirtyi eteenpäin, mutta tarkistusta ei saatu

## Spekkivirheitä käsitellään

Kun olette löytänyt täsmällisen virheen kehittäjänä, teillä on muutamia vaihtoehtoja:

### Vaihtoehto 1: Korostaa se välittömästi

Tämä on lähes aina oikea vastaus.

Lähettäkää selkeä viesti kaikille, jotka omistavat täsmennyksen:

- Mitä erityissäännöissä sanotaan
- Miksi se on ongelmallista?
- Mitä teidän mielestänne sen sijaan pitäisi tapahtua?( jos teillä on ehdotus

Tehkää tämä kirjallisesti.

### Vaihtoehto 2: panna se täytäntöön joka tapauksessa

Joskus saatetaan houkutella rakentamaan vain sitä, mikä on määritelty, vaikka tiedätte sen. **DON'T älkää tehkö tätä**

Olen nähnyt kehittäjiä panemaan täytäntöön säännöt, jotka he tiesivät olevan virheellisiä, koska QA hylkää ne tai käyttäjät valittavat niistä.

Poikkeus on se, että jos te olette esittäneet kysymyksen, jos teille on kerrottu jatkamaan asian käsittelyä, jos olette esittänyt sen kirjallisesti ja jos teette niin kirjallisesti.

### Vaihtoehto 3: korjaa itse

Jos olette vakuuttuneita siitä, että tiedätte, mitä täsmennyksessä sanotaan, voi olla kiusallista korjata se itse. Tämä on hienoa ilmeisten tekstien tai muotoilun osalta, mutta olennaisissa muutoksissa on saatava osapuolten suostumus.

Älkää koskaan muuttako vaatimuksia hiljaisesti. SeM SK1 on se, miten päädytte rakentamaan ominaisuuksia, joita kukaan ei ole pyytänyt

## Specin virheiden ehkäiseminen

Paras lähestymistapa on estää erityisvirheet ensisijaisesti:

1. **Kehittäjät otetaan mukaan varhaisessa vaiheessa** - Saatte teknisen tarkistuksen yksityiskohdista, ennen kuin ne ovat viimeistelty.
2. **QA:n huomioon ottaminen varhaisessa vaiheessa** - Jos sitä ei voida testata, sitä ei pystytä rakentamaan, , tehtävänne on tehdä jotakin, jonka avulla se pääsee käyttäjiin.
3. **Käyttäkää esimerkkejä vapaasti** - Lyhyesti sanottuja kuvauksia on helppo tulkita väärin.
4. **Validaatio nykyisen järjestelmän vastaisesti** - Onko täsmennyksessä esitetty olettamuksia siitä, miten asiat tällä hetkellä toimivat?
5. **Toistaa sääntöjä** - Suhtaudu asiakirjaan elävänä asiakirjana. Kun opitte enemmän täytäntöönpanon aikanaM SK2 saataisiin se ajan tasalle . Tulevat kehittäjät kiittävät teitä

# Tärkeimmät erot

## Novel-Length Spec

Joidenkin mielestä yksityiskohtaisempi on aina parempi.

Jos tarkistus muuttuu sota- ja rauhaksi, te jokoM SK1

- On tarpeen jakaa se useisiin ominaisuuksiin
- Määrätään täytäntöönpanon yksityiskohdat, jotka pitäisi jättää kehittäjille
- Ratkaisemme väärän ongelman ja tarvitsemme askelta taaksepäin

## Se epämääräinen käsiaalko

Päinvastoinen ongelma: M SK1Raportointijärjestelmän rakentaminen ." OikeellistaMSC3 Kiitoksia siitä. IMST5Kyllämme vain jotakin ja meMSP6katsemme, vastaako se sitä, mitä olette omassa päässänne pitäneet.

Jos tarkistuksenne voidaan ottaa kokonaisuudessaan huomioon yhdessä lauseessa,

## Ratkaisu-First Spec

" Tarvitsemme taulukkoa, " ei ole,' se ei ole välttämätöntä,; se on,M SK4, ennakkoluulteinen ratkaisu.. Saattaa olla, että tarvitsette taulukon, mutta ehkä tarvitsette jotain aivan muuta.. Aloittakaa ongelmasta.

## Siirtyvä tavoite

Vaatimukset, jotka muuttuvat päivittäin ovat't vaatimukset; neMSC2kaosM SK3 Jos asiat muuttuvatkin niin nopeastiMST4 ette ymmärrä ongelmaa tarpeeksi hyvinMSV6 pysähdyksestä ja tee lisää keksintöjä ennen kuin kirjoitatte sääntöjäMSS7

## Kitchen Sink

"Meidän kanssaan on oltava mukana, mutta voisimme myös olla mukana, ,Ei ..."Eei .Eivät me voi olla mukana't.Kaikilla ominaisuuksilla on hintansa,.Jos haluatte lisätä jotakin uutta, kirjoittakaa sille erillinen nimitys ja asettakaa se asianmukaisesti etusijalle.

# Sellaisten erityispiirteiden käsittely kuin lähdekoodi

Tämä on ajattelutavan muutos, joka on muuttanut tapaa, jolla kirjoitan tarkistuksia: **Suhtaudu erityistarkoituksiinne aivan samalla tavalla kuin kohdellaan lähdekoodia.**

## Versioonivalvominen

Tarkistusten pitäisi olla versiovalvonnassa kodin rinnalla.. Tarkastellaan niitä. . Seurataan muutoksia.\. kirjoitetaan merkityksellisiä sitoumusta koskevia viestejä ajantasaistamisen yhteydessä.

Microsoftissa, säilytimme tarkistuksen samat varastot kuin koodin. Kun tarkistus muutettiin, , se käytti samaa uudelleentarkasteluprosessia kuin koodM SK3 Tämä ei ollutMSC4ei byrokratiaa ; se varmistai, että kaikki ymmärtävät, mitä on muuttumassa ja miksi–. Jopa Wordin tarkistusten seuranta on parempi kuin mikään muukaan.

## Tehostetaan uudelleen erityispiirteet

Kuten koodi tarvitsee uudelleenfactorointia, niin myös erityiset säännöt. Kun opitaan enemmän täytäntöönpanon aikanaM SK2 erityissäännön pitäisi kehittyä heijastamaan tätä oppimistaMSC3

löydettiin parempi tapa ratkaista ongelma? Tarkastetaan tarkistuksen mukaan uutta lähestymistapaa ja selitetään, miksi olette muuttanut suunnan.

Kehitykselle jälkeisen tarkistuksen pitäisi olla tarkempi kuin kehityksen edeltävän tarkioituksen.. Jos se ei ole ', olette , ja te olette jättänyt mahdollisuutenne dokumentoida, mitä olette oppineet.

## Elävän asiakirjan periaate

Tarkistus ei ole't, ", toteutettu", kun kehitys on aloitettu,, se', se on vain ', valmis', jolle se on alkanut. Se', joka on saatu päätökseen, kun ohjelmia laaditaan ja niistä tulee kunnossapitomenettelyä., kunnes siihen asti,, se' on elinkelpoinen asiakirja, joka kehittyy ongelman ymmärtämisen kanssa.

Tämä ei tarkoita, että tarkistuksen olisi muututtava päivittäin.1 Tärkeimmät muutokset vaatimuksiin edellyttävät keskustelua ja yhteisymmärrystä.2 Mutta selvennykset.3 lisäesimerkit.4 äskettäin löydettyjä reittitapauksia on kaikki liitettävä takaisin tarkitukseen, kun ne löydetään.5

Ajatelkaamme asiaa seuraavasti:: jos ette tekisi' jätä vanhentuneita huomautuksia kodessa , jätettäkö vanhentuneet tiedot eritelmissäM SK4

## Miks Specs tarvitsee pysyä ajan tasalla

Tässä on jotakin sellaista, josta ei keskustella tarpeeksi. **olette perustana sille, mikä tulee sen jälkeen.**

**Testisuunnitelmat**: QA kirjoittaa testitapauksia, jotka perustuvat erityismääräykseenM SK1 Jos erityismääräys on vanhentunut , testit testaavat väärää asiaa. Saatte virheellisiä myönteisiä merkintöjä |(testit ohittavat, mutta merkki on murrettu | ) tai virheelliset kielteiset merkinnät

**Asiakirja**: käyttäjien asiakirjat, API-ohjelmia koskevat osiotM SK2 avustusjärjestelmät , käytännöllinen RAG AI -tukivälineenne \- ne kaikki alkavat täsmennyksestä \ . Jos täsmenyksessä kuvataan sellaisia ominaisuuksia, joita ei ole \ ' tai puuttuu sellaisia näkökohtia, jotka ovat suoritettuja \, osat ovat virheellisiä jo ensimmäisestä päivästä lähtien

**Tuleva kehitys**: Kun joku tarvitsee kuuden kuukauden kuluttua laajentaa järjestelmää, hän lukee tarkistuksen ymmärtääkseen, miten se toimii.

**Matkustus**: Uudet työryhmän jäsenet oppivat järjestelmän osittain lukemalla tarkistuksiaM SK1 Vanhentuneet tarkistukset opettavat heille väärää ajattelumallia siitä, miten ominaisuudet toimivat

Tämän vuoksi tarkistuksen on pysyttävä ajan tasalla.

Microsoftissa , käsittelimme tarkistuksen päivittämistä yhtä tärkeällä tavalla kuin koodin päivittämistäM SK1 Tarkistustarkistuksia tarkasteltiin uudelleen . Ne tarkistettiin kodin ohella. Kun jokin ominaisuus muutettiinMSC4 tarkiston päivittäminen ei ollutMST5ei valinnaistaMSSK6 se oli osa määritelmää

Jos koodia muutetaan, mutta ei tarkisteta täsmennystä, olette luonut TECHNICAL DEBTin. Tuleva työ hidastuu, koska kukaan ei tiedä, mikä nykyinen tilanne on.

<img src="https://media1.tenor.com/m/3T1hzop89-kAAAAC/debt-credit-card.gif" height="250"/>
# Specin ja täytäntöönpanon välinen suhde

Tässä on se, mitä nuoremmat kehittäjät eivät useinkaan ymmärrä **Tarkistus ei ole totuuden lähde.**

Se kertoo teille, mitä olette rakentamassa.

Tämä tarkoittaa:

1. **Lajikkeiden pitäisi kehittyä** - Kun olette havainneet asiat täytäntöönpanon aikanaM SK1 päivittää tarkistuksen . Se' sen asiakirjan, mitä te olette rakentamassa
2. **Täytäntöönpanon yksityiskohdat Don't kuuluu erityisluokitteisiin** - Kun olette ryhtyneet toteuttamaan ,, koodi itse asiassa dokumentoi sen, miten  joissakin kohdissa on 'Technical Spec', mutta ne ovat harvinaisia ja usein haitallisia.
3. **Testit ylittävät kuilun** - Hyvät testit varmistavat, että täytäntöönpano vastaa vaatimuksia

# Erilaisille yleisölle tarkoitettujen sääntöjen kirjoittaminen

Erilaiset ihmiset tarvitsevat eri asioita kuin erityispiirteet:

**Johtajat** - Halua tietää yrityksen arvon ja suunnitellun aikataulun

**Tuotteiden hallinnoija** - On ymmärrettävä, miten se sopii laajempaan tuotestrategiaan ja etenemissuunnitelmaan.

**Kehittäjät** - Tarvitaan riittävästi yksityiskohtia, jotta voidaan panna täytäntöön asianmukaisesti ilman, että heille kerrotaan, miten heidän tehtävänsä on hoidettava

**QA** - Heidän on tiedettävä, miten se toimii.

**Designerit** - On välttämätöntä tietää, millainen käyttäjäkokemus pitäisi ollaM SK1 Anna heille käyttäjäkertomukset ja vuorovaikutusvirrat . Vielä parempi on, että he kehittävät rinnakkain UX-tarkistusta koskevat tarinataulut samalla kun he työskentelevät dev:n kanssa.

Hyvä tarkistus palvelee kaikkia näitä yleisöjä ilman, että niitä poltetaan. Käyttäkää osia ja rakennetta, jotta ihmiset voivat lukea, mitä heille on tärkeääM SK1

# Tarkastellaan erityistarkoituksenne

Ennen kuin ilmoitatte tehneenne tarkistuksen, kysykää itseltänne:

1. **Voiko sellainen kehittäjä, joka ei ole koskaan nähnyt tätä featurea, rakentaa sen tällaisesta täsmennyksestä?** Jos ette, teM SK1 puuttuvat yksityiskohdat. Ette koskaan ole osia, kuten ' tämä toimii kuin feature xcurrrent-järjestelmässäMSC4 Ensinnäkin, ettäMST5s lazy AFMSV6 toiseksi, että feature could change or be hard to understand edge casesMSP8
2. **Voisiko QA kirjoittaa testitapaukset tästä säännöstä?** Jos ei, hyväksymiskriteerit eivät ole riittävän selkeitä '
3. **Voisitteko rakentaa jotain täysin hyödytöntä, joka vastaa edelleen tätä sääntöä?** Jos näin on, ette ole ottanut asianmukaisesti huomioon todellisia vaatimuksia.
4. **Onko täsmennyksessä kuvattu, miten panna täytäntöön tai mitä saavuttaa?** Jos se on entinen, niin te mikrohallinnatte sitä.

# Agile-lähestymistapa erityispiirteisiin

"Me olemme kuitenkin agileita, !Me emme tarvitse ',!",I hear this a lot.

Agile ei tarkoita, että "ei suunnittelua, " tai "ei dokumentointia,." Se merkitsee sitä, että muutoksiin reagoidaan suunnitelman mukaisesti. **määritelmät ovat työkaluja, eivät sopimuksiaM SK1** Te luotte ne riittävän yksityiskohtaisesti aloittaaksenne, ja kehitatte niitä sen jälkeen, kun olette oppineetM SK1 Minun \'\Agile-matkani \ '\ oli vieläkin äärimmäisempi ♪ ;\ koska te olette super hyviä määritelmissänne jopa ne muuttuvat entistä agilemmiksi ♪,\ te haluatte mukautua ja parantaa sitä, mitä ryhmänne haluaa ♪

## Miten Agile Specs eroaa Waterfallista

Peruseellinen ero on: 't muoto tai pituus, ;, se, sen ajattelutapa ja prosessi

**Vesivuoren laji**:

- On kirjoitettu täysin etukäteen ennen mitään kehitystä
- Tavoite on täydellinen ensimmäisestä päivästä alkaen
- Muutos edellyttää muodollisia muutosten valvontaprosesseja
- Päätöslauselma on "lockedM SK1 hyväksyttyä
- Assumption: voimme tietää kaiken ennen kuin aloitamme
- Lineaarinen: Spec M SK1 Rakenne → Testi → käyttöönotto

**Agile Specs**:

- Aloitetaan vähimmäiskäytännöllisistä yksityiskohdista
- Odotamme puutteellisuutta alun perin ( ja että ' on hienoaM SK2
- Muutoksia odotetaan ja ne ovat tervetulleita
- Spekti kehittyy jatkuvasti ominaisuuksien kanssa
- Oletus : me ' opimme rakentaessamme
- Cyclical: Ehdotus M SK1 Rakenne → Opi SSK3 päivitysmääräys → Rakenna lisää S→ Opija lisää

Waterfall-lähestymistapa edellyttää, että voitte täsmentää kaikkea aivan oikein ennen kuin kirjoitatte koodin riviä.. Se, että ' on kaunis kuvitelma,., todellisuudessa, osoittaa puolet vaatimuksista, kun käyttäjät todella kokevat sen.., sitä koskeva suunnitelma.

<img src="https://media.tenor.com/RSp2ieJayNsAAAAM/panda-destroy.gif" height="250"/>
## Feedback Loops ovat kaikki

Älykkäiden määritelmien parissa, palautusketjut ovat paras ystävänne. TeM SK2 keräätte jatkuvasti tietoja ja ajantasaistetaan määritelmää

**Kehittäjän palaute**: "Alkuperäinen lähestymistapa voittaa' ei toimi X:n vuoksiM SK3 IMSC4m ehdottaa Y:tä sen sijaanMST5 \MST6 Tarkistetaan tarkistusta, joka heijastaa uutta lähestymistavaa ja miksi se on muuttunutMst7 Loppujen lopuksi oletteMSSK8kaikkein ensimmäinen \ MST9\ käyttäjä\ Mst10\ ominaisuuksistaM st11\ Jos se näyttää naurettavana\ M st12\ pc-virheestä ja saa sen järjestetyksi \ mst13\ vaikka pysäyttäisitte minkä tahansa sprintin \ /\ piston jne. tehdäkseen sen \ ...\don\ Mtst16\ ett odota\ M t17\

**käyttäjän palautus**: Yritä toimenpidettä reaalikäyttäjien kanssa. **Pivotti** määräys sen perusteella, mitä olette oppineet.

**täytäntöönpanon palaute**: Kun rakennatte,M SK1 havaitsee etutapaukset, , tekniset rajoitukset,, tai paremmat lähestymistavat,

**QA:n palaute**: "Lausekkeessa sanotaan X, mutta siinä ei otettu huomioon Y- skenaariotaM SK3

Jokainen näistä palauttamisketjuista tekee merkinnän paremmasta. Kehityksen sprintin jälkeen annetun merkinnan pitäisi olla tarkempi kuin ennen sitä annetun.

Tämä on syy siihen, että vesifallin tarkistukset epäonnistuvat usein.

**Suuri asia, palaute yhtä pian kuin on mahdollista. se 's miksi olen rakentanut [LLMApi](https://www.mostlylucid.net/blog/llmapi) se auttaa rakentamaan BITin ja käyttämään väärennettyjä tietoja hyödyllisen palautteen saamiseksi.**

## Embrace Incompleteness (At FirstM SK1

Tässä on se, mikä herättää perinteisiä hankejohtajia levottomuuteen. **se' on täysin hyvä, jos alkuperäisessä määritelmässä on puutteita**

Luetteloa avoimet kysymykset näkyvästi. Olkaa selvillä siitä, mitä ette ole vielä selvittäneet

Tämä ei ole'ei epävarmuus; seM SK2 rehellisyyteenne . ette tiedä kaikkea etukäteenMSC5 Se, että teette niin, merkitsee vain sitä, että kirjoitatte luottamuksellisesti virheelliselle ratkaisulle vahvistetut vaatimukset

Aloitetaan :

- Selkeä ongelmaselitys (on tiedettävä tämäM SK1
- Ehdotettu ratkaisumalli (mahdolliset muutoksetM SK1
- Suunnitelmat "todettuM SK1kriteerit (tarkistetaan
- Tunnetut tuntemat merkitään avoimeksi kysymykseen

Sitten täyttäkää aukot, kun olette oppineet.

## Lauseke tulee muuttumaan

Hyväksy tämä nyt: **omien sääntöjenne muuttuvat kehityksessä.** Jos se ei ole totta, joko teillä on uskomattoman paljon onnea tai ette opi mitään.

Muutoksia, joita olisi odotettava:

- Tekninen lähestymistapa muuttuu, kun havaitaan rajoitteita
- Laajuuden mukauttaminen, kun ymmärrätte, että rakennatte liikaa
- "TeemmeM SK1perusteellistamista, kun ymmärrätte ongelman paremmin
- Uudet reittitapaukset havaittiin täytäntöönpanon aikana
- Kokemusten avulla löydetään parempia ratkaisuja

Jokaisen muutoksen pitäisi olla:

1. **Asiakirja** - Tarkistaa tarkistuksen
2. **Tiedonanto** - Kertokaa sidosryhmille, mitä on tapahtunut ja miksi
3. **Perusteltu** - Explain what you learned that prompted the change

':n versiohistoriasta tulee pöytäkirja siitä, mitä olette oppineet.

## Kun Agile Speccing menee pieleen

Agile-lähestymistapa voi epäonnistua, jos unohdetaan yksi ratkaiseva asia: **"muutos, " ei, M SK2 ei tarkoita**

Huono agile-tarkistus:

- Luettelo muuttuu päivittäin ilman selvää syytä
- Mitään määritelmää "doneM SK1 ei ole, joten ominaisuudet kasvavat jatkuvasti
- Muutoksiin ei suhtauduta't communicated (spec päivitysten odotetaan siirtyvän suoraan kollegojenne aivoihin ), ihmiset työskentelevät erilaisten käsitysten pohjalta
- "AgileM SK1 käytetään tekosyynä sille, ettemme ajattele asioita läpi
- sidosryhmät yllättyivät soveltamisalan muutoksista, koska kukaan ei sanonut niille

Hyvä agile-tarkistus:

- Muutos tapahtuu selkeästi oppimiseen perustuvista syistä
- "DoneM SK1-kriteerit ovat selvät, vaikka muutkin yksityiskohdat eivät ole
- Muutoksista keskustellaan, hyväksyttiinM SK1 ja ne on dokumentoitu
- Joustavuus ei tarkoita, että olisi hätiköity
- sidosryhmät ovat osa palautusketjua

Luettelo on elinkelpoinen asiakirja, mutta se ei ole kaaos. Se kehittyy oppimisen perusteella eikä järjettömyydellä.

Ihminen ei koskaan tee mitään, mitä haluatte, ja kutsua sitä Ihmiseen.

Se' on dynaaminen prosessi, jolla on pyrittävä rakentamaan parhaat asiat mahdollisimman nopeasti. [Agile Manifesto ](https://agilemanifesto.org/principles.html) ”':n ensimmäinen periaate”

> "Ensisijaisena tavoitteenamme on tyydyttää asiakkaita
> varhaisen ja jatkuvan toimituksen avulla
> arvokas ohjelmisto."

Se ei ole järjetöntä, koska te pidätte tunteesta.

## Vain tarpeeksi yksityiskohtia aloittaa

Kysymys ei ole:', ", "mikä yksityiskohtainen määräys pitäisi olla?", "What do we need to know to start building confidently" ( mitä meidän on tiedettävä, jotta voimme aloittaa rakentamisen luottavaisesti)

Joidenkin ominaisuuksien osalta, jotka saattavat olla:

- Ongelmaa kuvaava kohta
- Kolme pistekohtaa, joissa esitetään ratkaisu
- Selkeä määritelmä siitä, miltä "doneM SK1 näyttää

Muille se voi olla:

- Yksityiskohtaiset käyttäjävirrat mallien avulla
- Tietojen tukemat suoritusvaatimukset
- Moniin järjestelmiin sovellettavat integrointivaatimukset

**Lisätä yksityiskohta, jos epävarmuus on olemassa.** Jos kaikki ovat samaa mieltä siitä, miten jotain pitäisi toimia, ette tarvitse kirjoittaa sitä huolestuttavan yksityiskohtaisesti.

Mutta loppujen lopuksi se's M SK1on tarpeeksi yksityiskohtaista, jotta voidaan aloittaa palautusketju

<img src="https://media.tenor.com/5q0fppfYcLAAAAAM/push-loop-infinite.gif" height="250"/>
## Esitykset ja AI: Aloitetaan nopeasti

Älkää harkitseko liikaa alkuperäistä määräystä.

- Lyhyesti sanottuna ( jopa SWAG:n arvioon - Shitty WildM SK2Assed Guess - on parempi kuin ei mitään
- Esitys painopisteiden määrittämisestä käytävissä keskusteluissa
- Se riittää henkilökohtaisesti, jotta voisitte aloittaa koodauksen

**Käytöön mallia**: Pyydän perustavan mallin, johon sisältyvät keskeiset osat. (Ongelma, , Ratkaisu,, Laajuudessaan,, Laajemmasta laajuudesta,M SK5 Toteutuneet kriteerit,MSC6 Täytä ne, mitä tiedätte,MST7 jättäkää osat tyhjäksi, jos ette tiedä niitä.

Yksinkertainen malli voisi olla:

```
# [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
-
-
```

Se's itM SK1Viisi minuuttia täyttämistä, ja te'olette saaneet tarpeeksi keskustella tai jopa rakentaaMSC3

**AI:n käyttäminen laatimaan eritelmiä**: Clauden tai ChatGPT:n kaltaiset välineet voivat olla loistavat ensimmäisen luonnoksen saamiseksi.

Mutta - ja tämä on kriittinen - **Älkää antako AI:n täydellisyyden houkutella lisäämään kaikkea**

AI haluaa olla kattava. Se' antaa teille turvallisuusnäkökohtia koskevat osatMk2 suorituskykyvaatimuksetMks3 käyttökelpoisuus, kansainvälistyminenMnsK5 virheiden käsittelyM, talletustoimien suorittaminenMvsK7 seurantaMsvK8 käyttöönottostrategiaM , takaisinoton suunnitelmat M , ja seitsemäntoista muuta asiaa, joita saattaisi tarvita

Poistakaa suurin osa siitä. säilyttäkää se, mitä tarvitsette nyt. loput voidaan lisätä myöhemmin, kun sitä todella tarvitsette

Ajatelkaa AI:ta-generated spec as a menu. Ottakaa bits, jotka ovat tärkeitä alkamiseenMSC2 Ignoreera loputM SK3 Voit aina palata hetken ajaksi

Tavoite ei ole: ' ei ole täydellinen määritelmä, ; se on ' riittävä määritelma, jotta voimme aloittaa työn.. riippumatta siitä, onko tämä ' nopea arvioinnin tulos vai , päätös ensisijaisesta tavoitteesta , vai vain selvyys siitä, mitä te rakennatte itse

## Yhteistyömalli

Tässä on se, mitä agilessa tapahtuu. **Te ette write a spec and throw it over the wall to developers.** Tarkistus on yhteistyöhanke.

Paras lähestymistapa, jonka olen nähnyt

1. **Product/PM hahmottelee ongelman** - Mitä on ratkaistava ja miksi
2. **Kehittäjät osallistuvat tekniseen lähestymistapaan** - Miten voisimme ratkaista sen?
3. **Designerit osallistuvat UX:n vaatimuksiin** - Miten käyttäjän pitäisi kokea
4. **QA:lla edistetään testitilanteita** - Edge-tapaukset ja validointimenetelmät

Kaikki osallistuvat täsmällyttämiseen.0 Kukaan ei omista sitä yksinomaan.1 Tämä yhteistyömalli saa aikaan ongelmia varhaisessa vaiheessa, kun ne on korjattava.2 On edullista korjata niitä mieluummin kuin myöhään, kun niitä on korjattu.3 On kalliita.4

Mikä vielä tärkeämpää, se tarkoittaa sitä, että täsmennys heijastaa sitä, mikä on todellisuudessa mahdollista eikä sitä, mitä joku toivoi eristyneesti.

## Kehityksen aikana tapahtuva kehitys

Siihen kuuluu:', jossa joustavat erityispiirteet eroavat perinteisistä **feature voi kehittyä rakentamalla sitä.**

Saatatte todeta, että alkuperäinen lähestymistapa onnistuu' ei toimi? Tarkistaa tarkistuksen ottaen huomioon uuden lähestymistavan

Yritätte toimenpidettä ja huomaatte, että se ei ratkaise ongelmaa.

Käyttäjän palaute paljastaa paremman ratkaisun? Sisällyttää se ja selittää muutoksenM SK1

Tämä kehitys on ominaisuus.

Tämä aiheuttaa kuitenkin ongelman.

## Arviointihaaste

Tämä on herkkä salaisuus agile-järjestelmässä. **Arviointi on hirvittävän vaikeaa, kun ominaispiirteet voivat kehittyä**

Perinteinen arviointi edellyttää, että tiedätte, mitä te rakennatte.

Agile-arvioinnissa tunnustetaan, että ette tiedä kaikkea etukäteen.

**Olette arvioineet raja-arvoja, ei absoluutsejaM SK1** Sen sijaan, että sanotte ", tämä kestää 3 viikkoja, " sanotte: " jossakin 2 ja 5 viikkojen välillä riippuen siitä, mitä me havaitsemme."

**Olette arvioineet toistuvasti.** "Me, ', käytämme yhden sprintin tutkimaan tätä ja raportoimaan siitä, mitä olemme oppineet.

**time-box pikemminkin kuin scopeM SK1boxing** "Aiomme käyttää tältä osin töitä t1, t2, t3, t4 ja t5. Lopuksi meillä on paras versio, jonka voimme rakentaa tuolloin

Kaikilla näillä lähestymistavoilla on kuitenkin yksi kriittinen edellytys: **Teidän on tiedettävä, mitä " tarkoittaa** Ilman selkeää määritelmää tehtävästä, ominaisuuksia voidaan jatkaa metastasoitumista ikuisesti.

Se”'” on yleinen kritiikki ”Agilea” Waterfallin lähestymistapaan verrattuna.“'” ilman konkreettista täsmennystä ei voida tehdä hyviä arvioita.”'.” Dunno I” '” mieluummin on olemassa floppy-arvio, joka johtaa hyvään näkökohtaan kuin kuollut unohduksiin.

# ":n määritteleminen":n toteuttaminen(:n täytäntöönpano tai Feature Metastasis-taudin pysäyttäminen

Tämä on se, missä monet nopeat erityispiirteet murenevat.

Ilman selkeää määritelmää tehdystä,-ominaisuuksista ei'-ominaisuuksia ole saatu päätökseen;-ominaisuudet metastasoituvat.-ominaisuudet leviävät.-ominaisuudet lisääntyvät muihin järjestelmään kuuluviin osiin.-järjestelmään ennen kuin tunnette sen,-järjestelmänne on muuttunut yksinkertaiseksi kommenttijärjestelmäksi"-järjestelmäksi viestien välityksellä,-profiilit,-järjestelmä ja ystävähakemukset.

## Ongelma epämääräisessä "DoneM SK1

I'on nähnyt tarkistuksia, joissa on hyväksymiskriteerejä, kuten

- "Ustajat voivat kommentoida postejaM SK1
- "Dashboardissa esitetään asiaankuuluvia tietoja
- "Keskustelu toimii hyvinM SK1

Nämä eivät ole tehtyjen määritelmiä, ne ovat epämääräisiä pyrkimyksiä.

Kehittäjän on tiedettävä: **mikä konkreettinen asia, täytäntöönpanon yhteydessä, tarkoittaa, että voin lopettaa tämän featuren parissa työskentelemisen**

## kirjallinen Betoni "

Hyvät arviointiperusteet ovat

- **Testoitavissa** - Voitte tarkistaa, onko se
- **Erityinen** Ei ole epämääräisiä sanoja, kuten "goodM SK2 tai "relevant"
- **Rajoitetut** Ne eivät tarkoita loputonta soveltamisalaa

**Huono**: "Komentarseja on muutettavaM SK2
**Hyvä**: "Admin-käyttäjät voivat hyväksyä–, hylätä–M SK3 tai poistaa kommentit admin-paneelistaltaM SK4 Ei–- hyväksytyt kommentit eivät ole näkyviä tavallisille käyttäjille. Adminille lähetetään sähköpostiilmoitus, kun uusi kommentti on julkaistuMSC7

**Huono**: " hakujen pitäisi olla nopeitaM SK2
**Hyvä**: " hakutulokset palautetaan SSK2ms:n sisällä kysymysten 95-prosenttiyksikön osalta, kun otetaan huomioon S100,000-virkamiesten tietokokonaisuusM SK5 Tulokset ovat luokiteltuja merkityksellisyyden perusteella.

**Huono**: "Arvioinnista käy ilmi hyödyllisiä mittareita
**Hyvä**: "Tashboardin kuvauksetM SK2sivujen kokonaiskatsauksen määrä |( viimeisenä päivänä ♫30 päivien määrä \), ainutlaatuiset vierailijat | ( viimeisennä päivänä 30 päiveiden määrä ♫

Huomauttakaa eroa? Hyvät esimerkit kertovat teille tarkasti, mitä on tarpeen olla olemassa ja milloin voitte lopettaa asioiden lisäämisen.

## Laajuuden ulkopuolinen osa on ystävänne

Muistakaa, kun sanoin aiemmin, että laajuuden ulkopuolelle jäävä kohta on yhtä tärkeä kuin se, mikä on laajuudessaan.

Jokaista ominaisuuksia varten on kymmeniä lisäkohtia, jotka voidaan lisätä... Laajuuden ulkopuolelle jäävä kohta nimenomaisesti ilmoittaa, mitä te ette tee.'. Tämä estää ".

**Laajuudessa**: Sisällytettyjä huomautuksia
**Laajuuden ulkopuolelle**: Ilman rajoituksia kommenttien liiteohjelmiaM SK1 kommenttiäänestyksen järjestäminen, kommentin liiteoihjelmien järjestäminen\, paras kommenttilaskenta , kommentit pysyvät permalinkissä.

Nyt kun joku ehdottaa, että " -äänestyksen pitäisi olla enemmistöpäätöksiä, voitte viitata tällaiseen tarkistukseen ja sanoa: "M SK3"-äänestystä ei voida soveltaa tähän toistamiseen.

Oh and the NEXT spec? No, teillä on joukko käyttämättömiä hyviä ideoita jo otettu huomioon! Paljon helpompaa aloittaaM SK2

## Aika-Boxing as a Last Resort

Toisinaan te ette todellakaan tiedä, miltä näyttää alkaessanne.

"AiommeM SK1 viettää 2 viikkoja ( tai siihen asti, kunnes backend on valmis) erilaiset lähestymistavat suositukseen perustuvaan algoritmiin prototipoiminenMSC5 \2\viikkojen lopussa arvioimme, mitä olemme oppineet ja päätämme, onko yhden lähestymistavan tuotannossa otettava käyttöön \

Huomauttakaa kuitenkin, että teillä on vielä betoniolosuhteet.

### Spikes & SprintsM SK1

Spike on yksi näistä: 'käykää leikkimään ja selvittämään tämä tekninen tekniikkaaM SK1 se voi kestää niin kauan kuin Sprint ( tai pidempään M SK3 mutta yleensä vain muutaman päivän ajan. Kun minulla on virkamiehistä, teen tämän, pyydän yleensä postia lopussa ( tai wiki-postia jne.

Sprintin odotetaan saavan lopputuloksen. ( jokin muu kuin siihen osallistuva henkilö voi testata loopia.

Ne' ovat myös hauskaa virkamiehille ja auttavat työryhmää. Saanen usein Spike-ajatuksia hankkeessa, ja kun on tilaisuutta, että ' on hiljainen, sallinen virkamiehet valita yhden tutkimaan asiaa.

## Laajuuden lisääntymisen ehkäiseminen kehittämisen aikana

Jopa selvillä ":lla, ":llä ja ,:lla on kriteereitä, joiden perusteella ulottuvuus voi peitellä..:llä havaitsee raja-arvoja..:ssä ymmärrätte, että käyttäjät tarvitsevat jotakin, jota ette ollut harkitseneet.M SK5:ssa ei ole otettu huomioon.How do you handle this without breaking your definition of done

**Document it, don't just do it .** Kun keksitte jotain uutta, jota on lisättävä, saataisiin tarkistuksen ajan tasalleM SK1 tehtävä selväksi, että soveltamisala on muuttunut. saada osapuolten suostumus

Tällä on kaksi tarkoitusta:

1. **Näkyvyys** - Kaikki tietävät, että soveltamisala on muuttunut ja miksi
2. **Kustannustietoisuus** - sidosryhmät katsovat, että asioiden lisääminen vaikuttaa aikatauluun

Jos tarkistuksenne kasvaa jatkuvasti, se on signaali, että joko te rakennatte väärän asian, tai teidän on mentävä taaksepäin ja harkittava asiaa uudelleen.

## Milloin se toteutetaan

Joissakin tapauksissa on välttämätöntä lähettää

Hyvä testi: **Voiko käyttäjä saada arvoa tästä ominaisuuksista sellaisenaan?**

Jos kyllä, toimittaa senM SK1 Voitte aina toistaa seuraavassa versiossa . Tehty ei tarkoita' tarkoittaa, ettei MSC4 paranneta koskaanMST5 Se merkitsee, että SSK6 ratkaisee ongelman riittävän hyvin, jotta käyttäjät hyötyvät siitä ja voimme siirtyä muuhun työhön

Jos ei, te ette ole vielä päässeet sopimukseen.

Agilen vaikein osa on: ' ei aloita työtä, ;, se, että ' lopettaa työn,., selvä, M SK4, tehty, ", kriteereet mahdollistavat työn lopettamisen

On kuitenkin muistettava, että teidän on arvioitava, annako se kaikkien käyttöön, onko A:lle läheinen ryhmä/B M SK2 UAT ( käyttäjän hyväksymistestitMSC4 SeMska5 on usein yritysten päätös riskien suhteenMske6 Joskus julkinen mielipide on järjetöntä ja katsoo osittain täydennettyä ennakkokuva-aineistoa järjestelmänne laadun parantamiseksiMスク7 Jos tämä on ongelma, valvottu ryhmä on turvallisempiMRK9

<img src="https://media1.tenor.com/m/hl4H1KOXEMcAAAAC/bongo-cat-keyboard-smash.gif" height="300"/>
# Spec-arviointiprosessi

' ei ole tehty, kun se on kirjoitettu loppuun.

## Käsitellä Speci-arvioita, kuten koodiarvioita

Paras käytäntö, jonka opin Microsoftissa: **Erityisarviot toimivat aivan kuten koodiarviot.** He ovat yhteistyöhaluisia, eivät vastakkainasettelijoita, vaikka Microsoftin ”boys club” -ryhmä ”'” usein teki ”spec-arvioista gladiatoriaalista taistelua”, jos joku oli dick.

Tarkasteltuaan määritelmiä:

- **Kysymys** -"What happens if X occurs?" isn't criticism; it' identifying a gap
- **Ehdota vaihtoehtoja** - "Olette harkitseneet Y-lähestymistapaa?
- **Huomauttakaa kadonneita tapauksia** - "Tämä ei kata Z-tilannettaM SK2Hätä kuvaa
- **Haasteen olettamukset** -"Why are we solving it this way?" saattaa paljastaa paremmat lähestymistavat

Kun tarkistuksenne tarkistetaan:

- **Kysymykset ovat mahdollisuuksia** Ne paljastavat, mikä on epäselvää ja mitä olette unohtanut
- **Ehdotukset parantavat täsmennystä** - Ajatelkaa niitä vakavasti, vaikka ette hyväksykään kaikkia
- **Se ei ole henkilökohtaista** - Suunnilleen sama kuin koodin tarkistaminenM SK1 se ' koskee työn parantamista, ei hyökätä teihin
- **Arvioija saattaa olla väärässä** - Selitä, miksi lähestymistapanne on järkevä

Parimmat tarkistuslausekkeet ovat keskustelut. Ette kulje taka-alalle. Opitat toisistanneM SK2 Tuloksena oleva tarkistus on parempi kuin se, mitä kumpikin henkilö olisi voinut kirjoittaa yksin

## Kuka pitäisi tarkistaa

Saata reviewit kaikista tärkeistä näkökohdista:

**Kehittäjän arviointi** - Voiko tämä todella toimia?M SK1 Onko olemassa teknisiä rajoituksia, joita emme ole ottaneet huomioon?

**tuotearviointi** - Ratkaiseeko tämä oikean ongelman?

**suunnittelukatsaus** - Onko käyttäjäkokemusta järkevää?

**QA-arvio** - Voimmeko testata tämänM SK1 Ovatko hyväksymisperusteet riittävän selvät ? Miten on raja-arvojen kanssa?

Te ette' tarvitse virallista merkintääM SK1kaikkilta poistettavaa . Te tarvitsette heidän puheenvuoronsa täsmennyksen parantamiseksi. Ajatelkaa sitä MSC4kommenttipyynnönä~" ei \"hyväksyntäpyynnnönäMST7

## Yhteiset tarkistuskysymykset

Hyvät tarkastajat esittävät kysymyksiä, jotka parantavat täsmennystä

- " Mitä tapahtuu, jos käyttäjä tekee X
- "Mitkä ovat sen vaikutukset olemassa olevaan ominaisuuksiin Y
- "Mitkä ovat ', jos riippuvuus Z ei ole valmis?
- Voisimmeko yksinkertaistaa tätä tekemällä W:tä sen sijaan?
- " Miten tiedämme, onnistuuko tämä?
- "Mitä me emme tee

Nämä kysymykset ovat todellisia kysymyksiä, jotka auttavat määrittelemään yksityiskohdat.

## Feedbackin sisällyttäminen

Ette voi hyväksyä kaikkia ehdotuksia, mutta kun otetaan huomioon kaikki palautukset,

1. **Ajatelkaa sitä rehellisesti** En hyväksy sitä, koska he eivät ymmärrä.
2. **Jos hyväksytte sen,** - Tarkistaa tarkistuksen
3. **Jos ette hyväksy sitä,** - Selitä, miksi
4. **Jos ' jää soveltamisalan ulkopuolelle** - Lisätä se osuuteen "Pohjimmiltaan ulottumattomassa olevaa toimenpidettä koskevat toimenpiteet

Arviointien olisi parannettava jokaista kierrosta.. Jos se ei toimi, 'tM SK2 ette kuuntele tai arvioijat eivät ole mukana.

Saatte arvioita kaikista näistä näkökohdista, ennen kuin aloitatte täytäntöönpanon. Ongelmien löytäminen erityiskustannusten pöytäkirjoissaM SK1 Onelmien löytäminen tuotantokustannuksissa viikkoina.

# Konkreettinen esimerkki: Markdownin käännöspalvelu

Jotta tämä kaikki olisi vähemmän abstraktia, otetaan huomioon seuraavat seikat:

## Ongelmaselvitys

Englanniksi kirjoitetut blog posts exclude only non-English speaking readers. Jokaisen postin kääntäminen käsin monille kielille on aikaa vievää -julkaisua rasittaa ja viivästyttääM SK3 Tarvitsemme automaattisen ratkaisun, joka kääntää merkitsemättömien blog-postien monille kohdelaisille kielille ilman, että kullekin postille tarvitaan käsin tapahtuvaa puuttumista.

## Ratkaisu

Rakennetaan taustapalvelu, joka kääntää automaattisesti merkitsemättömät asiakirjat kohdemaihin EasyNMT-koneen käännöspalvelun avulla.

- Seuraa muutosten merkitsemistä alhaisemmassa vaiheessa
- Laaditaan käännöskelpoinen teksti samalla kun säilytetään merkitsemisrakenne ja koodiblokit
- Taustakäännökset tehokkuuden edistämiseksi
- Laaditaan käännettyjä merkintäpisteitä asianmukaisten kielten suffiksien avulla

## Menestysten arviointiperusteet (Mitkä ovat?

Nämä kriteerit kertovat meille tarkasti, milloin voimme lopettaa tämän featuren kehittämisen:

- Uusia blog-osoitteita käännetään automaattisesti kaikkiin sääntöjen mukaisiin kieliin: (initially:espaankielinenM SK2 ranskalainen , saksankielinen+, italialainen+, portugalilainen+M SK6 kiinalainen+ , arabilainen=, hindi+MSC9 japanilainen~, koreaninen+CSK11 hollantilainen+SSK12 russiankielinen*)
- käännöstetyissä asiakirjoissa säilytetään identtinen merkitsemisrakenne alkuperäisille
- Kodikiellot, kuvat URL-osoitteetM SK1 ja muodotus säilyvät muuttumattomina
- käännös päättyy 15 minuuteissa tyypilliselle blog-postille (2000-3000 sanat
- Järjestelmä ainoastaan -kääntää muuttuneet asiakirjat uudelleen.
- Palvelu aloitetaan menestyksekkäästi, vaikka käännös API ei ole väliaikaisesti käytettävissä
- Virheet käännöksen aikana on kirjattu, mutta ei't romuttaa sovellusta

Huomauttakaa, että ne ovat täsmällisiä ja testattavissa. Voimme tarkistaa kutakin yksikköäM SK1 Kun kaikki täyttyvät,, me ' olemme saaneet aikaan. emme lisää edelleen sellaisia ominaisuuksia kuin MSC6 käännöksen laatuäänestysMST7 tai \"\ käännösten hallinnoiminen\MST9 ellei laajenneta soveltamisalaa nimenomaisesti

## Laajuudessa

- Taustapalvelu merkitsemisohjelmien käsittelyyn
- Integraatio EasyNMT-käännöksen API:n kanssa
- Hash-perusteinen muutostarkastaminen tarpeettoman uudelleenkääntämisen välttämiseksi
- Tappikäsittely EasyNMT's sanarajan käsittelemiseksi
- Round-robinlast balancing across multiple EasyNMT instances
- Markdown-syntaxin säilyttäminen,koodiblokit, ja kuvat käännöksen aikana

## Laajuuden ulkopuolelle

- Luettelo käännösten hallinnasta (kehityksen parantaminen)
- käännöstieto tai kielikirjan hallinnointi (mahdollistetaan lisäys, jos laatukysymyksiin liittyy
- Todellinen-aikainen käännös M SK1 taustakäsittely on hyväksyttävää )
- Vertailu koodikommentteista koodiblokeissa (tarkoivasti suljettu pois
- Tulkkausten automaattinen laadunarviointi (käsiteellinen arviointi edellytettiin alun perin

## Tekniset rajoitukset

- EasyNMT:ssä on ~500 sanaraja pyynnöstä kohti ( ei ole totta [mostlylucid-nmt](/blog/mostlylucid-nmt-complete-guide) , joka voi ottaa naurettavaksi BOOKS) M SK1 on jaettava vastaavasti
- käännöspalvelu voi olla hidasta (~15 toista kertaa pakettia kohden
- Useat EasyNMT-inスタンsit, joita tarvitaan kohtuulliseen suorituskykyyn (ei läheskään selvääM SK1nmt 😜)
- File system I/O ei saa estää pääohjelmaa

## Avoimia kysymyksiä Spec-tunnilla

- ~~Saammeko säilyttää käännökset, jotta vältyttäisiin muutoksista? **Ratkaistu: Kyllä, käyttäen tiedostojen haaksikokemista**
- ~~ Miten selviydymme EasyNMT-palveluhäiriöistä? **Ratkaistua: Log-virhe ja skip fileM SK1 yrittää uudelleen seuraavassa palvelussa uudelleenkäynnistetään / katkaistava lanka ( voi olla pisto**
- Mitä laatuongelmia voimme havaita teknisen sisällön osalta? **Päätös: alukset ja arvioidaM SK1 pyyntiä koskevat manuaaliset tarkistukset**

## Mitä olemme oppineet täytäntöönpanon aikana

Kehitystyön aikana ilmeni useita seikkoja, jotka paransivat spec::ta

**Tappikokonaisuuden mukauttaminen**: Lähtökohtana oli 20-linjojen sarjat, mutta löydettiin, että linjoilla on enemmän luotettavuutta pysyä EasyNMT: n alaisuudessaM SK4sanarajaa säilyttäen samalla kontekstin

**Kuvan havaitseminen**: Alun perin , käännöspalvelulle lähetettiin jäljennöksissä olevat kuva-asiakirjatM SK2 lausunnon murtaminen parsiminen. lisättiin tiedostojen laajentamisen havaitsemista kuvareittien välttämiseksi

**Palvelujen saatavuus**: EasyNMT voi olla temperamentaalista aloitusvaiheessaM SK1 Lisättiin terveystarkastelu, jossa kysytään `/model_name` lopullinen kohta ennen käännösten yrittämistä.

**Hash-varasto**: Alun perin suunnitellut tietokannan säilyttäminen file hashes-osoitteiden osalta `.hash` asiakirjat osoittautuivat yksinkertaisemmiksi ja estettiin tietokannan riippuvuus tästä palvelusta.

Nämä oppimukset liitettiin takaisin asiakirjaan ja ilmoitettiin vastaavista ominaisuuksista myöhemmin.

## Miksi tämä sääntö toimi

Tämä tarkistus noudatti käsiteltyjä periaatteita.

- **Ongelma-ensimmäinen**: Aloitetaan todellisen ongelman kanssa.
- **Selkeä soveltamisala**: Selkeydellisesti ilmoitettiin, mitä emme olleet tekemässä
- **Oikeustaso yksityiskohdista**: täsmennetään, mitä pitää tapahtua.
- **Elävä asiakirja**: Avatut kysymykset ratkaistiin ja päätökset dokumentoitiin täytäntöönpanon edistyessä
- **Yhteistyö**: otettiin esille täytäntöönpanoon liittyvissä kysymyksissä.

Tuloksena on ”:”, feature, joka ”'” toimii tuotantossa jo kuukausien ajan ja ”M SK2” vastaa automaattisesti jokaista blogin artikkelia vähimmäistoimilla.

# Yleiset kysymykset Agile Specsistä

Tämän perusteella, mitä olemme käsitelleet, on esitetty usein esiin tulleita kysymyksiä.

## " Tarvitsenko todella eritelmää pienelle toiminnalle?

Se riippuu siitä, onko se todella merkityksetön.

- Arvioida, kuinka kauan se kestää
- Saamme sidosryhmien suostumuksen
- Varmistetaan, että QA tietää, mitä testata
- Laaditaan asiakirja siitä, mitä olette rakentaneet tulevaa viitekehystä varten

Silloin kyllä, edes nopea tarkistus auttaaM SK1 Se ei ole tarpeen' ei tarvitse olla virallinenMSC3 joitakin pisteitä lippujen kattamisessa Ongelma , RatkaisuMST5 ja Tehtyjä kriteerejä riittää useinMSV6

Testi: jos voitteM SK1t selittää, mitä "on tehnytMSC3 näyttää kahdessa lauseessa , tarvitsette täsmennyksen

## " Miten käsitellä sidosryhmiä, jotka haluavat kaiken soveltamisalaan kuuluvan

Viittaa soveltamisalan ulkopuoliseen osaan. Selitä, että

1. **Lisätään lisää lisäaikoja** - Haluavatko he toimenpiteen A viikkoina tai toimenpiteiden A viikkoinä?
2. **Voimme tehdä sen seuraavaksi** -, ", Se, että ' on loistava ajatus, M SK3, Sallikaa ' saada ydin ensin toimimaan, , ja sitten käsitellä sitä erillisenä eritelmänä.
3. **Aika-box painopisteet** Meillä on 2 viikkojaM SK3 Mitkä näistä ovat tärkeimmät ?"

Jos he vaativat, että kaikki on yhtä kriittistä, he ehdottavat, että he valitsevat toisen työn viivästyttääkseen sen sijaan.

## "Mitä tapahtuu, jos määritelmä muuttuu niin paljon kuin se on?

Se' on sakkoM SK1 niin kauan kuin :

- Muutos on dokumentoitu (tarkistuksen ajantasaistaminenM SK1tjust change the code
- Muutoksista ilmoitetaan ( sidosryhmät tietävät, mitä on muutettu ja miksi
- Te olette oppinut jotain (muutos heijastaa oppimista, ei kaaostaM SK2

Jos täsmennystä ei voida tunnistaa, koska olette alun perin täysin ymmärtäneet ongelman väärin, se on merkki siitä, että lisätutkimuksia on tehtävä ennen seuraavaa kertaa, mutta toistamista ja oppimista odotetaan

Tarkistusta koskevan version historian pitäisi kertoa, mitä olette oppineet.

Alkuvaiheessa tätä kutsutaan 'Pivot', jossa aloitatte rakentaa peliä ja rakennatte sen sijaan hämmästyttävän viestinnän järjestelmän.

<img src="https://media1.tenor.com/m/8DRynH5nEE8AAAAC/if-you.gif" height="200px" />
Älkää liioitellen kääntäkö niitä, jos niissä on tilaisuuksia kääntää niitä, ottakaa ne käyttöön.

## "Saanko laatia tarkistuksen virheiden korjaamiseksi?

Kriittisten bugien osalta: ei, korjaa vain neM SK2

Moniin järjestelmiin vaikuttavien tai rakenteellisten muutosten edellyttävien monimutkaisten virheiden osalta: kyllä. kohtele sitä eräänlaisena ominaisuutena . mitäMSC3on murtunut M SK4ongelmaMST5 miten oletteMSSK6 korjaamme sen |(ratkaisunmuodonMS), miten tiedätte senMSL9olette parantanut sitäMSV10 on korjattu | (on täytäntöönpanon arviointiperusteet

Kaikkien niiden välillä: käyttäkää omaa mielipidettänneM SK1 jos korjaus ei ole selvä, tai jos sillä voi olla sivuvaikutuksia , nopea tarkistus auttaa

Tämä pätee erityisesti turvallisuusvirheisiin. Teidän on tiedettävä tarkasti, mitä te korjaatte ja miten te tarkistatte sen.

## "Mitkä muodolliset säännöt pitäisi antaa

Niin muodollinen kuin ryhmänne tarvitsee. Jotkin ryhmät suhtautuvat myönteisesti yksityiskohtaisiin JIRA-lippuihin

Virallisuus on tärkeämpi kuin sisältö:

- Selkeä ongelmaselitys
- Ehdotettu ratkaisu
- Tehtyjen määritelmä
- Selvitä soveltamisalan rajat

Voitte kirjoittaa sen merkitsemällä., Confluence , Word , or scrawled on napkin

Tämä on usein unohdettu avain agile-kehityksen kannalta; ja miksi en pidä Agile Frameworks -puitteista (ja SCRUM-puitteita). Tärkeintä on, että kuten agilen säännöt, prosessin on oltava myös mukautuvainen.
Jos 5 päivänpyörät toimivat yhdessä joukkueessa mutta 2 viikon sprintit toisessa kokoonpanossa,
Koko ajatuksena on tehdä paras tuote; työryhmänne on tuo väline, joka valmistelee tuota tuotettaM SK1 Tehdään väline mahdollisimman sujuvasti.

Hallintomiehenä katsotaan, mitkä ovat tuotteenne.; Jos taulu tarvitsee poltettavan grafiikan, miten voitte käyttää nykyisiä tietoja rakentamaan yhden?

Loppujen lopuksi työryhmä tuo mukanaan ominaisuuksia ja sitä, mitä sidosryhmät tarvitsevat.

## "Mitä tapahtuu, jos olen ainoa hankkeen kehittäjä?

Te tarvitsette edelleen määritelmiä, ehkä vielä enemmän. Kuuden kuukauden kuluttua, kun teidän on laajennettava tätä featureaM SK2 voitte ' ette muista, miksi te olette tehneet tiettyjä päätöksiäMSC4 määritelmä on menneisyydessänne puhuva tulevaisuuteenne

Lisäksi tarvitsette vielä:

- Arvioita työ, jonka teille maksaa kuka tahansa
- määritelkää, mitä "done" tarkoittaa, jotta voitte päättää
- Laaditte asiakirjan siitä, mitä olette rakentaneet muille, jotka voisivat liittyä myöhemmin

Omien tarkistusten kirjoittaminen on kuin yksiköiden testien kirjoittaminen: se tuntuu hitaammaksi nyt, mutta säästää aikaa myöhemmin (niin tapaanM SK2 IMSC3m omassa \50s , Unohdotan nyt HIT-ongelman

## " Miten voin käsitellä soveltamisalaa, joka on peitelty 'vaatimuksia selventäväksi

Kun joku sanoo " , unohdin mainita, että sen pitäisi tehdä myös "X" .

Vastaus: M SK1Se' on hyvä edellytys , mutta seMSC4 ei ole se, mistä olemme sopineet erityissäännöksessäMST5 Sallikaa'liittää se nyt soveltamisalan ulkopuolelle ja keskustella siitä, sisällyttääkö se tai säilyttääkö se versioon SSK7

Jos se on todellakin vaatimus, ei ole mukavaa

1. Tarkistetaan tarkistuksen sisällyttäminen siihen
2. Arviointi saatetaan ajan tasalle
3. Saamme sopimuksen uudesta aikataulusta tai siitä, mitä alun perin sovittua aikatauluon leikata.

Älkää koskaan kuunnelko kaukohuutoa, sillä se tuhoaa arvioinneenne ja uskottavuutenne.

## "Can I start coding before the spec is complete?

Kyllä, jos oletteM SK1ko te valmistatte prototypia vastataksenne avoimeen kysymykseen,.ei, jos te rakennatte tuotantoa varten

Prototypointi oppimiseen on hyvä: "Meillä on kolme lähestymistapaa . Saanen nopeuttaa jokaista nähdäkseni, mikä toimii parhaitenM SK3 Se kertoo erityispiirteistäMSC4

Tuotantokoodin rakentaminen ennen määräyksen valmistumista merkitsee, että te olette tältä osin arvioimassa vaatimuksia.

Poikkeus: jos olette product owner ja developer M SK2solo-hanke ), voitte täsmentää ja koodistaa samanaikaisesti

' kunnes sääntö on valmis ' on loistava tapa saada yksikköjen maksut alkamaanM SK2 Arvioida teknologian lähestymistapoja, kirjoittaa yhteinen kattoplate jne.

## "Mitä tapahtuu, jos ryhmäni ei ymmärrä sääntöjä?

Miksi?:

- **Liian pitkä?** Tehkää ne lyhyemmiksi, paremmin skannattavissa
- **liian virallinen?** Käyttäkää kevyempää muotoa
- **Ei ole asianmukaista?** Varmistakaa, että he todella tarvitsevat ne yksityiskohdat, jotka te tarjoatte
- **Huono käytäntö?** Kehityksen alkamiseen mennessä on aloitettava tarve tarkastella eritelmiä

Jos ihmiset välttävät tarkistusten laatimisen ja sitten rakentavat väärän asian, on tehtävä kipu näkyväksi.

Lisäksi: tekee täsmennyksistä helppoja löytää. Jos ne ' ovat haudattu erään epäselvän wikin alle, ei kukaan voi lukea niitä

## " Kuinka paljon aikaa minun pitäisi käyttää erityiseen kysymykseen

Kehitysaikaa koskevat säännöt

2-viikkoisen toimenpiteen osalta
1-viikoittaisen toimenpiteen osalta
2-päivämääräinen toimenpideM SK1 tunnin tai kahden mittaisen toimenpiteen osalta

Mutta älkää uskoko siihen. Jotkin piirteet vaativat enemmän huomiota.

Jos olette käyttämässä enemmän aikaa täsmennykseen kuin täytäntöönpanoon, pidätte sitä liian tärkeänä.

## " Miksi arvioidut ovat aina virheellisiä?

Koska ohjelmistojen arvioiminen on perustavanlaatuisesti vaikeaa.Tämä on epämukava totuus **arviot toimivat vain, jos olette teet tarkasti kyseisen tehtävän ennen sitä.**

Tämä ei läheskään tapahdu.

Joka kerta kun arvioitte, että olette tekemisissä

- **Ei tunneta ei tunneta** - Ongelmia, joita ette tiedä
- **Tunnetut tuntemattomat** - Ongelmat, jotka tiedätte olevan olemassa mutta joilla ei ole mitään käsitystä niiden ratkaisemisesta
- **Vaatimusten muuttaminen** -Lauseke kehittyy rakentettaessanne (pääjohtajalla on järjetön ajatus pöydässäM SK2 se tapahtuu; Sain kerran 3puheenvuoron HUGELY DRUNK-asiakkaaltani pöydällä typerän idin kanssaMSC5
- **Ympäristöerot** - Tämä kirjasto toimi edellisessä hankkeessanne, mutta tällä on erilaiset riippuvuussuhteet.
- **Ohjelmointikysymykset** - Rakennejärjestelmä, ,, käyttöönottoputki ja , tai testausympäristö käyttäytyvät eri tavalla
- **Integraatioon liittyvät yllätykset** - Se API, jota olette soittamassa, ei toimi täysin dokumentoidusti
- **Ihmistekijät** - Teidän työnne on keskeytetty,, sairastunut tai käsittelette tuotantoongelmia
- **Rahoitus** - joskus tarvitaan pienempi versio aikaisemmin, koska *Muutoin meillä on rahapulaa, että ' on yhteinen yrityksissä.., ( ja I:llä on artikkeli ', Startup dev ja ' sekä siitä, miten se eroaa toisistaan.

Siksi:

- **Rajat voittaa arvion kohdista** - "2-5 päivätM SK2 tunnustaa epävarmuuden
- **Spikes-apu** - Käykää päivää tutkimassa ennen kuin arvioitte koko työtM SK1 onko tämä tekniikasta vaikeampaa tai helpompaa kuin minä arvioin , missä se voi säästää aikaa jne.
- **Aika-boxitoiminta** Me käytämme viikkoja ja katsomme, mitä saamme
- **Historialliset tiedot** - Seuraa, kuinka kauan vastaavia tehtäviä itse asiassa vietettiin
- **Padding on rehellistä** - Jos ajattelette, että te olette oikeassa useammin kuin te, sanokaa:

<img src="https://media1.tenor.com/m/vrpp1cfR6XgAAAAd/star-trek-star-trek-tos.gif" height="300" />
Mitä uutta työtä teette, sitä huonompia arvioinne ovatM SK1 Rakennetaan samaa CRUD-lomaketta kuin teidät ' olette rakentaneet 50 kertojaMSC4 Teidän kanssanne tulee lähelleMST6 Integroidaan uuteen palveluun tuntemattoman pöytäkirjan avulla.

Tämän vuoksi täsmennykset tarvitsevat selkeää "toteutunutM SK1kriteerit . Voitte'arvioida tarkastiMSC4 mutta voitte määritellä, milloin pysäytettävään

## "Entä tutkimus- tai tutkimustarkoituksiin tarkoitetut määräykset?

Nämä vaatimukset ovat erilaisia.

Esimerkki tutkimusmääräys:

- **Ongelma**: Emme tiedä, onko lähestymistapa A tai B parempi suosituksen moottorin kannalta
- **Ratkaisu**: Spend 1 Weekly prototyping both approaches
- **Toteutuneet kriteerit**: Meillä on molempien, , ja ,, suoritusindikaattorien työprototypit sekä suositus niiden noudattamisesta
- **Asia ei kuulu soveltamisalaan**: Tuotanto täytäntöönpano

Aika-boxing on avainasemassa tutkimuksessaM SK1 Ilman sitä , tutkimustehtävät eivät koskaan päätty

## " Miten kirjoitan ominaisuuksia koskevia sääntöjä, joita en ymmärrä

Aloita se, mitä tiedätte:

- Ongelmalausuma ( teidän pitäisi tietää tämäM SK1
- Ehdotettu lähestymistapa (
- Ottakaa avoimet kysymykset (kaikki, mitä ette tiedä
- Hyväksyttyjä kriteerejä (vaikka epämääräisesti

Markifioita osat "TBDM SK1 Olkaa rehellisiä epävarmuuden suhteen

Sitten hyödyntäkää erityisarviointiprosessia puutteiden täyttämiseksi.arvioinnin aikana käydyt keskustelut selventävät usein, mitä ette ymmärtänyt

Muistakaa: epätäydellinen- muttaM SK2 rehellinen beats complete - mutta

## "GitHubin liikkeeseenlaskut voidaan salliaM SK1JIRA-lippujen on oltava erityisiä?"

Täsmällisesti. Asiakirjan ei tarvitse olla erillinen asiakirjaM SK1 . GitHubin tai JIRA-lisenssin kirjoittaminen voi toimia asianomaisena asiakirjana erinomaisesti

Kysymys on sisällöstä, ei kontista.

- **Selkeä ongelmaselitys** - Mitä me ratkaisemme ja miksi?
- **Ehdotettu ratkaisu** - Miten lähestymme sitä
- **Toteutuneet kriteerit** - ErityisetM SK1 testattavissa olevat hyväksymiskriteerit
- **Laajuuden rajat** - Mitä ' on soveltamisalaan sisältyvissä ja ulkopuolella?
- **Avoimet kysymykset** - Merkitsee ne merkinnöillä, jotka vastaavat

Kysymysten käyttämisen edut:

- **Kaikki yhdessä paikassa** - KodeM SK1 täsmennys , keskustelu, ja tehtävän seuranta yhdessä
- **Helpo yhdistäminen** - Viiteasiat
- **Built-versionoinnissa** - Asiakirjan editointihistoria osoittaa, miten vaatimukset ovat kehittyneet
- **Tuntuva työvirta** --ryhmä tietää jo, miten sitä käytetään

Ratkaisut kysymysten käyttämiseksi eritelmäinä:

- Käyttäkää kysymystä koskevaa kuvausta täsmennyksessä, ei ole kirjattu kommentteihin (henkilöt lukevat kuvaustaM SK2
- Tarkastetaan kuvausta, kun tarkistus kehittyy. (lisätään "AsetetaanM SK2 osiot, jotta muutokset näkyvät
- Käyttäkää pakkausmerkintöjä, joissa ilmoitetaan, mikä on tilanne:
- Pin tärkeitä yksityiskohtia koskevia keskusteluja, jotta ne eivät menetä '-kommenttiin
- Linkki tukeviin asiakirjoihin (diagrammatM SK1 mockupit) tarvittaessa

Testi: voisiko joku lukea kysymyksen ja tietää, mitä rakentaa, mitä " tekeeM SK3 merkitsee , ja mitä' ei kuulu soveltamisalaan?

## "Ja säänneltyjen alojen erityispiirteet?

Jos olette terveydenhuollossa, rahoitusalalla, ilmailu- ja avaruusalalla tai muilla säänneltyillä aloilla, vaatimustenmukaisuuden varmistamiseksi saattaisi tarvita enemmän muodollisia määritelmiä.

- Aloitan ongelmasta
- määritellä tehtävä selkeästi
- Kehitetään oppimalla
- Merkitä täsmennykset ajan tasalla

Teidän on kuitenkin myös tehtävä

- noudattakaa teollisuudenne ':n asiakirjastandardeja
- Luettelo vaadituista kohdista (turvallisuutta koskeva analyysi
- Saataa virallinen merkintö, -, tarvittaessa
- Varmistaa yksityiskohtaisempi versiohistoria
- Säännökset säilytetään hankkeen päättymisen jälkeen.

Jopa säänneltyissä ympäristöissä, nopeutettu speccing toimii. Teillä on vain enemmän hoopeja päästä läpiM SK2 Speci on edelleen väline ; seMSC4 se on vain väline, joka on tarpeen niin sääntelijöiden kuin kehittäjienkin tyydyttämiseksi

# Päätelmissä

Hyvät ominaispiirteet kirjoittaminen nopeutetussa ympäristössä on taito, joka paranee käytännön avulla. Tavoitteena ei ole–'–tä laatia täsmällisiä erityispiirteitä etukäteen –(– ne eivät ole olemassa –'– niitä ei ole – );– niitä on–M SK5– kirjoittaa erityispiirteet, jotka auttavat ryhmään ryhtymään ja kehittymään oppimallaan tavalla.

Keskeiset periaatteet:

- **Erityiset ovat työkaluja, ei sopimuksia** - Lisätä yksityiskohtaa sinne, missä sitä tarvitaan
- **Aloitan ongelmasta, ei ratkaisua** - täytäntöönpano perustuu ongelman ymmärtämiseen
- **Yhteistyö, donM SK1t diktoida** - Kaikki osallistuvat täsmennyksen parantamiseen
- **määritellä selkeästi "doneM SK1** - Mahdolliset testikelpoiset kriteerit, joiden avulla voidaan estää ominaisuuksien metastaasi betonilla
- **Asiat, jotka eivät kuulu soveltamisalaan** - Se, mitä ette tee, on yhtä tärkeää kuin se, mikä te olette
- **Odotamme kehitystä** - Funktiot muuttuvat rakenteellanne
- **Merkitä täsmennykset ajan tasalla** - Ne muodostavat perustan testeille , asiakirjoihin, , ja tulevalle kehitykselle

Kaikkein vaikein asia on se, että ei kirjoiteta alkuperäistä sääntöä.

Tämän vuoksi nopeiden arvioiden tekeminen on niin vaikeaa. Ette ainoastaan arvioi täytäntöönpanoaikaa ; ette' arvioi oppimisaikaa\. Kuinka kauan kestää löytää se, mikä itse asiassa ratkaisee ongelman?

Paras, mitä voitte tehdä: olla selvä siitä, mitä M SK1 tehdä " merkitsee, aikaMSC4laatikko epävarmuus\, ja saattaa tarkistukset ajan tasalle, kun olette oppineetMST6 käsitellä sitä kuin koodiaMSSK7 versio seMSL8 korjata se

Hyvä spec antaa kehittäjille mahdollisuuden ratkaista ongelmat älykkäästi ja samalla tietää tarkasti, milloin ne voivat pysäyttää.

Ja jos olette ”'” - kehittäjä, joka lukee tarkistuksen, jolla ei ole mitään järkeä tai jossa ei ole selviä ”"” -kriteerejä“ "” -kriteeriä”, : -kysymyksiä “.” -kysymys ei ole vaikeaa“'” –kysymykseni on vaikeaa” ; –kyymys on ammattitaitoinen „.” – mieluummin järjestettäisiin se nyt kuin laadittaisiin feature that keeps growing until it takes over the entire application” .