Agile non richiede un'assenza di design di alto livello. Prima che una storia possa essere elaborata da uno sviluppatore, la storia di un singolo utente è in grado di catturare completamente tutto ciò che è necessario definire prima di poter iniziare a sprintare?
As a user, I need to enter first name into a text input field on the X form, so that I can submit my first name as part of my profile information
Uno non poteva semplicemente iniziare a sprintare su questo in un vaccuum.
- In che lingua abbiamo deciso di utilizzare?
- Quali sono le linee guida di codifica che dovrei rispettare?
- Quali sono alcuni casi d'uso che posso testare?
- Lo scheletro del progetto e l'organizzazione sono stati creati?
- Come sono organizzati i componenti software? Esiste un diagramma dei componenti che descrive le interazioni tra i componenti software?
- Dovremmo seguire lo schema Transaction Script sul lato server o Rich Domain Model / MVC?
- Abbiamo creato il modello di dominio?
- Quali sono i requisiti non funzionali? Quanto velocemente dovrei ricevere una risposta? E riguardo la sicurezza? Devo fare il filtraggio XSS e disinfettare gli input?
- Quali sono i nostri standard di sviluppo del database? Dobbiamo rispettare alcune convenzioni di denominazione sugli oggetti dello schema? Esiste un diagramma di classe che descrive la tabella del profilo utente?
- Abbiamo un framework stabilito per il corretto test delle unità di business logic?
- Disponiamo di un ambiente di sviluppo e di un ambiente di test adeguati, in modo che la storia possa essere testata dal QA a prescindere dalle continue modifiche allo sviluppo?
- Abbiamo implementato l'integrazione continua in modo tale che le nostre build siano costantemente presenti e verificate in modo coerente.
- Quando la storia ha superato i test e viene accettata dal Product Owner, abbiamo un'implementazione di Delivery continuo in modo che le modifiche del software possano essere consegnate ad altri ambienti?
- Abbiamo il controllo del codice sorgente in atto con un adeguato controllo del codice sorgente e una strategia di ramificazione decisa?
- Quali framework web e decisioni di progettazione abbiamo deciso? Angolare? Spring MVC, JSON sui servizi REST?
- Sono state definite le linee guida dell'interfaccia utente, in particolare per come dovrebbero apparire le caselle di testo?
- Sono stati implementati componenti web comuni (o devono essere implementati come parte di questa storia) per fornire correttamente questa storia per il design di alto livello e con l'obiettivo di ridurre al minimo il debito tecnico?
- Qualcos'altro ...
Se stavi iniziando questa storia, c'è un'infrastruttura per così dire che deve esistere o che si aggrega tutta questa complessità in questa storia apparentemente piccola. È necessario per una storia che dovrebbe idealmente essere una piccola porzione verticale di un intero sistema.
As a post office customer, I want to send an overnight package from my home in Boston to my friend in San Francisco.
L'infrastruttura necessaria per questa storia è che abbiamo bisogno di un sistema di strade, un camioncino, una smistatrice postale, un aereo espresso, un aeroporto con una pista e un controllo del traffico, ecc ...
Se sembra molto, allora è perché lo è. Un'enorme quantità di lavoro è necessaria in termini di quell'infrastruttura di sviluppo che è richiesta prima che uno inizi a sprint e che fornisca direttamente valore aziendale.
Davvero non vuoi fare questo lavoro nello sprint
Dovrebbero esserci sforzi prima e tra gli sprint per affrontare e ottimizzare questi processi e lavorare.
Livelli di rischio
Il perseguimento di un prodotto minimo vitale e il refactoring costantemente alle mutevoli esigenze aziendali sono essenzialmente una soluzione di rischio. Potresti dedicare molto tempo allo sviluppo di una soluzione Cadillac per far girare il business e dire che in realtà avevano bisogno di una barca per tutto il tempo.
Pensa che sia un'assicurazione pagante contro lo scenario del disastro. Passi due settimane e sviluppi uno skateboard. Quindi spendi un altro e sviluppa e impennata elettrica. Gli affari decidono di volere veramente una barca, buttano via l'impennata e creano una tavola da paddle nel prossimo sprint. Sei giù per il tempo trascorso su un inutile skateboard e impennata, ma ti sei impedito di sprecare un sacco di tempo a costruire il Chasis di alta qualità per una Cadillac.
Sì, è una cosa che fa schifo lavorare duro su qualcosa che probabilmente verrà buttato via in un mese, ma ricorda,
Non riguarda lo sviluppatore!
La tua capacità di lavorare su stupendi software di alta qualità e di orgoglio per il tuo lavoro non è garantita. Non importa. L'unica cosa che conta è ciò che desidera il proprietario del prodotto e fornire un software funzionante con rapidi tempi di risposta. È così.