SlideShare una empresa de Scribd logo
1 de 79
Descargar para leer sin conexión
PROBLEM SOLVING
MAD2
Luca Naso - Catania, 15 Gennaio 2015
AGENDA
1. Problem solving?
2. Strategie e strumenti
[break]
3. Un esempio concreto
PROBLEM SOLVING?
COS’È E COME FUNZIONA
A LIFELONG CHALLENGE
L’arte di risolvere problemi è la sfida di tutta una vita
• Di certo non basteranno 4 ore di lezione ad
apprenderla … e neanche 400
• Necessita di tanta esperienza
A LIFELONG CHALLENGE
Scopo della lezione di oggi è di indicarvi la via per
massimizzare la vostra esperienza
Insieme di tecniche utilizzate per risolvere problemi
non banali
Che tipo di problemi?
• problemi di natura tecnica in ambito lavorativo,
riguardanti ad esempio i processi aziendali.
• problemi di natura relazionale e/o emozionale, in
ambito sia lavorativo che non.
COSA E’ IL PROBLEM SOLVING?
I “PROBLEMI”
I “problemi” per i quali si cerca una soluzione sono di
solito complessi, riguardano più eventi e coinvolgono
diverse persone.
I “PROBLEMI”
Spesso la soluzione si ottiene lavorando di gruppo.
COMPETENZA TRASVERSALE
Il problem solving è una competenza trasversale che
si applica ai più disparati ambiti (così come il
Sviluppa/richiede
capacità di giudizio e
di analisi.
pensiero critico, la
creatività e la
gestione costruttiva
dei sentimenti).
STRATEGIE STANDARD
Con il tempo sono state sviluppate delle strategie
codificate per la risoluzione dei problemi.
Si tratta di una insieme di istruzioni da seguire per
arrivare alla soluzione del problema.
PERCHÉ SVILUPPARE DELLE
STRATEGIE STANDARD?
L’obiettivo è risolvere i problemi…
in maniera:
1. Efficace (non vogliamo che il problema torni)
2. Efficiente (vogliamo farlo ad un costo minimo)
Una strategia standard è la raccolta di tante
esperienze perfezionate nel tempo.
BENEFICI
Avere delle precise tecniche di problem solving
consente alle aziende di:
• ottimizzare i loro processi (essere più competitive)
• rispondere alle emergenze in tempi più brevi e
con soluzioni più efficaci
di quanto non si farebbe lasciando tutto all’iniziativa
dei singoli (e del momento).
ATTIVI E SUBITO
ATTIVI E SUBITO
• ATTIVI: Non è l’applicazione teorica, ma richiede
un ruolo intellettualmente attivo, che porta alla
creazione di qualcosa.
• SUBITO: Non è la pianificazione di una risoluzione
futura, ma prevede che sia già in atto.
COME FUNZIONA
Esistono varie tecniche, solitamente divise in fasi e
seguono lo schema tipico dell’approccio scientifico.
Tutte le tecniche passano attraverso tre macro-aree:
1. identificazione e definizione del problema
2. suddivisione del problema nelle sue parti critiche
3. individuazione ed applicazione di una soluzione
COME NON FUNZIONA
Quando ci si trova di fronte alla necessità di risolvere
un problema è facile avere alcuni atteggiamenti
estremamente controproducenti.
Vediamone due.
SALTARE ALLE CONCLUSIONI
COME NON FUNZIONA
SALTARE ALLE CONCLUSIONI
1. Saltare direttamente alla conclusione, perché si
pensa di aver intuito una soluzione
COME NON FUNZIONA
ACCUSARE
COME NON FUNZIONA
ACCUSARE
2. Andare alla ricerca di un colpevole (chi ha creato
il problema) e fare accuse.
COME NON FUNZIONA
ACCUSARE
COME NON FUNZIONA
2. Andare alla ricerca di un colpevole (chi ha creato
il problema) e fare accuse.
Tutti iniziano ad accusare
ACCUSARE
COME NON FUNZIONA
2. Andare alla ricerca di un colpevole (chi ha creato
il problema) e fare accuse.
Poi si risponde alle accuse
ACCUSARE
COME NON FUNZIONA
2. Andare alla ricerca di un colpevole (chi ha creato
il problema) e fare accuse.
Qualcuno porterà il peso della colpa
ACCUSARE
COME NON FUNZIONA
2. Andare alla ricerca di un colpevole (chi ha creato
il problema) e fare accuse.
A meno che non facciate una faccina così sarà difficile lavorare bene
Questi atteggiamenti si traducono quasi sempre in
una perdita di tempo e risorse.
Spesso ci si ritrova al punto di partenza oppure è
necessario fare più volte lo stesso lavoro.
E’ anche al fine di evitare questi errori che sono state
sviluppate delle strategie precise di problem
solving.
SPRECO DI RISORSE
COME NON FUNZIONA
REPETITA IUVANT
In nessuna fase si va mai alla ricerca di colpevoli, ma
sempre e solo di soluzioni.
La ricerca della soluzione, non deve spingere a saltare o
accorciare le fasi della strategia che si sta mettendo in atto.
Altrimenti si perdono i benefici della strategia stessa, ad
esempio si rischia di sottovalutare il problema, o la
soluzione che si vuole applicare potrebbe non essere la
migliore.
STRATEGIE E STRUMENTI[1]
PANORAMICA
PSS
PROBLEM SOLVING STRATEGICO
1. Definire il problema
2. Concordare l’obiettivo
3. Individuare e valutare
eventuali soluzioni già
tentate (e fallite!)
4. Come si potrebbe
peggiorare la situazione?
5. Quale sarebbe lo scenario
una volta risolto il problema
al 100%?
6. Piccoli passi a ritroso:
partire dalla fine e
procedere a ritroso fino alla
partenza
7. Iterare: risolvere un piccolo
problema alla volta, e se
serve modificare la
direzione ad ogni passo.
Usato in campo manageriale
FARE - FOCALIZZARE
ANALIZZARE RISOLVERE ESEGUIRE
1. Focalizzare: Capire e definire in dettaglio il
problema
2. Analizzare: Definizione degli elementi critici,
Quantificare i fattori rilevanti con dei valori di
riferimento
3. Risolvere: Generare delle possibili soluzioni,
scegliere la soluzione da implementare, sviluppare
un piano
4. Eseguire: Realizzare il piano, quantificare i progressi
PDCA
PLAN DO CHECK ACT
1. Pianifica: analizzare la situazione, cercare le cause,
definire gli obiettivi, le soluzioni ed i compiti
2. Prova: applicare il piano su piccola scala
3. Verifica: verificare che le prove danno i risultati
attesi. Se no, tornare al punto 1
4. Agisci: mettere in produzione il piano che ha
superato la verifica
Considerare l’opzione di inserire una verifica su scala
intermedia (tra il punto 3 e 4).
DMAIC – DEFINE MEASURE
ANALYZE IMPROVE CONTROL
DMAIC – DEFINE MEASURE
ANALYZE IMPROVE CONTROL
1. Definire i processi critici, gli obiettivi da raggiungere, le
risorse necessarie. Realizzare una roadmap
DMAIC – DEFINE MEASURE
ANALYZE IMPROVE CONTROL
2. Elaborare un piano per misurare l’efficacia dei processi,
dopo averli suddivisi in piccole parti
1. Definire i processi critici, gli obiettivi da raggiungere, le
risorse necessarie. Realizzare una roadmap
DMAIC – DEFINE MEASURE
ANALYZE IMPROVE CONTROL
1. Definire i processi critici, gli obiettivi da raggiungere, le
risorse necessarie. Realizzare una roadmap
2. Elaborare un piano per misurare l’efficacia dei processi,
dopo averli suddivisi in piccole parti
3. Analisi dei dati raccolti al punto 2, per trovare relazioni
tra le variabili, ed identificare punti sui quali intervenire
DMAIC – DEFINE MEASURE
ANALYZE IMPROVE CONTROL
4. Sulla base dell’analisi al punto 3 creare ed implementare
una soluzione che possa migliorare i processi
1. Definire i processi critici, gli obiettivi da raggiungere, le
risorse necessarie. Realizzare una roadmap
2. Elaborare un piano per misurare l’efficacia dei processi,
dopo averli suddivisi in piccole parti
3. Analisi dei dati raccolti al punto 2, per trovare relazioni
tra le variabili, ed identificare punti sui quali intervenire
DMAIC – DEFINE MEASURE
ANALYZE IMPROVE CONTROL
5. Dopo aver ottimizzato il processo creare un sistema di
controllo per mantenere il livello di qualità raggiunto
1. Definire i processi critici, gli obiettivi da raggiungere, le
risorse necessarie. Realizzare una roadmap
4. Sulla base dell’analisi al punto 3 creare ed implementare
una soluzione che possa migliorare i processi
2. Elaborare un piano per misurare l’efficacia dei processi,
dopo averli suddivisi in piccole parti
3. Analisi dei dati raccolti al punto 2, per trovare relazioni
tra le variabili, ed identificare punti sui quali intervenire
STRUMENTI
PANORAMICA
DIAGRAMMI
• Diagrammi Causa-
Effetto
• Diagrammi di Flusso
• Checklists
• Diagramma di Pareto
• Diagrammi di
controllo
• Scatter diagrams
DIAGRAMMI DI FLUSSO
• Visualizzare il processo
• Trovare i difetti
• Capire le relazioni
ANALISI DI PARETO
Solo pochi fattori vitali
(20%)
sono responsabili della
gran parte dei problemi
(80%)
5W2H
Redigere un documento per individuare le principali
cause del problema.
Il documento viene creato rispondendo a 7
domande.
5W2H
5W: Who? What? Where? When? Why?
2H: How? How many?
5W2H+
5W2H+
BRAINSTORMING
Riunione dove si dà libero spazio alle idee
BRAINSTORMING
Nessuna idea può essere rifiutata o respinta. Il focus
non è sulla critica ma sull’estensione delle idee.
Senza timore di essere giudicato ciascuno si esprime
più liberamente e può diventare fonte di ispirazione
per gli altri (associazione delle idee).
1. Ciascuno scrive un’idea, il gruppo vota ogni idea,
le prime vengono discusse (in sottogruppi).
2. Ciascuno scrive un’idea, la passa alla persona
accanto, aggiunge qualcosa all’idea che ha
ricevuto.
3. Strumenti informatici possono ottimizzare i tempi
ed assicurare l’anonimato.
COME FUNZIONA - 3 ESEMPI
BRAINSTORMING
DIAGRAMMA CAUSA-EFFETTO
Diagramma a lisca di pesce per descrivere un
processo/fenomeno/problema.
La testa del pesce è il problema, a seguire le varie
cause. Ogni causa può avere altri rami del
diagramma.
Tutte le cause vanno suddivise gerarchicamente.
DIAGRAMMA CAUSA-EFFETTO
ANALISI DI ISHIKAWA
DIAGRAMMA CAUSA-EFFETTO
Per identificare tutte le cause si utilizza il
brainstorming.
Il diagramma causa-effetto a lisca di pesce viene
anche detto “diagramma di Ishikawa” perché è parte
integrante dell’analisi di Ishikawa,
in cui, oltre alle cause, va definita anche l’azione
correttiva più opportuna.
UN ESEMPIO CONCRETO[2]
PROBLEM SOLVING FOR DEVELOPERS
IL PROBLEMA
Data la propria data di nascita e la data corrente,
calcolare la propria età in giorni. Includere gli anni
bisestili. Assumere che la data di nascita e la data
corrente siano date valide e che non ci siano viaggi
nel tempo.
Esempio: se la data di nascita è 1 gennaio 1950 e la
data di oggi è 2 gennaio 1950, l’età è di 1 giorno.
1. LA PRIMA COSA DA FARE
Come iniziereste voi?
a. Inizio a scrivere le prime righe di codice
b. Mi assicuro di aver ben capito il problema
c. Penso ad un algoritmo che possa risolvere il
problema
Risposta giusta: b
1. LA PRIMA COSA DA FARE
Uno dei modi per capire il problema è quello di
identificare input ed output
Input: tutti quei valori che possono essere accettati in
ingresso
Output: tutti quei valori che vengono richiesti perché il
problema si consideri risolto
Logicamente la soluzione al problema sarà una procedura
che a partire da input validi restituisca degli output corretti
1. LA PRIMA COSA DA FARE
Nel nostro caso:
Input = una coppia di date (infinite)
Output = un numero intero, la distanza in giorni tra le due date (1
solo)
Possiamo accettare tutte le coppie di date come input? No, la
prima data deve essere antecedente la seconda data
Defensive Programming: all’interno del nostro codice verifichiamo
che gli input sono corretti, se non lo sono interrompiamo
l’esecuzione e restituiamo un messaggio di errore chiaro
2. COME RISOLVERE IL
PROBLEMA?
Siamo adesso pronti a risolvere il problema. Come
procediamo?
a. Iniziamo a scrivere il codice
b. Studiamo alcuni esempi (a mano)
c. Cercare una soluzione sul web
Risposta giusta: b, e anche c
2. COME RISOLVERE IL
PROBLEMA?
E’ importante capire la relazione che c’è tra gli input
e gli output. A prima vista non si colgono tutti i casi
Scegliere alcuni input, e calcolare a mano l’output
corretto.
Ad esempio:
due date uguali, output 0; due date una dopo l’altra,
output 1; due date a distanza di 1 anno, output 365;
due date errate, output err msg; …
3. E’ ARRIVATO IL MOMENTO DI
SCRIVERE CODICE?
La nostra conoscenza e padronanza del problema
aumenta. Siamo adesso pronti a scrivere il codice?
a. Si
b. No, dobbiamo scegliere il linguaggio adatto
c. No, dobbiamo cercare una soluzione
Risposta giusta: c
3. E’ ARRIVATO IL MOMENTO DI
SCRIVERE CODICE?
Consideriamo come un umano risolverebbe il problema
Ad esempio, input: da 2013,1,24 a 2013,6,29
1. prendere un calendario
2. cercare la data di inizio
3. segnare i giorni che restano nel mese di partenza (7)
4. segnare i giorni dei mesi completi (feb 28, mar 31, apr 30, mag 31)
5. segnare i giorni parziali dell’ultimo mese (29)
6. sommare tutti i valori segnati (—>156)
3. E’ ARRIVATO IL MOMENTO DI
SCRIVERE CODICE?
Traduciamo in pseudo-codice questa soluzione:
Usiamo indice 1 per la prima data, e indice 2 per la
seconda data
days = # days left in month1
month1 += 1
while month1 < month2:
days += # days in month1
month1 += 1
days += day2
4. POSSIAMO IMPLEMENTARE
LA SOLUZIONE?
Adesso abbiamo una soluzione che funziona,
possiamo implementarla in un codice?
a. Si, funziona alla grande
b. Si, non è perfetta ma è un buon inizio
c. No, prima dobbiamo analizzare altri casi
d. No, dobbiamo trovare una soluzione più semplice
Risposta giusta: d
4. POSSIAMO IMPLEMENTARE
LA SOLUZIONE?
In questa procedura ci sono troppi casi non gestiti:
1. Le due date sono in anni diversi
2. Le due date sono nello stesso mese
3. La seconda data è in un mese precedente della
prima data, ma in un anno successivo
4. Non c’è traccia degli anni bisestili
4. POSSIAMO IMPLEMENTARE
LA SOLUZIONE?
ATTENZIONE
di sicuro questa procedura può essere modificata in
modo tale da gestire tutti i casi citati
Questo però richiederebbe la definizione di molti
casi speciali
i casi speciali sono l’anticamera preferita dei bug!
4. POSSIAMO IMPLEMENTARE
LA SOLUZIONE?
Come trovare una soluzione più semplice?
Gli umani odiano fare compiti ripetitivi, quindi cercano
di ridurre le azioni. I computer invece no: è meglio fare
tante azioni semplici che poche complesse (si riduce la
probabilità di sbagliare, ed è più facile da capire)
Allora perché bisogna passare da questa fase? Perché
ci aiuta a capire meglio il problema, e ad individuare le
criticità
4. POSSIAMO IMPLEMENTARE
LA SOLUZIONE?
Procedura semplice e meccanica (e noiosa):
1. prendere un calendario
2. cercare la data di inizio
3. contare i giorni uno per uno fino alla data finale (156)
Pseudo-codice:
days = 0
while date1 before date2:
days +=1
date1 advance to next day
5. CON COSA INIZIAMO?
Adesso siamo pronti a scrivere il codice. Cosa
scriviamo per prima?
a. daysBetweenDates
b. nextDay
c. isLeapYear
d. daysInMonth
Risposta giusta: b, anche c
5. CON COSA INIZIAMO?
Input: data Output: la data del giorno successivo
Non implementiamo la versione completa e
definitiva, ma solo una prima versione semplificata,
dove assumiamo che ogni mese abbia 30 giorni
Dopo averla scritta la testiamo su alcuni casi
d’esempio
BUONE NOTIZIE:
STIAMO FACENDO PROGRESSI!
FARE PROGRESSI = SCRIVERE PICCOLI PEZZI
DI CODICE, TESTARLI, E SAPERE COSA FANNO.
6. COSA SCRIVIAMO DOPO?
Abbiamo scritto la prima procedura, qual è il
prossimo passo?
a. Perfezioniamo la procedura appena scritta,
nextDay
b. Realizziamo una nuova procedura,
daysBetweenDates, cioè la procedura generale
Risposta giusta: b
6. COSA SCRIVIAMO DOPO?
L’approccio giusto e’ quello di fare tanti piccoli passi
in una certa direzione, anche se non sono tutti
perfetti.
Questo serve per capire se siamo nella direzione
giusta, e per scrivere codice in maniera efficiente (=
evitare di scrivere cose che non servono, o di
scriverle male).
6. COSA SCRIVIAMO DOPO?
daysBetweenDates ci permetterà di avere una stima
dell’output finale.
Non avremo il valore preciso, pero’ ci aiuta a definire
i punti cruciali dell’intera soluzione.
In questo caso ci serve una procedura intermedia,
dateIsBefore(date1,date2), per sapere se una data è
prima di un’altra.
7. LA PARTE “DIFFICILE”
Adesso dobbiamo gestire le parti problematiche: i
mesi non sono tutti di 30 giorni, ed alcuni anni sono
bisestili.
La strategia che abbiamo seguito ci ha permesso di
fare notevoli progressi, affrontando solo task facili.
Abbiamo isolato gli elementi più difficili senza pero’
creare casi speciali.
7. LA PARTE “DIFFICILE”
Per avere la soluzione corretta però prima o poi va
affrontata anche la parte difficile.
La cosa importante è affrontare la parte difficile solo
quando si è sicuri che abbia senso farlo, e solo
quando si hanno le idee più chiare su come farlo
(nell’economia dell’intero codice).
7. LA PARTE “DIFFICILE”
Come concludere in 3 fasi (8 passi):
1. (1) creare una “dummy” daysInMonth, che restituisce
sempre 30 (2) modificare nextDay per usare daysInMonth
(3) test (stessi risultati di prima).
2. (4) modificare daysInMonth, in modo che sia sempre
corretta, tranne che per gli anni bisestili (5) test (i risultati
sono corretti per tutte le date che non contengono anni
bisestili).
3. (6) creare isLeapYear (7) test isLeapYear (8) finalizzare
l’intero codice e testare.
CORE DELLA STRATEGIA DI
CODING
Core: Scrivere piccoli pezzi di codice e testarli mano a
mano che si scrivono.
Altrimenti:
• Non solo il codice finale avrà molti più bug, ma sarà
anche difficile trovarli
• L’azione di debug sarà complessa ed anche il
mantenimento del codice sarà più lungo e difficoltoso
GUIDA AL PROBLEM SOLVING:
5 PASSI 2 NOTE
Nota 1: don’t panic!
1. Quali sono gli input?
2. Quali sono gli output?
3. Analizzare alcuni esempi a mano
4. Identificare una soluzione meccanica semplice
5. Sviluppare il codice in modo incrementale, testando
ogni passo
Nota 2: Non ottimizzare il codice prematuramente
AGENDA
1. Problem solving?
Cos’è, come funziona e come NON funziona
2. Strategie e strumenti
Panoramica sulle tecniche ed i tools più interessanti
3. Un esempio concreto
Codice per calcolare la distanza in giorni
ADESSO TOCCA A VOI
Per gli sviluppatori: provate a risolvere sul serio il
problema della data.
Per i designer: provate a trovare un vostro esempio
concreto simile a questo.
Quando vi trovate di fronte ad un problema, d’ora in
poi razionalizzate la vostra reazione.
REFERENCES
[1] wikipedia: it.wikipedia.org/wiki/Problem_solving
[2] udacity course: intro to computer science:
www.udacity.com/course/cs101
Contacts:
email: luca.naso@gmail.com
Linkedin: Luca Naso it.linkedin.com/in/lucanaso

