In che modo la prototipazione rapida si adatta a una metodologia agile?


12

Lavoro per una grande azienda, che impone l'utilizzo di processi agili. Ad esempio, per i nostri progetti, utilizziamo servizi basati su cloud specificamente mirati alla gestione dello sviluppo agile.

Lo specifico gruppo di ingegneri per cui lavoro non ha sviluppato tradizionalmente software (invece aiutiamo a guidare i progetti da un punto di vista molto più avveduto), ma questo sta cambiando. Abbiamo una vasta gamma di progetti software imminenti / pianificati che sono per lo più incentrati sui dati - ad esempio, faremo monitoraggio dei dati, raccolta, aggregazione e alcuni rapporti. Altre attività riguardano l'automazione con hardware specializzato e vari tipi di architetture client / server (a più livelli). Devo assistere nel processo di assunzione di diverse persone e di formulare molti dei nostri piani per andare avanti.

La mia domanda è se la prototipazione rapida (codice usa e getta) rientri o meno in una filosofia agile. Ad esempio, adoro Python e la sua vasta gamma di pacchetti. Vedo la possibilità di implementare molte delle nostre idee molto rapidamente con un flusso di lavoro basato su Python. Tuttavia, penso che ci saranno molte percezioni sul fatto che Python non sia "di qualità aziendale" e che gran parte di questo lavoro dovrebbe essere riscritto in Java o forse in C ++.

Tuttavia, la creazione dei prototipi di Python ci darebbe molto da fare per il nostro dollaro nel consentirci di ottenere rapidamente risultati reali.

Sei stato in grado di incorporare la prototipazione rapida - si spera in Python - in un flusso di lavoro solido e agile in un ambiente aziendale?


3
Scrivere codice usa e getta è una cosa pericolosa da fare. Se funziona, allora perché l'azienda dovrebbe preoccuparsene, "buttare via". Succede sempre a meno che tu non glielo mostri. Non comprometto mai la qualità del mio codice, anche quando ho inserito hackathon. Potrei mettere lo strano trucco qua e là - ma niente che sarebbe "buttare via". Durante la prototipazione, concentrati sulle storie che fanno una buona demo.
Dave Hillier,

3
"grande azienda, che detta l'uso dell'agile" - il divertente mix di parole "detta" e "agile" mi ha in qualche modo ricordato il Manifesto Agile Mezzo Arsed . Individui e interazioni su processi e strumenti ... e abbiamo processi e strumenti obbligatori per controllare il modo in cui tali individui (preferiamo il termine "risorse") interagiscono
moscerino

Risposte:


11

Il concetto di "prototipazione", come inteso in RAD , è un po 'estraneo allo sviluppo agile. Questo non significa che non si possa fare, ma è insolito.

Esistono diversi casi che devono essere esplorati:

  1. Il prototipo è un "guscio vuoto", un modello o una demo, costruito per dare un'idea di come sarebbe un prodotto? Puoi sicuramente farlo con una o più storie - comunque stai costruendo qualcosa dalla tua immaginazione, non costruendo un prodotto dal vero feedback. Le persone non valutano una demo come valutano un prodotto. Ad esempio, vedi il feedback sul nostro prototipo della barra superiore rispetto alla nostra reale implementazione della barra superiore .

  2. Il prototipo è qualcosa che deve essere costruito per comprendere meglio lo spazio del problema? Quindi dovrebbe essere coperto come un picco , e solo i suoi risultati conservati (il codice sorgente è transitorio).

  3. Il prototipo è una versione 0.x? Un prodotto minimo praticabile ? Quindi utilizzare il processo agile di tua scelta per questo. Se devi ricostruirlo in un'altra lingua, è probabile che tu stia meglio se lo tratti con un prodotto diverso. Si noti che a volte questo viene trattato come un modo per abbreviare la scrittura di una specifica ("dovrebbe fare lo stesso del prototipo!"). Questo è un modo davvero scadente di documentare un prodotto, ma questo è probabilmente meglio spiegato come una domanda e una risposta separate :-)


Ritengo che questa sia la risposta peggiore finora, sto facendo fatica a capire da dove provengano tutti questi voti. La prototipazione per ottenere un feedback precoce non è insolita, è originaria dello sviluppo agile.
Martin Maat,

@MartinMaat Per "prototipo" intendi "una prima versione del prodotto consegnata al cliente che si evolve progressivamente nel prodotto in modo iterativo"? In questo caso, ovviamente, hai ragione nel dire che è nativo di come agile funziona e i tre punti che faccio spiegano esattamente come. Non è quello che la gente intende con quella parola.
Sklivvz,

8

La prototipazione rapida (cioè lo sviluppo iterativo e incrementale) non è una specie dell'intero punto di Agile?

Sembra che tu abbia problemi con "la percezione è realtà" nella tua organizzazione. Potresti voler ricordare a tutti che Agile non significa "buttare via tutti i piani", più che Test-Driven Development significa "buttare via tutta l'architettura".

E Python non è (se mai lo è stato) un linguaggio giocattolo. La NASA e i suoi appaltatori usano Python , e se è abbastanza buono per loro, è abbastanza buono per me.


D'accordo, Python non è un linguaggio giocattolo ... Tuttavia, molte delle organizzazioni della mia azienda usano ampiamente Java, e dovremo interfacciarci con il loro codice, e quindi è un requisito che attiriamo persone con un forte background Java . Inoltre, non è tanto la percezione delle persone che capiscono il software a preoccupare, ma la percezione di coloro che non lo sanno. Quelle sono le persone che vogliono un nome che hanno già sentito prima, e quel nome è "Java" ... Mi piacerebbe che formassimo un team impegnato con Python come linguaggio principale, ma sarà difficile.
BobIsNotMyName

