1. Cosa e' il problem solving? Come funziona e come NON funziona.
2. Panoramica delle strategie (PSS, FARE, PDCA, DMAIC) e degli strumenti piu' comuni (Diagrammi di flusso, Analisi di Pareto, Diagramma causa-effetto, Brainstorming, 5w2h).
3. Un esempio concreto, guida al problem solving per developers.
Il corso di LEN Formazione rivolto a Team Leader, capi progetto e imprenditori impegnati nella gestione dei collaboratori che desiderano introdurre una nuova metodologia di gestione delle problematiche lavorative aumentando la creatività e la proattività del gruppo di lavoro.
Tecniche di comunicazione efficace: saper comunicare in modo adeguato ci consente di migliorare le relazioni interpersonali e di ottenere risultati di successo.
Imparare le strutture base della comunicazione efficace e dell'ascolto attivo per capire e conoscere meglio se stessi e gli altri.
• Principi base della comunicazione:
• Modello di Jakobson
• Assiomi della comunicazione
• Imparare a capire e a conoscere se stessi e gli interlocutori per facilitare la comunicazione:
• Riconoscere i principali sistemi rappresentazionali (VAKog) con cui le persone percepiscono il mondo esterno
• La comunicazione paraverbale: saper gestire la respirazione, il tono, il ritmo, il volume, le pause
• La comunicazione non verbale: la postura che favorisce la
comunicazione
• La lettura dei segnali oculari d'accesso (LEM)
• Il rapport e le modalità che facilitano una buona comunicazione:
• Il ricalco, la calibrazione e la guida
Il corso di LEN Formazione rivolto a Team Leader, capi progetto e imprenditori impegnati nella gestione dei collaboratori che desiderano introdurre una nuova metodologia di gestione delle problematiche lavorative aumentando la creatività e la proattività del gruppo di lavoro.
Tecniche di comunicazione efficace: saper comunicare in modo adeguato ci consente di migliorare le relazioni interpersonali e di ottenere risultati di successo.
Imparare le strutture base della comunicazione efficace e dell'ascolto attivo per capire e conoscere meglio se stessi e gli altri.
• Principi base della comunicazione:
• Modello di Jakobson
• Assiomi della comunicazione
• Imparare a capire e a conoscere se stessi e gli interlocutori per facilitare la comunicazione:
• Riconoscere i principali sistemi rappresentazionali (VAKog) con cui le persone percepiscono il mondo esterno
• La comunicazione paraverbale: saper gestire la respirazione, il tono, il ritmo, il volume, le pause
• La comunicazione non verbale: la postura che favorisce la
comunicazione
• La lettura dei segnali oculari d'accesso (LEM)
• Il rapport e le modalità che facilitano una buona comunicazione:
• Il ricalco, la calibrazione e la guida
Una riflessione sulla gestione del conflitto, nata durante un corso di gestione e tecniche di vendita. Attuale, vista la conflittualità oggi in atto. Aggiornata a Gennaio 2017
Gestire il proprio tempo e quello dei propri collaboratori è una necessità ed una opportunità che valorizza il tempo a nostra disposizione e ne migliora la qualità
Comunicazione efficace: principi e tecniche di basePLS Coaching
Come possiamo comunicare più efficacemente? I presupposti di base per capire, essere capiti e ottenere cosa desideriamo attraverso la comunicazione. Dall'ascolto alla spontaneità: 5 elementi chiave per diventare comunicatori migliori.
Problem solving creatività pensiero laterale_Coach Pasquale adamoPasquale Adamo
Il PROBLEM SOLVING e la capacità di risolvere i problemi in modo creativo è una di quelle competenze trasversali (soft skills) più richieste nel mondo del lavoro. La maggior parte degli annunci di lavoro riportano la voce: "è richiesta ottima capacità di problem solving" e la maggior parte dei selezionatori, tende a verificare questa abilità nei candidati da selezionare. Un Problem Solver è sicuramente una risorsa con un valore aggiunto.
Realizziamo percorsi di team building con la metodologia del Coaching Creativo.
I nostri interventi si basano sull’integrazione tra attività ad alto potenziale creativo, durante le quali viene vissuta l’esperienza metaforica del team e momenti di lavoro che puntano a massimizzare l’efficacia realizzando obiettivi concreti.
The wolf method - dall'epic fail al problem solving creativoAlviani ArtSpace
Ogni problema può diventare un'opportunità se sai come trasformarlo a tuo vantaggio. Passando da McGyver al Signor Wolf l’intervento si propone di rispondere a una delle sfide più impegnative poste dalla programmazione così come dalla vita: la necessità di acquisire insieme ai linguaggi anche una nuova mentalità orientata alla risoluzione dei problemi. Il Problem Solving può aiutare a trovare soluzioni non convenzionali alle difficoltà quotidiane, purché si conoscano le strategie logiche che non sono frutto di un improvviso atto di creatività ma sono basate su decodificate metodologie.
Una riflessione sulla gestione del conflitto, nata durante un corso di gestione e tecniche di vendita. Attuale, vista la conflittualità oggi in atto. Aggiornata a Gennaio 2017
Gestire il proprio tempo e quello dei propri collaboratori è una necessità ed una opportunità che valorizza il tempo a nostra disposizione e ne migliora la qualità
Comunicazione efficace: principi e tecniche di basePLS Coaching
Come possiamo comunicare più efficacemente? I presupposti di base per capire, essere capiti e ottenere cosa desideriamo attraverso la comunicazione. Dall'ascolto alla spontaneità: 5 elementi chiave per diventare comunicatori migliori.
Problem solving creatività pensiero laterale_Coach Pasquale adamoPasquale Adamo
Il PROBLEM SOLVING e la capacità di risolvere i problemi in modo creativo è una di quelle competenze trasversali (soft skills) più richieste nel mondo del lavoro. La maggior parte degli annunci di lavoro riportano la voce: "è richiesta ottima capacità di problem solving" e la maggior parte dei selezionatori, tende a verificare questa abilità nei candidati da selezionare. Un Problem Solver è sicuramente una risorsa con un valore aggiunto.
Realizziamo percorsi di team building con la metodologia del Coaching Creativo.
I nostri interventi si basano sull’integrazione tra attività ad alto potenziale creativo, durante le quali viene vissuta l’esperienza metaforica del team e momenti di lavoro che puntano a massimizzare l’efficacia realizzando obiettivi concreti.
The wolf method - dall'epic fail al problem solving creativoAlviani ArtSpace
Ogni problema può diventare un'opportunità se sai come trasformarlo a tuo vantaggio. Passando da McGyver al Signor Wolf l’intervento si propone di rispondere a una delle sfide più impegnative poste dalla programmazione così come dalla vita: la necessità di acquisire insieme ai linguaggi anche una nuova mentalità orientata alla risoluzione dei problemi. Il Problem Solving può aiutare a trovare soluzioni non convenzionali alle difficoltà quotidiane, purché si conoscano le strategie logiche che non sono frutto di un improvviso atto di creatività ma sono basate su decodificate metodologie.
Aps risk management e problem solving sono due cose diversedrgivan
Ci hanno sempre detto che Risk Management e Problem Solving fossero cose differenti. Non credo sia vero, ci sono molte, anzi, moltissime evidenze che si sbagliavano...
Applicare il Problem Solving. Metodo, Applicazioni, Root Causes, Contromisure...drgivan
Applicare il Problem Solving, il libro che illustra la metodologia APS sviluppata in anni di docenze ed esperienze sul campo in contesti organizzativi multinazionali e complessi. La presentazione del libro e dei corsi sul metodo APS ha lo scopo di fornire al lettore o all'allievo una panoramica dei contenuti e dei benefici che possono derivare dal diventare un problem solver, un leader che, forte della chiarezza delle proprie idee e della solidità del proprio metodo di lavoro, possa spiccare ed essere un punto di riferimento in tutte le organizzazioni o i team di lavoro.
Corso ASPP/RSPP mod. A3 - Inviduazione e valutazione dei rischiRoberto Rocchegiani
Corso per ASPP/RSPP ideato nel 2016 con elementi di novità dal punto di vista didattico. Parliamo della individuazione dei rischi e della loro valutazione, con particolare riferimento agli attuali panorami occupazionali.
Siamo agli inizi di una presumibile inversione di tendenza dal punto di vista produttivo, ma occorre rivalutare la sopravvenuta rischiosità derivante dalla differenza di genere e l'attuale impoverimento delle organizzazioni, dal punto di vista esperenziale e professionale.
Elementi che stanno determinando un forte incremento delle domande di malattia professionale ed un incremento degli infortuni mortali.
Approccio focalizzato sulle soluzioni nel coaching e nella consulenza aziendaleFabrizio Pieroni
L'approccio focalizzato sulle soluzioni (Solutions Focus) deriva dal lavoro di Steve De Shazer.
Risolvere un problema del cliente «non significa che il problema del cliente necessiti di un’attenta analisi, e non c’è bisogno di parlarne molto a lungo» , infatti «non c’è bisogno che le soluzioni siano direttamente connesse al problema che vogliono risolvere» (De Shazer)
La scheda del libro consigliato da Marco Matera: "Punta alla soluzione" di M...Complexity Institute
Scheda del libro consigliato da Marco Matera: "Punta alla soluzione" di Mark McKergow, Paul Jackson - al Complexity Literacy Meeting organizzato dal Complexity Institute ad Abano Terme dal 18 al 20 novembre 2016
Discover Facilitation: gestire le riunioni in modo efficaceThinkOpen
Davide Spagnuolo, Project Manager di ThinkOpen, vi dà appuntamento con il workshop Discover Facilitation: gestire le riunioni in modo efficace .
Davide ci porta alla scoperta dell’ambito Facilitation approfondendo i processi e le tecniche da applicare per gestire riunioni e incontri in modo produttivo, valorizzando i diversi punti di vista.
Nel corso del workshop viene analizzato il ruolo del facilitatore e delle best practice da utilizzare, basate sulla metodologia Process Iceberg®, una metodologia solida applicata all’interno di un’ampia gamma di organizzazioni e situazioni, sia nel settore pubblico che in quello privato.
La presentazione è dedicata a tutti coloro che vogliono approfondire le proprie conoscenze riguardo ai processi di Facilitation e alle sue applicazioni nei diversi ambiti.
Time Management as a critical skill for a Manager.Which are the most time consuming habits, how to change the ineffective behaviours. Theatre, Neurophisiology, Self-Management
Il termine imagineering è stato utilizzato per la prima volta da Walt Disney per illustrare il suo modo per produrre nuove idee, orientarle al futuro e sviluppare progetti.
Il processo creativo sviluppato da Disney comprende tre fasi:
il sognatore
il realista
il critico.
Una presentazione in formato "slides" su come pensare in modo "Agile". Documento elaborato nel 2020 da Domenico Aloisi. Tutti i diritti sui contenuti esposti appartengono ai rispettivi proprietari.
Growth Marketing & Performance ROI - Webinar gratuitoNinja Academy
Piattaforme e tecniche per aumentare le conversioni nel tuo mercato: http://ininja.it/2rb3qFO
Segui un'anteprima del webinar e iscriviti gratis per sbloccare il video completo!
Luca Barboni, docente del Corso in Growth Hacking, ti insegnerà a:
- Distinguere i canali di marketing che funzionano da quelli che sprecano le tue risorse
- Gestire i costi di acquisizione di nuovi clienti
- Individuare le metriche giuste per valutare l’andamento del tuo business
Introduzione alle metodologie e pratiche Agili ... ma l'agile c'entra qualcos...Roberto Bettazzoni
2006
Prima serata di una serie di Talk serali all' ERLUG (Emilia Romagna Linux User Group) Presentazione delle Metodologie Agili (confronto con la situazione esistente)
Presentazione delle Pratiche Agili
Esempio d'applicazione di tecniche Agili
Agile e OSS distribuito
eXtreme Programming
Workshop introduttivo al Machine Learning in PythonLuca Naso
Workshop introduttivo sul Machine Learning con Python, per European Physical Society Young Minds Catania.
Agenda:
1. Cosa e' il Machine Learning
2. Tassonomia del Machine Learning
3. Problemi di Regressione
4. Valutazione del modelli
5. Problemi di Classificazione (Cenni)
6. Problemi di Clustering (Cenni)
Per Python si utilizzano:
1. numpy
2. matplotlib
3. sklearn
Codice disponibile su: https://github.com/lucanaso/mlworkshop-eps
Machine Learning Workshop - EPS YM CT - parte 1 (8 Maggio 2021) Edit DetailsLuca Naso
Workshop introduttivo al Machine Learning con Python per European Physical Society Young Minds Catania.
Parte 1, tenutasi il'8 maggio 2021 (in remoto).
Temi trattati in questa parte:
1. Definizione di machine learning
2. Tassonomia di ML per apprendimento
3. Tassonomia di ML per output
4. Modelli di ML
5. Python: creazione di un dataset
Machine learning: Definizione e TipologieLuca Naso
Breve panoramica sul Machine Learning, focalizzata su due temi:
1. Definizione di Machine Learning
2. Tipologie di Machine Learning
La presentazione è pensata per un pubblico che non ha mai studiato il Machine Learning ed introduce dei temi di base con un linguaggio semplice e senza tecnicismi.
Breve panoramica sui Big Data, per chi ne ha solo sentito parlare ma non sa bene cosa siano.
La presentazione non è pensata per un pubblico tecnico e segue questa agenda:
1. definizione di Big Data delle 3 V
2. esempi di progetti realmente effettuati
3. tecnologie
4. riflessioni varie
Breve panoramica sul Machine Learning.
La presentazione non è pensata per un pubblico tecnico ed include informazioni di base su 3 argomenti (secondo me) fondamentali:
1. definizione di ML
2. tipologie di ML (per tipo di apprendimento e per tipo di output)
3. algoritmi
Una veduta d'insieme sul Machine Learning, in italiano e che utilizza un linguaggio semplice e adatto a chiunque. La presentazione non è pensata per un pubblico tecnico.
Include informazioni di base su 4 argomenti (secondo me) fondamentali:
1. definizione di Machine Learning e 3 esempi
2. classificazione dei problemi di Machine Learning (per tipo di apprendimento e per tipo di output)
3. algoritmi (panoramica)
4. errori (definizione e bias vs varianza)
Una veduta d'insieme sul Machine Learning, che utilizza un linguaggio semplice adatto a chiunque. La presentazione non e' pensato per un pubblico tecnico.
Include informazioni di base su 4 argomenti (secondo me) fondamentali:
1. definizione di ML
2. tipologie di ML (per tipo di apprendimento e per tipo di output)
3. algoritmi
4. errori
Lecture given at the University of Catania on December 2nd, 2014.
Start from Big Data definitions, continue with real life examples of successful Big Data Projects, go a little bit deeper with Sentiment Analysis, and conclude with a brief overview of Big Data tools and Big Data with Microsoft.
Summary:
1. What is Big Data? (includes the 5Vs of Big Data)
2. Big Data Examples (includes 6 Real Life Examples and comments on Privacy concerns)
3. How to Tackle a Big Data Problem (my 4 Universal Steps to follow)
4. Sentiment Analysis (what is sentiment analysis? Why do we care? A Technique and a plan)
5. Big Data tools (Hadoop, Hadoop Ecosystem, Hive, Pig, Sqoop, Oozie; Azure HDInsight, Excel Power Query, Power Pivot, Power View, Power Map)
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.
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.
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).
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
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.
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.