Más contenido relacionado

La actualidad más candente

Tecniche di comunicazione efficace
Tecniche di comunicazione efficaceTecniche di comunicazione efficace
Tecniche di comunicazione efficaceClaudio Settembrini
 
Come prendere una decisione. Tecniche e strumenti di decision making
Come prendere una decisione. Tecniche e strumenti di decision makingCome prendere una decisione. Tecniche e strumenti di decision making
Come prendere una decisione. Tecniche e strumenti di decision makingObiettivo Psicologia Srl
 
problem-solving - 6 cappelli per pensare - Parte 2
problem-solving - 6 cappelli per pensare - Parte 2problem-solving - 6 cappelli per pensare - Parte 2
problem-solving - 6 cappelli per pensare - Parte 2Alberto Garniga
 
Problem solving & decision making
Problem solving & decision making Problem solving & decision making
Problem solving & decision making HTAcamp
 
Dinamiche di gruppo e leadership
Dinamiche di gruppo e leadershipDinamiche di gruppo e leadership
Dinamiche di gruppo e leadershipVeronica Gallo
 
Comunicazione efficace: principi e tecniche di base
Comunicazione efficace: principi e tecniche di baseComunicazione efficace: principi e tecniche di base
Comunicazione efficace: principi e tecniche di basePLS Coaching
 