1
Anche se prototipi in Python e riscrivi parte o tutto in Java, non è necessariamente una cosa negativa (python non ha il profilo delle prestazioni di cui alcune applicazioni hanno bisogno). Avere "sentito" una lingua non è esattamente un'approvazione squillante. Data la scelta, sceglierei personalmente un'altra lingua diversa da Java, ma altre forze spesso dettano la scelta della lingua.
Robert Harvey,

@Robert Harvey: "La prototipazione rapida (ovvero lo sviluppo iterativo e incrementale) non è una specie dell'intero punto di Agile?": Per quanto ho capito, la prototipazione rapida significa realizzare un prototipo rapido, da buttare via e, dopo il cliente l'ha approvato, per costruire un prodotto reale (con un design adeguato, ecc.). In agile hai un compromesso tra i due: hai sempre un prototipo tecnicamente "abbastanza buono" (probabilmente non buono come un sistema che è stato progettato in anticipo, ma abbastanza buono per la produzione) in modo che possa essere consegnato come un prodotto non appena il cliente è soddisfatto.
Giorgio,

1
@Giorgio: Va bene, ma i clienti non sanno cosa vogliono fino a quando non lo mostri a loro e dicono "no, non è quello che voglio, lo voglio " . Sia che tu lo faccia in codice o su un pezzo di carta non fa differenza per me, purché identifichi ciò che il cliente desidera.
Robert Harvey,

2

Esiste una pratica abbastanza consolidata nella programmazione estrema chiamata Spike . Ciò significa che è un codice usa e getta. Non c'è niente di speciale in esso. È solo uno Sprint in cui il risultato atteso è la conoscenza del codice usa e getta.

Il link sopra ha abbastanza informazioni sulle buone pratiche, le insidie ​​dei picchi.

Il tuo caso d'uso specifico sembra un buon esempio: può essere utile progettare l'interfaccia, convalidare l'utilità e mostrarla ad alcuni utenti.


1

Stai per buttare via il codice e non metterlo in produzione (rendilo perfettamente chiaro a TUTTI), quindi essere agili o no non importa. Qualsiasi pratica agile è puramente facoltativa per i prototipi: sprint, burn-down, test, programmazione in coppia o qualsiasi altra cosa tu intenda utilizzare.

Se stai principalmente creando modelli funzionali in Python per aiutare i proprietari dei prodotti e altri decisori a concettualizzare il progetto, non devi essere pronto per le imprese. Tuttavia, se stai creando una prova di concetto o stai cercando di capire se riesci a gestire determinati livelli di prestazioni, probabilmente dovresti attenerti al linguaggio di produzione. Ciò non significa che non puoi provarlo in Python.

Indipendentemente da ciò, hai intenzione di buttare via il codice, ma hai la conoscenza di essere in grado di farlo funzionare insieme a un migliore senso di ciò che i proprietari vogliono. Ora puoi usare qualsiasi metodo tu voglia.


1

Aggiungerei che i prototipi sono cruciali per l'apprendimento, e anche nello spirito Agile. Se il prototipo ti consente di apprendere, specialmente all'interno di cicli di feedback più rapidi, procedi. Si tratta di massimizzare l'apprendimento e condividere gli apprendimenti con il team.


0

In termini di apprendimento, aggiungerei che la prototipazione ti porta all'apprendimento, più velocemente. In questo modo, puoi verificare se le persone si preoccupano persino del problema che stai cercando di risolvere - e se la soluzione che hai in mente è proprio quello che stanno cercando - senza perdere molto tempo a costruire una soluzione completa che possa , alla fine, non risolvere un problema abbastanza doloroso o non risolverlo nel modo giusto.


0

Il vero spirito di Agile riguarda l'interazione e la comunicazione. Direi che se il prototipo funziona bene come strumento per aiutare la comunicazione, non c'è niente di sbagliato ad usarlo nel mondo Agile. Nel nostro team (pratichiamo Agile da più di 5 anni) lo usiamo di volta in volta. E ci sono alcuni benefici che posso vedere da quello

1) Assistere la comunicazione

2) Coinvolgi gli utenti nelle interviste con le soluzioni e ricevi feedback in anticipo

Avvertimento:

La comunicazione diretta tra UX e gli ingegneri non deve MAI essere sostituita da artefatti di prototipazione. Se possibile, l'associazione con l'ingegnere funziona in modo molto più efficace rispetto alla comunicazione attraverso un mediatore (prototipo).


0

Altri hanno già menzionato lo scopo di apprendimento dei picchi. Ciò che manca è il principio agile che sta alla base, che fallisce rapidamente .

Uno dei pilastri dello sviluppo agile è riconoscere le parti dure e cercare prove di concetti, vedere se riesci a farlo affatto. Il modo classico di affrontare tutte le attività in un ordine "logico" può rivelarsi molto costoso se scopri che non puoi fare qualcosa in ritardo nel progetto. Tutto ciò che è stato fatto finora potrebbe essere uno spreco.

Se deve finire in quel modo, vuoi sapere il più rapidamente possibile. Quindi le parti interessate possono scegliere di smettere di bruciare denaro mentre non è stato ancora bruciato molto e accettare ciò che vogliono non è fattibile o di provare un approccio radicalmente diverso al problema che avrà una nuova possibilità di successo. Se i tuoi prototipi servono a questo scopo, sono davvero molto agili.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.