I had fun at the UXConf. I like participating at the first edition of a conference. And above all I like to show to a non-technical audience the basic techniques of XP and Agile Methods.
2. Questo intervento sostiene:
Design Emergente: Più Cambiamenti, Più Profitti 2
3. Obiettivi
Mostrare come il cambiamento dei requisiti aumenti il profitto
Trasmettere l’essenza di XP
Design Emergente: Più Cambiamenti, Più Profitti 3
4. Il software è un “prodotto”?
Design Emergente: Più Cambiamenti, Più Profitti 4
5. Arrivare ad un prodotto innovativo
Design Emergente: Più Cambiamenti, Più Profitti 5
6. Perché i progetti falliscono?
Design Emergente: Più Cambiamenti, Più Profitti 6
7. Come fare profitti con i cambiamenti?
Design Emergente: Più Cambiamenti, Più Profitti 7
8. Perché i progetti falliscono?
Complessità Velocità
Design Emergente: Più Cambiamenti, Più Profitti 8
9. La risposta di XP
Sostituire il motore dei valori con:
comunicazione, feedback, semplicità, coraggio, rispetto
Applicare pratiche volte a ridurre la complessità:
di business, tecnica e di comunicazione
Design Emergente: Più Cambiamenti, Più Profitti 9
10. Semplice = far crescere il software
Programma fatturazione v0.1 :-)
Design Emergente: Più Cambiamenti, Più Profitti 10
11. Facile = la prima cosa che mi viene in mente
Design Emergente: Più Cambiamenti, Più Profitti 11
12. I fondamenti del Design Emergente
Meno strutturalmente complesso è il sistema corrente, e
meno intrinsecamente complesso è il problema da
risolvere, e minore sarà lo sforzo e quindi i costi e i tempi
necessari per introdurre la nuova funzionalità
Se per complessità marginale consideriamo l’incremento
di complessità del sistema necessario per introdurre la
nuova funzionalità, al fine di favorire il cambiamento nel
tempo, lo sforzo da applicare dovrà essere indirizzato a
ridurre la complessità marginale fino a renderla negativa
Complessità del sistema
Tempo
Design Emergente: Più Cambiamenti, Più Profitti 12
13. Da dove si parte?
“Since the whole system development starts from what the
users wish to be able to do with the system, we build the
system from the users’ point of view. In this way, it will be
easy to discuss the requirements model with the users, and
changes to the model will be simple to make”
--Ivar Jacobson
Design Emergente: Più Cambiamenti, Più Profitti 13
14. User Story
Design Emergente: Più Cambiamenti, Più Profitti 14
15. Il videogioco di ChengQi
Design Emergente: Più Cambiamenti, Più Profitti 15
16. Il videogioco di ChengQi
4 settimane
Partita
Space
Invader
2,5 settimane
Movimento
orizzontale Movimento
cannoncino orizzontale Strategia Strategia
astronave Incremento
attacco attacco
punteggio
UFO2 UFO1
Movimento Strategia
verticale attacco Collisione
UFO astronave Balistica
proiettile
proiettile cannoncino
Strategia cannoncino
attacco
Balistica UFO3
proiettile Collisione
Collisione
UFO proiettile
proiettile
UFO e nave
Morte barriera
cannoncino
Rotazione
360°
cannoncino Movimento Collisione
verticale Collisione asteroide
asteroide proiettile cannoncino
asteroide
Partita
Asteroids
Design Emergente: Più Cambiamenti, Più Profitti 16
17. Prosimo passo: ridurre la complessità marginale
Mantenere bassa la complessità del sistema
Mantenere bassa la complessità intrinseca del problema
Design Emergente: Più Cambiamenti, Più Profitti 17
18. Mantenere bassa la complessità del sistema
Il Refactoring:
Aumentare la capacità del codice di rivelare le intenzioni di
design, a qualsiasi membro del team, alla prima occhiata
Migliorare la struttura interna del sistema, consentendo alle
necessarie astrazioni di emergere
employees.forEach(printSlip);
“Our job is to solve problems, not spoonfeed compilers (…)
We need clarity so we can communicate using our code. We
value conciseness and the ability to express a requirement in
code accurately and efficiently”.
--Dave Thomas
Design Emergente: Più Cambiamenti, Più Profitti 18
19. Mantenere bassa la complessità del sistema
Malleabilità
Continua applicazione di sforzo
Assicurare che le strutture dipendono dalle funzionalità
Design Emergente: Più Cambiamenti, Più Profitti 19
20. Mantenere bassa la complessità intrinseca
del problema
Step 1: Obiettivo:
Stanze disponibili Fare una
in un giorno per prenotazione in un
un albergo con albergo per un
una stanza periodo di tempo
Step 2: Step 3:
Stanze disponibili Stanze disponibili
in un giorno per in un giorno per
un albergo con un albergo con
una stanza con una stanza con
una prenotazione una prenotazione
in un giorno in un periodo
Design Emergente: Più Cambiamenti, Più Profitti 20
21. Il cambiamento come opportunità di business
Identificare nuove opportunità di business
Assicurare ritorno investimenti rapido e frequente
Consentire di cambiare quando necessario
Design Emergente: Più Cambiamenti, Più Profitti 21
22. Dove continuare?
Design Emergente: Più Cambiamenti, Più Profitti 22
23. Domande?
Design Emergente: Più Cambiamenti, Più Profitti 23