Problem solving - Applicare il pensiero creativo alla risoluzione di un problema
Problem solving - Applicare il pensiero creativo alla risoluzione di un problemaProblem solving - Applicare il pensiero creativo alla risoluzione di un problema
Problem solving - Applicare il pensiero creativo alla risoluzione di un problemaMirko Cuneo
 
Tecniche di comunicazione efficace
Tecniche di comunicazione efficaceTecniche di comunicazione efficace
Tecniche di comunicazione efficaceVERLICCHI VERONICA
 
Elementi di psicologia sociale
Elementi di psicologia socialeElementi di psicologia sociale
Elementi di psicologia socialeMarilena Civetta
 
Litigare bene tra colleghi - Graziano Tullio
Litigare bene tra colleghi - Graziano TullioLitigare bene tra colleghi - Graziano Tullio
Litigare bene tra colleghi - Graziano TullioVulcanica Mente
 
121 microsoft power point - ascolto attivo
121 microsoft power point - ascolto attivo121 microsoft power point - ascolto attivo
121 microsoft power point - ascolto attivoimartini
 
Gestione del conflitto e della relazione
Gestione del conflitto e della relazioneGestione del conflitto e della relazione
Gestione del conflitto e della relazioneStefano Colombini
 
Gestione tempo - tecniche e strumenti
Gestione tempo - tecniche e strumentiGestione tempo - tecniche e strumenti
Gestione tempo - tecniche e strumentiValeria Laurenti
 

La actualidad más candente (20)

Problem solving
Problem solvingProblem solving
Problem solving
 
La gestione del tempo
La gestione del tempoLa gestione del tempo
La gestione del tempo
 
Negoziazione efficace
Negoziazione efficaceNegoziazione efficace
Negoziazione efficace
 
Tecniche di comunicazione efficace
Tecniche di comunicazione efficaceTecniche di comunicazione efficace
Tecniche di comunicazione efficace
 
Come prendere una decisione. Tecniche e strumenti di decision making
Come prendere una decisione. Tecniche e strumenti di decision makingCome prendere una decisione. Tecniche e strumenti di decision making
Come prendere una decisione. Tecniche e strumenti di decision making
 
problem-solving - 6 cappelli per pensare - Parte 2
problem-solving - 6 cappelli per pensare - Parte 2problem-solving - 6 cappelli per pensare - Parte 2
problem-solving - 6 cappelli per pensare - Parte 2
 
Problem solving & decision making
Problem solving & decision making Problem solving & decision making
Problem solving & decision making
 
Lavorare in team
Lavorare in teamLavorare in team
Lavorare in team
 
Dinamiche di gruppo e leadership
Dinamiche di gruppo e leadershipDinamiche di gruppo e leadership
Dinamiche di gruppo e leadership
 
Comunicazione efficace: principi e tecniche di base
Comunicazione efficace: principi e tecniche di baseComunicazione efficace: principi e tecniche di base
Comunicazione efficace: principi e tecniche di base
 
Problem solving - Applicare il pensiero creativo alla risoluzione di un problema
Problem solving - Applicare il pensiero creativo alla risoluzione di un problemaProblem solving - Applicare il pensiero creativo alla risoluzione di un problema
Problem solving - Applicare il pensiero creativo alla risoluzione di un problema
 
BRAINSTORMING
BRAINSTORMING BRAINSTORMING
BRAINSTORMING
 
Tecniche di comunicazione efficace
Tecniche di comunicazione efficaceTecniche di comunicazione efficace
Tecniche di comunicazione efficace
 
Comunicazione Assertiva
Comunicazione AssertivaComunicazione Assertiva
Comunicazione Assertiva
 
Elementi di psicologia sociale
Elementi di psicologia socialeElementi di psicologia sociale
Elementi di psicologia sociale
 
Litigare bene tra colleghi - Graziano Tullio
Litigare bene tra colleghi - Graziano TullioLitigare bene tra colleghi - Graziano Tullio
Litigare bene tra colleghi - Graziano Tullio
 
121 microsoft power point - ascolto attivo
121 microsoft power point - ascolto attivo121 microsoft power point - ascolto attivo
121 microsoft power point - ascolto attivo
 
Gestione del conflitto e della relazione
Gestione del conflitto e della relazioneGestione del conflitto e della relazione
Gestione del conflitto e della relazione
 
L'assertività
L'assertività L'assertività
L'assertività
 
Gestione tempo - tecniche e strumenti
Gestione tempo - tecniche e strumentiGestione tempo - tecniche e strumenti
Gestione tempo - tecniche e strumenti
 

Destacado

The wolf method - dall'epic fail al problem solving creativo
The wolf method - dall'epic fail al problem solving creativoThe wolf method - dall'epic fail al problem solving creativo
The wolf method - dall'epic fail al problem solving creativoAlviani ArtSpace
 
La valutazione dei rischi
La valutazione dei rischiLa valutazione dei rischi
La valutazione dei rischiDario
 
Aps risk management e problem solving sono due cose diverse
Aps risk management e problem solving sono due cose diverseAps risk management e problem solving sono due cose diverse
Aps risk management e problem solving sono due cose diversedrgivan
 
Le riunioni efficaci: 3. i 4 strumenti per riunioni efficaci
Le riunioni efficaci: 3. i 4 strumenti per riunioni efficaciLe riunioni efficaci: 3. i 4 strumenti per riunioni efficaci
Le riunioni efficaci: 3. i 4 strumenti per riunioni efficaciManager.it
 
PROBLEM SOLVING & BRAINSTORMING (1°parte) - Ezio Roppolo
PROBLEM SOLVING & BRAINSTORMING (1°parte) - Ezio RoppoloPROBLEM SOLVING & BRAINSTORMING (1°parte) - Ezio Roppolo
PROBLEM SOLVING & BRAINSTORMING (1°parte) - Ezio RoppoloGiovanni Rissone
 
Applicare il Problem Solving. Metodo, Applicazioni, Root Causes, Contromisure...
Applicare il Problem Solving. Metodo, Applicazioni, Root Causes, Contromisure...Applicare il Problem Solving. Metodo, Applicazioni, Root Causes, Contromisure...
Applicare il Problem Solving. Metodo, Applicazioni, Root Causes, Contromisure...drgivan
 
Corso di Formazione 1°giornata
Corso di Formazione 1°giornataCorso di Formazione 1°giornata
Corso di Formazione 1°giornataSilviaRaffaldi
 
problem-solving - pensiero divergente-convergente - Parte 1
problem-solving - pensiero divergente-convergente - Parte 1problem-solving - pensiero divergente-convergente - Parte 1
problem-solving - pensiero divergente-convergente - Parte 1Alberto Garniga
 
Corso ASPP/RSPP mod. A3 - Inviduazione e valutazione dei rischi
Corso ASPP/RSPP mod. A3 - Inviduazione e valutazione dei rischiCorso ASPP/RSPP mod. A3 - Inviduazione e valutazione dei rischi
Corso ASPP/RSPP mod. A3 - Inviduazione e valutazione dei rischiRoberto Rocchegiani
 

Destacado (9)

The wolf method - dall'epic fail al problem solving creativo
The wolf method - dall'epic fail al problem solving creativoThe wolf method - dall'epic fail al problem solving creativo
The wolf method - dall'epic fail al problem solving creativo
 
La valutazione dei rischi
La valutazione dei rischiLa valutazione dei rischi
La valutazione dei rischi
 
Aps risk management e problem solving sono due cose diverse
Aps risk management e problem solving sono due cose diverseAps risk management e problem solving sono due cose diverse
Aps risk management e problem solving sono due cose diverse
 
Le riunioni efficaci: 3. i 4 strumenti per riunioni efficaci
Le riunioni efficaci: 3. i 4 strumenti per riunioni efficaciLe riunioni efficaci: 3. i 4 strumenti per riunioni efficaci
Le riunioni efficaci: 3. i 4 strumenti per riunioni efficaci
 
PROBLEM SOLVING & BRAINSTORMING (1°parte) - Ezio Roppolo
PROBLEM SOLVING & BRAINSTORMING (1°parte) - Ezio RoppoloPROBLEM SOLVING & BRAINSTORMING (1°parte) - Ezio Roppolo
PROBLEM SOLVING & BRAINSTORMING (1°parte) - Ezio Roppolo
 
Applicare il Problem Solving. Metodo, Applicazioni, Root Causes, Contromisure...
Applicare il Problem Solving. Metodo, Applicazioni, Root Causes, Contromisure...Applicare il Problem Solving. Metodo, Applicazioni, Root Causes, Contromisure...
Applicare il Problem Solving. Metodo, Applicazioni, Root Causes, Contromisure...
 
Corso di Formazione 1°giornata
Corso di Formazione 1°giornataCorso di Formazione 1°giornata
Corso di Formazione 1°giornata
 
problem-solving - pensiero divergente-convergente - Parte 1
problem-solving - pensiero divergente-convergente - Parte 1problem-solving - pensiero divergente-convergente - Parte 1
problem-solving - pensiero divergente-convergente - Parte 1
 
Corso ASPP/RSPP mod. A3 - Inviduazione e valutazione dei rischi
Corso ASPP/RSPP mod. A3 - Inviduazione e valutazione dei rischiCorso ASPP/RSPP mod. A3 - Inviduazione e valutazione dei rischi
Corso ASPP/RSPP mod. A3 - Inviduazione e valutazione dei rischi
 

Similar a Problem Solving

Approccio focalizzato sulle soluzioni nel coaching e nella consulenza aziendale
Approccio focalizzato sulle soluzioni nel coaching e nella consulenza aziendaleApproccio focalizzato sulle soluzioni nel coaching e nella consulenza aziendale
Approccio focalizzato sulle soluzioni nel coaching e nella consulenza aziendaleFabrizio Pieroni
 
Definire il problema nei termini più concreti e descrittivi possibili
Definire il problema nei termini più concreti e descrittivi possibiliDefinire il problema nei termini più concreti e descrittivi possibili
Definire il problema nei termini più concreti e descrittivi possibiliimartini
 
La scheda del libro consigliato da Marco Matera: "Punta alla soluzione" di M...
 La scheda del libro consigliato da Marco Matera: "Punta alla soluzione" di M... La scheda del libro consigliato da Marco Matera: "Punta alla soluzione" di M...
La scheda del libro consigliato da Marco Matera: "Punta alla soluzione" di M...Complexity Institute
 
Discover Facilitation: gestire le riunioni in modo efficace
Discover Facilitation: gestire le riunioni in modo efficaceDiscover Facilitation: gestire le riunioni in modo efficace
Discover Facilitation: gestire le riunioni in modo efficaceThinkOpen
 
coding_competenze_computazionali.pdf
coding_competenze_computazionali.pdfcoding_competenze_computazionali.pdf
coding_competenze_computazionali.pdfLaura Antichi
 
Christian Dama, The time management
Christian Dama, The time managementChristian Dama, The time management
Christian Dama, The time managementChristian Dama
 
2 lavorare per_progetti_dr. salvatore barresi_[seminario]
2 lavorare per_progetti_dr. salvatore barresi_[seminario]2 lavorare per_progetti_dr. salvatore barresi_[seminario]
2 lavorare per_progetti_dr. salvatore barresi_[seminario]Salvatore [Sasa'] Barresi
 
Il brainstorming di Walt Disney
Il brainstorming di Walt Disney Il brainstorming di Walt Disney
Il brainstorming di Walt Disney Massimo Del Monte
 
"Applicare il Problem Solving" Flyer pieghevole
"Applicare il Problem Solving" Flyer pieghevole"Applicare il Problem Solving" Flyer pieghevole
"Applicare il Problem Solving" Flyer pieghevoledrgivan
 
Sprint - acceleratori del processo di sviluppo
Sprint - acceleratori del processo di sviluppoSprint - acceleratori del processo di sviluppo
Sprint - acceleratori del processo di sviluppomaurizio_scabbia
 
Smau Torino 2016 - Fabrizio Valeri
Smau Torino 2016 - Fabrizio ValeriSmau Torino 2016 - Fabrizio Valeri
Smau Torino 2016 - Fabrizio ValeriSMAU
 
Lean Parte 7 Rispetto Per Le Persone
Lean Parte 7   Rispetto Per Le PersoneLean Parte 7   Rispetto Per Le Persone
Lean Parte 7 Rispetto Per Le PersoneVincenzo Patruno
 
Growth Marketing & Performance ROI - Webinar gratuito
Growth Marketing & Performance ROI - Webinar gratuitoGrowth Marketing & Performance ROI - Webinar gratuito
Growth Marketing & Performance ROI - Webinar gratuitoNinja Academy
 
Introduzione alle metodologie e pratiche Agili ... ma l'agile c'entra qualcos...
Introduzione alle metodologie e pratiche Agili ... ma l'agile c'entra qualcos...Introduzione alle metodologie e pratiche Agili ... ma l'agile c'entra qualcos...
Introduzione alle metodologie e pratiche Agili ... ma l'agile c'entra qualcos...Roberto Bettazzoni
 
Agile Lean Conference 2017 - Leadership e facilitazione
Agile Lean Conference 2017 - Leadership e facilitazioneAgile Lean Conference 2017 - Leadership e facilitazione
Agile Lean Conference 2017 - Leadership e facilitazioneSimone Onofri
 

Similar a Problem Solving (20)

Approccio focalizzato sulle soluzioni nel coaching e nella consulenza aziendale
Approccio focalizzato sulle soluzioni nel coaching e nella consulenza aziendaleApproccio focalizzato sulle soluzioni nel coaching e nella consulenza aziendale
Approccio focalizzato sulle soluzioni nel coaching e nella consulenza aziendale
 
Definire il problema nei termini più concreti e descrittivi possibili
Definire il problema nei termini più concreti e descrittivi possibiliDefinire il problema nei termini più concreti e descrittivi possibili
Definire il problema nei termini più concreti e descrittivi possibili
 
Lean parte 3
Lean  parte 3Lean  parte 3
Lean parte 3
 
La scheda del libro consigliato da Marco Matera: "Punta alla soluzione" di M...
 La scheda del libro consigliato da Marco Matera: "Punta alla soluzione" di M... La scheda del libro consigliato da Marco Matera: "Punta alla soluzione" di M...
La scheda del libro consigliato da Marco Matera: "Punta alla soluzione" di M...
 
Fare
FareFare
Fare
 
Discover Facilitation: gestire le riunioni in modo efficace
Discover Facilitation: gestire le riunioni in modo efficaceDiscover Facilitation: gestire le riunioni in modo efficace
Discover Facilitation: gestire le riunioni in modo efficace
 
coding_competenze_computazionali.pdf
coding_competenze_computazionali.pdfcoding_competenze_computazionali.pdf
coding_competenze_computazionali.pdf
 
Christian Dama, The time management
Christian Dama, The time managementChristian Dama, The time management
Christian Dama, The time management
 
2 lavorare per_progetti_dr. salvatore barresi_[seminario]
2 lavorare per_progetti_dr. salvatore barresi_[seminario]2 lavorare per_progetti_dr. salvatore barresi_[seminario]
2 lavorare per_progetti_dr. salvatore barresi_[seminario]
 
Il brainstorming di Walt Disney
Il brainstorming di Walt Disney Il brainstorming di Walt Disney
Il brainstorming di Walt Disney
 
"Applicare il Problem Solving" Flyer pieghevole
"Applicare il Problem Solving" Flyer pieghevole"Applicare il Problem Solving" Flyer pieghevole
"Applicare il Problem Solving" Flyer pieghevole
 
Sprint - acceleratori del processo di sviluppo
Sprint - acceleratori del processo di sviluppoSprint - acceleratori del processo di sviluppo
Sprint - acceleratori del processo di sviluppo
 
Smau Torino 2016 - Fabrizio Valeri
Smau Torino 2016 - Fabrizio ValeriSmau Torino 2016 - Fabrizio Valeri
Smau Torino 2016 - Fabrizio Valeri
 
Pensare Agile
Pensare AgilePensare Agile
Pensare Agile
 
Ldb Go2Europe!_Ceschina 01
Ldb Go2Europe!_Ceschina 01Ldb Go2Europe!_Ceschina 01
Ldb Go2Europe!_Ceschina 01
 
Lean Parte 7 Rispetto Per Le Persone
Lean Parte 7   Rispetto Per Le PersoneLean Parte 7   Rispetto Per Le Persone
Lean Parte 7 Rispetto Per Le Persone
 
Growth Marketing & Performance ROI - Webinar gratuito
Growth Marketing & Performance ROI - Webinar gratuitoGrowth Marketing & Performance ROI - Webinar gratuito
Growth Marketing & Performance ROI - Webinar gratuito
 
Introduzione alle metodologie e pratiche Agili ... ma l'agile c'entra qualcos...
Introduzione alle metodologie e pratiche Agili ... ma l'agile c'entra qualcos...Introduzione alle metodologie e pratiche Agili ... ma l'agile c'entra qualcos...
Introduzione alle metodologie e pratiche Agili ... ma l'agile c'entra qualcos...
 
Problemi matematici[1]
Problemi matematici[1]Problemi matematici[1]
Problemi matematici[1]
 
Agile Lean Conference 2017 - Leadership e facilitazione
Agile Lean Conference 2017 - Leadership e facilitazioneAgile Lean Conference 2017 - Leadership e facilitazione
Agile Lean Conference 2017 - Leadership e facilitazione
 

Más de Luca Naso

Workshop introduttivo al Machine Learning in Python
Workshop introduttivo al Machine Learning in PythonWorkshop introduttivo al Machine Learning in Python
Workshop introduttivo al Machine Learning in PythonLuca Naso
 
Machine Learning Workshop - EPS YM CT - parte 1 (8 Maggio 2021) Edit Details
Machine Learning Workshop - EPS YM CT - parte 1 (8 Maggio 2021) Edit DetailsMachine Learning Workshop - EPS YM CT - parte 1 (8 Maggio 2021) Edit Details
Machine Learning Workshop - EPS YM CT - parte 1 (8 Maggio 2021) Edit DetailsLuca Naso
 
Machine learning: Definizione e Tipologie
Machine learning: Definizione e TipologieMachine learning: Definizione e Tipologie
Machine learning: Definizione e TipologieLuca Naso
 
Big Data - Breve panoramica
Big Data - Breve panoramicaBig Data - Breve panoramica
Big Data - Breve panoramicaLuca Naso
 
Machine Learning - Breve panoramica
Machine Learning - Breve panoramicaMachine Learning - Breve panoramica
Machine Learning - Breve panoramicaLuca Naso
 
Cos'è il Machine Learning?
Cos'è il Machine Learning?Cos'è il Machine Learning?
Cos'è il Machine Learning?Luca Naso
 
Introduzione sul Machine Learning
Introduzione sul Machine LearningIntroduzione sul Machine Learning
Introduzione sul Machine LearningLuca Naso
 
The What, Why and How of Big Data
The What, Why and How of Big DataThe What, Why and How of Big Data
The What, Why and How of Big DataLuca Naso
 
How to plan a successful Digital Signage Campaign in 5 steps
How to plan a successful Digital Signage Campaign in 5 stepsHow to plan a successful Digital Signage Campaign in 5 steps
How to plan a successful Digital Signage Campaign in 5 stepsLuca Naso
 

Más de Luca Naso (9)

Workshop introduttivo al Machine Learning in Python
Workshop introduttivo al Machine Learning in PythonWorkshop introduttivo al Machine Learning in Python
Workshop introduttivo al Machine Learning in Python
 
Machine Learning Workshop - EPS YM CT - parte 1 (8 Maggio 2021) Edit Details
Machine Learning Workshop - EPS YM CT - parte 1 (8 Maggio 2021) Edit DetailsMachine Learning Workshop - EPS YM CT - parte 1 (8 Maggio 2021) Edit Details
Machine Learning Workshop - EPS YM CT - parte 1 (8 Maggio 2021) Edit Details
 
Machine learning: Definizione e Tipologie
Machine learning: Definizione e TipologieMachine learning: Definizione e Tipologie
Machine learning: Definizione e Tipologie
 
Big Data - Breve panoramica
Big Data - Breve panoramicaBig Data - Breve panoramica
Big Data - Breve panoramica
 
Machine Learning - Breve panoramica
Machine Learning - Breve panoramicaMachine Learning - Breve panoramica
Machine Learning - Breve panoramica
 
Cos'è il Machine Learning?
Cos'è il Machine Learning?Cos'è il Machine Learning?
Cos'è il Machine Learning?
 
Introduzione sul Machine Learning
Introduzione sul Machine LearningIntroduzione sul Machine Learning
Introduzione sul Machine Learning
 
The What, Why and How of Big Data
The What, Why and How of Big DataThe What, Why and How of Big Data
The What, Why and How of Big Data
 
How to plan a successful Digital Signage Campaign in 5 steps
How to plan a successful Digital Signage Campaign in 5 stepsHow to plan a successful Digital Signage Campaign in 5 steps
How to plan a successful Digital Signage Campaign in 5 steps
 

Problem Solving

  • 1. PROBLEM SOLVING MAD2 Luca Naso - Catania, 15 Gennaio 2015
  • 2. AGENDA 1. Problem solving? 2. Strategie e strumenti [break] 3. Un esempio concreto
  • 4. A LIFELONG CHALLENGE L’arte di risolvere problemi è la sfida di tutta una vita • Di certo non basteranno 4 ore di lezione ad apprenderla … e neanche 400 • Necessita di tanta esperienza
  • 5. A LIFELONG CHALLENGE Scopo della lezione di oggi è di indicarvi la via per massimizzare la vostra esperienza
  • 6. Insieme di tecniche utilizzate per risolvere problemi non banali Che tipo di problemi? • problemi di natura tecnica in ambito lavorativo, riguardanti ad esempio i processi aziendali. • problemi di natura relazionale e/o emozionale, in ambito sia lavorativo che non. COSA E’ IL PROBLEM SOLVING?
  • 7. I “PROBLEMI” I “problemi” per i quali si cerca una soluzione sono di solito complessi, riguardano più eventi e coinvolgono diverse persone.
  • 8. I “PROBLEMI” Spesso la soluzione si ottiene lavorando di gruppo.
  • 9. COMPETENZA TRASVERSALE Il problem solving è una competenza trasversale che si applica ai più disparati ambiti (così come il Sviluppa/richiede capacità di giudizio e di analisi. pensiero critico, la creatività e la gestione costruttiva dei sentimenti).
  • 10. STRATEGIE STANDARD Con il tempo sono state sviluppate delle strategie codificate per la risoluzione dei problemi. Si tratta di una insieme di istruzioni da seguire per arrivare alla soluzione del problema.
  • 11. PERCHÉ SVILUPPARE DELLE STRATEGIE STANDARD? L’obiettivo è risolvere i problemi… in maniera: 1. Efficace (non vogliamo che il problema torni) 2. Efficiente (vogliamo farlo ad un costo minimo) Una strategia standard è la raccolta di tante esperienze perfezionate nel tempo.
  • 12. BENEFICI Avere delle precise tecniche di problem solving consente alle aziende di: • ottimizzare i loro processi (essere più competitive) • rispondere alle emergenze in tempi più brevi e con soluzioni più efficaci di quanto non si farebbe lasciando tutto all’iniziativa dei singoli (e del momento).
  • 14. ATTIVI E SUBITO • ATTIVI: Non è l’applicazione teorica, ma richiede un ruolo intellettualmente attivo, che porta alla creazione di qualcosa. • SUBITO: Non è la pianificazione di una risoluzione futura, ma prevede che sia già in atto.
  • 15. COME FUNZIONA Esistono varie tecniche, solitamente divise in fasi e seguono lo schema tipico dell’approccio scientifico. Tutte le tecniche passano attraverso tre macro-aree: 1. identificazione e definizione del problema 2. suddivisione del problema nelle sue parti critiche 3. individuazione ed applicazione di una soluzione
  • 16. COME NON FUNZIONA Quando ci si trova di fronte alla necessità di risolvere un problema è facile avere alcuni atteggiamenti estremamente controproducenti. Vediamone due.
  • 18. SALTARE ALLE CONCLUSIONI 1. Saltare direttamente alla conclusione, perché si pensa di aver intuito una soluzione COME NON FUNZIONA
  • 20. ACCUSARE 2. Andare alla ricerca di un colpevole (chi ha creato il problema) e fare accuse. COME NON FUNZIONA
  • 21. ACCUSARE COME NON FUNZIONA 2. Andare alla ricerca di un colpevole (chi ha creato il problema) e fare accuse. Tutti iniziano ad accusare
  • 22. ACCUSARE COME NON FUNZIONA 2. Andare alla ricerca di un colpevole (chi ha creato il problema) e fare accuse. Poi si risponde alle accuse
  • 23. ACCUSARE COME NON FUNZIONA 2. Andare alla ricerca di un colpevole (chi ha creato il problema) e fare accuse. Qualcuno porterà il peso della colpa
  • 24. ACCUSARE COME NON FUNZIONA 2. Andare alla ricerca di un colpevole (chi ha creato il problema) e fare accuse. A meno che non facciate una faccina così sarà difficile lavorare bene
  • 25. Questi atteggiamenti si traducono quasi sempre in una perdita di tempo e risorse. Spesso ci si ritrova al punto di partenza oppure è necessario fare più volte lo stesso lavoro. E’ anche al fine di evitare questi errori che sono state sviluppate delle strategie precise di problem solving. SPRECO DI RISORSE COME NON FUNZIONA
  • 26. REPETITA IUVANT In nessuna fase si va mai alla ricerca di colpevoli, ma sempre e solo di soluzioni. La ricerca della soluzione, non deve spingere a saltare o accorciare le fasi della strategia che si sta mettendo in atto. Altrimenti si perdono i benefici della strategia stessa, ad esempio si rischia di sottovalutare il problema, o la soluzione che si vuole applicare potrebbe non essere la migliore.
  • 28. PSS PROBLEM SOLVING STRATEGICO 1. Definire il problema 2. Concordare l’obiettivo 3. Individuare e valutare eventuali soluzioni già tentate (e fallite!) 4. Come si potrebbe peggiorare la situazione? 5. Quale sarebbe lo scenario una volta risolto il problema al 100%? 6. Piccoli passi a ritroso: partire dalla fine e procedere a ritroso fino alla partenza 7. Iterare: risolvere un piccolo problema alla volta, e se serve modificare la direzione ad ogni passo. Usato in campo manageriale
  • 29. FARE - FOCALIZZARE ANALIZZARE RISOLVERE ESEGUIRE 1. Focalizzare: Capire e definire in dettaglio il problema 2. Analizzare: Definizione degli elementi critici, Quantificare i fattori rilevanti con dei valori di riferimento 3. Risolvere: Generare delle possibili soluzioni, scegliere la soluzione da implementare, sviluppare un piano 4. Eseguire: Realizzare il piano, quantificare i progressi
  • 30. PDCA PLAN DO CHECK ACT 1. Pianifica: analizzare la situazione, cercare le cause, definire gli obiettivi, le soluzioni ed i compiti 2. Prova: applicare il piano su piccola scala 3. Verifica: verificare che le prove danno i risultati attesi. Se no, tornare al punto 1 4. Agisci: mettere in produzione il piano che ha superato la verifica Considerare l’opzione di inserire una verifica su scala intermedia (tra il punto 3 e 4).
  • 31. DMAIC – DEFINE MEASURE ANALYZE IMPROVE CONTROL
  • 32. DMAIC – DEFINE MEASURE ANALYZE IMPROVE CONTROL 1. Definire i processi critici, gli obiettivi da raggiungere, le risorse necessarie. Realizzare una roadmap
  • 33. DMAIC – DEFINE MEASURE ANALYZE IMPROVE CONTROL 2. Elaborare un piano per misurare l’efficacia dei processi, dopo averli suddivisi in piccole parti 1. Definire i processi critici, gli obiettivi da raggiungere, le risorse necessarie. Realizzare una roadmap
  • 34. DMAIC – DEFINE MEASURE ANALYZE IMPROVE CONTROL 1. Definire i processi critici, gli obiettivi da raggiungere, le risorse necessarie. Realizzare una roadmap 2. Elaborare un piano per misurare l’efficacia dei processi, dopo averli suddivisi in piccole parti 3. Analisi dei dati raccolti al punto 2, per trovare relazioni tra le variabili, ed identificare punti sui quali intervenire
  • 35. DMAIC – DEFINE MEASURE ANALYZE IMPROVE CONTROL 4. Sulla base dell’analisi al punto 3 creare ed implementare una soluzione che possa migliorare i processi 1. Definire i processi critici, gli obiettivi da raggiungere, le risorse necessarie. Realizzare una roadmap 2. Elaborare un piano per misurare l’efficacia dei processi, dopo averli suddivisi in piccole parti 3. Analisi dei dati raccolti al punto 2, per trovare relazioni tra le variabili, ed identificare punti sui quali intervenire
  • 36. DMAIC – DEFINE MEASURE ANALYZE IMPROVE CONTROL 5. Dopo aver ottimizzato il processo creare un sistema di controllo per mantenere il livello di qualità raggiunto 1. Definire i processi critici, gli obiettivi da raggiungere, le risorse necessarie. Realizzare una roadmap 4. Sulla base dell’analisi al punto 3 creare ed implementare una soluzione che possa migliorare i processi 2. Elaborare un piano per misurare l’efficacia dei processi, dopo averli suddivisi in piccole parti 3. Analisi dei dati raccolti al punto 2, per trovare relazioni tra le variabili, ed identificare punti sui quali intervenire
  • 38. DIAGRAMMI • Diagrammi Causa- Effetto • Diagrammi di Flusso • Checklists • Diagramma di Pareto • Diagrammi di controllo • Scatter diagrams
  • 39. DIAGRAMMI DI FLUSSO • Visualizzare il processo • Trovare i difetti • Capire le relazioni
  • 40. ANALISI DI PARETO Solo pochi fattori vitali (20%) sono responsabili della gran parte dei problemi (80%)
  • 41. 5W2H Redigere un documento per individuare le principali cause del problema. Il documento viene creato rispondendo a 7 domande.
  • 42. 5W2H 5W: Who? What? Where? When? Why? 2H: How? How many?
  • 43. 5W2H+
  • 44. 5W2H+
  • 45. BRAINSTORMING Riunione dove si dà libero spazio alle idee
  • 46. BRAINSTORMING Nessuna idea può essere rifiutata o respinta. Il focus non è sulla critica ma sull’estensione delle idee. Senza timore di essere giudicato ciascuno si esprime più liberamente e può diventare fonte di ispirazione per gli altri (associazione delle idee).
  • 47. 1. Ciascuno scrive un’idea, il gruppo vota ogni idea, le prime vengono discusse (in sottogruppi). 2. Ciascuno scrive un’idea, la passa alla persona accanto, aggiunge qualcosa all’idea che ha ricevuto. 3. Strumenti informatici possono ottimizzare i tempi ed assicurare l’anonimato. COME FUNZIONA - 3 ESEMPI BRAINSTORMING
  • 48. DIAGRAMMA CAUSA-EFFETTO Diagramma a lisca di pesce per descrivere un processo/fenomeno/problema. La testa del pesce è il problema, a seguire le varie cause. Ogni causa può avere altri rami del diagramma. Tutte le cause vanno suddivise gerarchicamente.
  • 50. ANALISI DI ISHIKAWA DIAGRAMMA CAUSA-EFFETTO Per identificare tutte le cause si utilizza il brainstorming. Il diagramma causa-effetto a lisca di pesce viene anche detto “diagramma di Ishikawa” perché è parte integrante dell’analisi di Ishikawa, in cui, oltre alle cause, va definita anche l’azione correttiva più opportuna.
  • 51. UN ESEMPIO CONCRETO[2] PROBLEM SOLVING FOR DEVELOPERS
  • 52. IL PROBLEMA Data la propria data di nascita e la data corrente, calcolare la propria età in giorni. Includere gli anni bisestili. Assumere che la data di nascita e la data corrente siano date valide e che non ci siano viaggi nel tempo. Esempio: se la data di nascita è 1 gennaio 1950 e la data di oggi è 2 gennaio 1950, l’età è di 1 giorno.
  • 53. 1. LA PRIMA COSA DA FARE Come iniziereste voi? a. Inizio a scrivere le prime righe di codice b. Mi assicuro di aver ben capito il problema c. Penso ad un algoritmo che possa risolvere il problema Risposta giusta: b
  • 54. 1. LA PRIMA COSA DA FARE Uno dei modi per capire il problema è quello di identificare input ed output Input: tutti quei valori che possono essere accettati in ingresso Output: tutti quei valori che vengono richiesti perché il problema si consideri risolto Logicamente la soluzione al problema sarà una procedura che a partire da input validi restituisca degli output corretti
  • 55. 1. LA PRIMA COSA DA FARE Nel nostro caso: Input = una coppia di date (infinite) Output = un numero intero, la distanza in giorni tra le due date (1 solo) Possiamo accettare tutte le coppie di date come input? No, la prima data deve essere antecedente la seconda data Defensive Programming: all’interno del nostro codice verifichiamo che gli input sono corretti, se non lo sono interrompiamo l’esecuzione e restituiamo un messaggio di errore chiaro
  • 56. 2. COME RISOLVERE IL PROBLEMA? Siamo adesso pronti a risolvere il problema. Come procediamo? a. Iniziamo a scrivere il codice b. Studiamo alcuni esempi (a mano) c. Cercare una soluzione sul web Risposta giusta: b, e anche c
  • 57. 2. COME RISOLVERE IL PROBLEMA? E’ importante capire la relazione che c’è tra gli input e gli output. A prima vista non si colgono tutti i casi Scegliere alcuni input, e calcolare a mano l’output corretto. Ad esempio: due date uguali, output 0; due date una dopo l’altra, output 1; due date a distanza di 1 anno, output 365; due date errate, output err msg; …
  • 58. 3. E’ ARRIVATO IL MOMENTO DI SCRIVERE CODICE? La nostra conoscenza e padronanza del problema aumenta. Siamo adesso pronti a scrivere il codice? a. Si b. No, dobbiamo scegliere il linguaggio adatto c. No, dobbiamo cercare una soluzione Risposta giusta: c
  • 59. 3. E’ ARRIVATO IL MOMENTO DI SCRIVERE CODICE? Consideriamo come un umano risolverebbe il problema Ad esempio, input: da 2013,1,24 a 2013,6,29 1. prendere un calendario 2. cercare la data di inizio 3. segnare i giorni che restano nel mese di partenza (7) 4. segnare i giorni dei mesi completi (feb 28, mar 31, apr 30, mag 31) 5. segnare i giorni parziali dell’ultimo mese (29) 6. sommare tutti i valori segnati (—>156)
  • 60. 3. E’ ARRIVATO IL MOMENTO DI SCRIVERE CODICE? Traduciamo in pseudo-codice questa soluzione: Usiamo indice 1 per la prima data, e indice 2 per la seconda data days = # days left in month1 month1 += 1 while month1 < month2: days += # days in month1 month1 += 1 days += day2
  • 61. 4. POSSIAMO IMPLEMENTARE LA SOLUZIONE? Adesso abbiamo una soluzione che funziona, possiamo implementarla in un codice? a. Si, funziona alla grande b. Si, non è perfetta ma è un buon inizio c. No, prima dobbiamo analizzare altri casi d. No, dobbiamo trovare una soluzione più semplice Risposta giusta: d
  • 62. 4. POSSIAMO IMPLEMENTARE LA SOLUZIONE? In questa procedura ci sono troppi casi non gestiti: 1. Le due date sono in anni diversi 2. Le due date sono nello stesso mese 3. La seconda data è in un mese precedente della prima data, ma in un anno successivo 4. Non c’è traccia degli anni bisestili
  • 63. 4. POSSIAMO IMPLEMENTARE LA SOLUZIONE? ATTENZIONE di sicuro questa procedura può essere modificata in modo tale da gestire tutti i casi citati Questo però richiederebbe la definizione di molti casi speciali i casi speciali sono l’anticamera preferita dei bug!
  • 64. 4. POSSIAMO IMPLEMENTARE LA SOLUZIONE? Come trovare una soluzione più semplice? Gli umani odiano fare compiti ripetitivi, quindi cercano di ridurre le azioni. I computer invece no: è meglio fare tante azioni semplici che poche complesse (si riduce la probabilità di sbagliare, ed è più facile da capire) Allora perché bisogna passare da questa fase? Perché ci aiuta a capire meglio il problema, e ad individuare le criticità
  • 65. 4. POSSIAMO IMPLEMENTARE LA SOLUZIONE? Procedura semplice e meccanica (e noiosa): 1. prendere un calendario 2. cercare la data di inizio 3. contare i giorni uno per uno fino alla data finale (156) Pseudo-codice: days = 0 while date1 before date2: days +=1 date1 advance to next day
  • 66. 5. CON COSA INIZIAMO? Adesso siamo pronti a scrivere il codice. Cosa scriviamo per prima? a. daysBetweenDates b. nextDay c. isLeapYear d. daysInMonth Risposta giusta: b, anche c
  • 67. 5. CON COSA INIZIAMO? Input: data Output: la data del giorno successivo Non implementiamo la versione completa e definitiva, ma solo una prima versione semplificata, dove assumiamo che ogni mese abbia 30 giorni Dopo averla scritta la testiamo su alcuni casi d’esempio
  • 68. BUONE NOTIZIE: STIAMO FACENDO PROGRESSI! FARE PROGRESSI = SCRIVERE PICCOLI PEZZI DI CODICE, TESTARLI, E SAPERE COSA FANNO.
  • 69. 6. COSA SCRIVIAMO DOPO? Abbiamo scritto la prima procedura, qual è il prossimo passo? a. Perfezioniamo la procedura appena scritta, nextDay b. Realizziamo una nuova procedura, daysBetweenDates, cioè la procedura generale Risposta giusta: b
  • 70. 6. COSA SCRIVIAMO DOPO? L’approccio giusto e’ quello di fare tanti piccoli passi in una certa direzione, anche se non sono tutti perfetti. Questo serve per capire se siamo nella direzione giusta, e per scrivere codice in maniera efficiente (= evitare di scrivere cose che non servono, o di scriverle male).
  • 71. 6. COSA SCRIVIAMO DOPO? daysBetweenDates ci permetterà di avere una stima dell’output finale. Non avremo il valore preciso, pero’ ci aiuta a definire i punti cruciali dell’intera soluzione. In questo caso ci serve una procedura intermedia, dateIsBefore(date1,date2), per sapere se una data è prima di un’altra.
  • 72. 7. LA PARTE “DIFFICILE” Adesso dobbiamo gestire le parti problematiche: i mesi non sono tutti di 30 giorni, ed alcuni anni sono bisestili. La strategia che abbiamo seguito ci ha permesso di fare notevoli progressi, affrontando solo task facili. Abbiamo isolato gli elementi più difficili senza pero’ creare casi speciali.
  • 73. 7. LA PARTE “DIFFICILE” Per avere la soluzione corretta però prima o poi va affrontata anche la parte difficile. La cosa importante è affrontare la parte difficile solo quando si è sicuri che abbia senso farlo, e solo quando si hanno le idee più chiare su come farlo (nell’economia dell’intero codice).
  • 74. 7. LA PARTE “DIFFICILE” Come concludere in 3 fasi (8 passi): 1. (1) creare una “dummy” daysInMonth, che restituisce sempre 30 (2) modificare nextDay per usare daysInMonth (3) test (stessi risultati di prima). 2. (4) modificare daysInMonth, in modo che sia sempre corretta, tranne che per gli anni bisestili (5) test (i risultati sono corretti per tutte le date che non contengono anni bisestili). 3. (6) creare isLeapYear (7) test isLeapYear (8) finalizzare l’intero codice e testare.
  • 75. CORE DELLA STRATEGIA DI CODING Core: Scrivere piccoli pezzi di codice e testarli mano a mano che si scrivono. Altrimenti: • Non solo il codice finale avrà molti più bug, ma sarà anche difficile trovarli • L’azione di debug sarà complessa ed anche il mantenimento del codice sarà più lungo e difficoltoso
  • 76. GUIDA AL PROBLEM SOLVING: 5 PASSI 2 NOTE Nota 1: don’t panic! 1. Quali sono gli input? 2. Quali sono gli output? 3. Analizzare alcuni esempi a mano 4. Identificare una soluzione meccanica semplice 5. Sviluppare il codice in modo incrementale, testando ogni passo Nota 2: Non ottimizzare il codice prematuramente
  • 77. AGENDA 1. Problem solving? Cos’è, come funziona e come NON funziona 2. Strategie e strumenti Panoramica sulle tecniche ed i tools più interessanti 3. Un esempio concreto Codice per calcolare la distanza in giorni
  • 78. ADESSO TOCCA A VOI Per gli sviluppatori: provate a risolvere sul serio il problema della data. Per i designer: provate a trovare un vostro esempio concreto simile a questo. Quando vi trovate di fronte ad un problema, d’ora in poi razionalizzate la vostra reazione.
  • 79. REFERENCES [1] wikipedia: it.wikipedia.org/wiki/Problem_solving [2] udacity course: intro to computer science: www.udacity.com/course/cs101 Contacts: email: luca.naso@gmail.com Linkedin: Luca Naso it.linkedin.com/in/lucanaso