Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Capitolo Stime #225

Open
wants to merge 41 commits into
base: main
Choose a base branch
from
Open

Capitolo Stime #225

wants to merge 41 commits into from

Conversation

eppak
Copy link
Member

@eppak eppak commented Apr 22, 2024

Ecco la prima bozza del capitolo, attendo feedback

docs/it/stime.md Outdated Show resolved Hide resolved
docs/it/stime.md Outdated Show resolved Hide resolved
Copy link
Member

@BrianAtzori BrianAtzori left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ho lasciato qualche correzione per degli errorini ma per il resto per me ci siamo, un altro buon capitolo!
Forse chi ha piu esperienza puo aggiungere altro in termini di nozioni ma l'ho trovata un'ottima panoramica generale 🚀

@eppak
Copy link
Member Author

eppak commented Apr 23, 2024

Ho lasciato qualche correzione per degli errorini ma per il resto per me ci siamo, un altro buon capitolo! Forse chi ha piu esperienza puo aggiungere altro in termini di nozioni ma l'ho trovata un'ottima panoramica generale 🚀

Grazie @BrianAtzori !

docs/it/stime.md Outdated Show resolved Hide resolved
docs/it/stime.md Outdated Show resolved Hide resolved
docs/it/stime.md Outdated Show resolved Hide resolved
docs/it/stime.md Outdated Show resolved Hide resolved
docs/it/stime.md Outdated Show resolved Hide resolved
docs/it/stime.md Outdated Show resolved Hide resolved
Copy link
Member

@Cadienvan Cadienvan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mi piace molto, è un capitolo complesso quindi ho deciso di metterci bene la testa.

Ho segnato alcuni appunti, in generale mi torna, è sensato e scorre, ma mancano delle premesse e delle descrizioni di termini e significati che avrebbe senso indicare prima di far proseguire l'utente nella lettura.

Copy link
Member

@serenasensini serenasensini left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Capitolo estremamente importante perché non esiste materiale chiaro sul tema ed è allo stesso tempo qualcosa di molto controverso. Oltre ai commenti di @Cadienvan , mi sento di aggiungere che avete più esempi pratici lo renderebbe più immediato. Come sempre, ottimo lavoro!

docs/it/stime.md Outdated Show resolved Hide resolved
docs/it/stime.md Outdated Show resolved Hide resolved
docs/it/stime.md Outdated Show resolved Hide resolved
docs/it/stime.md Outdated Show resolved Hide resolved
docs/it/stime.md Outdated Show resolved Hide resolved
docs/it/stime.md Outdated Show resolved Hide resolved
docs/it/stime.md Outdated Show resolved Hide resolved
docs/it/stime.md Outdated Show resolved Hide resolved
docs/it/stime.md Outdated Show resolved Hide resolved
docs/it/stime.md Outdated Show resolved Hide resolved
serenasensini and others added 5 commits July 22, 2024 08:34
Co-authored-by: Michael Di Prisco <[email protected]>
Co-authored-by: Angelo Cassano <[email protected]>
Co-authored-by: Michael Di Prisco <[email protected]>
Co-authored-by: Nicola Erario <[email protected]>
Co-authored-by: Michael Di Prisco <[email protected]>
Co-authored-by: Michael Di Prisco <[email protected]>
Co-authored-by: Brian Atzori <[email protected]>
Co-authored-by: Paolo Martinoli <[email protected]>
Co-authored-by: Angelo Cassano <[email protected]>
Co-authored-by: Nicola Erario <[email protected]>
Co-authored-by: Corrado Petrelli <[email protected]>
Co-authored-by: Serena Sensini <[email protected]>
docs/it/stime.md Outdated Show resolved Hide resolved
docs/it/stime.md Outdated Show resolved Hide resolved
docs/it/stime.md Outdated Show resolved Hide resolved
docs/it/stime.md Outdated Show resolved Hide resolved
@Cadienvan
Copy link
Member

Per i conflitti sul file curriculum non vi preoccupate, ci penso poi io prima di mergiare.

docs/it/stime.md Outdated Show resolved Hide resolved
docs/it/stime.md Outdated Show resolved Hide resolved
docs/it/stime.md Outdated Show resolved Hide resolved
eppak and others added 2 commits September 5, 2024 14:03
Co-authored-by: Simone Gentili <[email protected]>
Co-authored-by: Simone Gentili <[email protected]>
@Cadienvan Cadienvan linked an issue Sep 7, 2024 that may be closed by this pull request
@AngeloAvv
Copy link
Member

Che succede? Perché fra le changes vedo altri capitoli?

@eppak
Copy link
Member Author

eppak commented Sep 15, 2024

Che succede? Perché fra le changes vedo altri capitoli?

@AngeloAvv questa stesura dura da un po', é stato fatto un rebase tempo fa con l'idea di sistemare poi. Ti torna?

@Cadienvan
Copy link
Member

@AngeloAvv @eppak a posto!

@Cadienvan
Copy link
Member

@eppak preferisci che la metta in draft in attesa di correggere il tutto?

@eppak eppak requested a review from sensorario November 11, 2024 10:36
@eppak
Copy link
Member Author

eppak commented Nov 11, 2024

@Cadienvan ciao, ho revisionato molte parti, mi manca la verifica di aver soddisfatto tutte le risposte ma molte sono outdated. Cosa consigli? Sarebbe comodo poter capire cosa é pendente, ma non mi è evidente

Copy link
Member

@Cadienvan Cadienvan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dal mio punto di vista è tutto ok, ciò che doveva essere espanso è stato espanso.
@serenasensini lascio a te la palla per dare una riletta e capire se secondo te ora torna.
Ho visto qualche punto in cui probabilmente la forma è da rivedere, ma preferisco lasciare la palla al @Il-Libro-Open-Source/drafting-group per evitare rework inutili!

docs/it/stime.md Show resolved Hide resolved
Copy link
Contributor

@allevo allevo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Questo capitolo ha delle enormi potenzialità!
Ho iniziato a lasciare qualche commento.

Ti consiglio, prima di iniziare a risolvere le discussioni, di strutturare il capitolo utilizzando diversi headers (pensala come se fossero degli h1, h2, h3 etc) in modo da organizzare meglio la struttura delle informazioni.

Ultimo ma non meno importante, si parla solo di stime temporali: quando si stima una task ha senso parlare solo di quelle (opinabile).

Invece quando si hanno a che fare con progetti interi, ci sono altri parametri, come:

  • la stima dalla capacity (non ho idea di come si traduca bene in italiano): quante persone servono? Quando si introducono le persone nel progetto? Posso per esempio partite "piano" con un paio di persone e rinforzare in team più avanti quando effettivamente ce n'è necessità. Pratica molto usata in caso di poc.
  • stima delle competenze richieste: che siano tecniche o meno, un progetto dovrà sempre essere contestualizzato all'interno di un mondo in cui ci sono già altre cose. Angular? React? C#? Java? DevOps? E altro. Devo quindi capire e stimare quali siano le competenze richieste per fare un progetto
  • stima economica di sviluppo: in particolare in consulenza le persone "costano" in modo diverso, banalmente perché magari hanno uno stipendio diverso. Personalmente trovo brutto dire che "le persone hanno un costo", ma dal punto di vista prettamente aziendale é vero 😢
  • stima economica di installazione: non é detto che sia 0. Per esempio potrebbe richiedere un consulente esterno che di configura la macchina come necessario e, per qualche regola aziendale, non puoi farlo tu
  • stima economica di runtime: quanto costa tenere su tutta la barca? Qui rientrano i costi sia delle macchine, sia di network (sul Cloud questo impatta tanto), sia di licenza sui prodotti terzi (CRM, tutti i SaaS)
  • stima interazioni umane (non so come chiamarle): se lo sviluppatore mi deve tenere d'occhio anche le email perché "si sa mai" o deve scrivere le minute o organizzare meeting o mettere tutto d'accordo su una soluzione, difficilmente scrive codice. Nascono quindi figure professionali che fanno quello. In base a quanto si stima l'entropia comunicativa, questa stima può essere alta o bassa. Esempio: se hai un solo interlocutore é semplice; se hai 4 stackholders diversi un po' meno perché ognuno avrà la sua idea e trovare una unica soluzione potrebbe essere complicato.
  • altri...

Scusa se sto scrivendo un muro di testo, ma credo possiamo mettere da qualche parte in questo capitolo questo elenco per dare idea che in base al livello di visibilità, le stime possono essere di diverso tipo.

Che ne pensi?

I processi si categorizzano infatti base ad una serie di variabili, ossia delle incognite che si incontrano durante il percorso; più è difficile predire quello che succederà durante il lavoro e più si dice che la variabilità cresce; è un poco come percorrere una strada e non sapere quanto traffico troveremo, se faremo quella strada molto spesso avremo comunque un'idea di cosa possa succedere e di quanto ci metteremo ad arrivare.

Per capire meglio quanto delicata sia questa tematica bisogna ricordarsi che il software è di fatto equiparabile alla produzione di un bene, è un prodotto che deve soddisfare le esigenze di uno o più clienti, un mercato.
Il processo di creazione di un prodotto, dal punto di vista prettamente ingegneristico, è suddivisibile secondo questa categorizzazione: definito, statistico e empirico, va applicato quello migliore per la situazione in cui siamo.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Non ho capito la frase dopo il ":": é un elenco di tre elementi? Conviene mettere un elenco puntato?
Toglierei comunque la frase dopo la virgola che potrebbe confondere il lettore.

Il processo statistico, invece, ha una variabilità più alta cioè durante la sua esecuzione le cose possono andare diversamente da quanto previsto e questo impatta sui tempi e costi.
L'esempio classico è la produzione di un bene materiale dove per forza di cose, errori, difformità di materiali e altre variabili possono incidere sul risuotato che produciamo; ci troviamo di fronte ad un processo che può essere dominato con la statistica, cioè so che avrò un certo scarto percentuale.
Questa casistica è piuttosto rara in campo informatico ma comunque presente, per fare un esempio potremmo pensare all'installazione di un plugin su un CMS e alla sua configurazione che può variare da cliente a cliente.
In questo caso non è detto che ci metteremo lo stesso quantitativo di tempo per ogni cliente, ecco qui che quindi è meglio esprimere la stima in una forbice perché abbiamo un'esperienza che ci dice che possiamo metterci da un minimo ad un massimo.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Qui spiegherei meglio perché per ogni cliente é diverso. Immagino che il motivo sia perché ogni cliente ha esigenze leggermente diverse che, seppur sapute a priori, hanno comunque delle incertezze.


#### Scomposizione

La prima tattica è quello di dividere il problema in problemi più semplic: un task o un progetto diventano via via più raffinati e più piccoli e al tempo stesso più semplici da stimare ma anche più facili da confinare come problematica. Come in precedenza, si cerca di trovare un pattern conosciuto e partire con quello. Questo vuol dire gestire un lavoro più piccolo, il che ci consente di comprenderlo meglio, visto che il cervello umano non è in grado di tenere sotto controllo una moltitudine di elementi, ma ci consente di avere una visione prima di insieme e poi del dettaglio, così da rendere le cose più facili da dominare. La riduzione rende anche chiare altre due cose, ovvero le criticità: parliamo di quelle parti meno esplorate e in cui ci sono più difficoltà. Mette in luce anche le dipendenze, cioè quali siano le fondamentali e quali siano le parti accessorie, cominciando anche a delineare una sequenza.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
La prima tattica è quello di dividere il problema in problemi più semplic: un task o un progetto diventano via via più raffinati e più piccoli e al tempo stesso più semplici da stimare ma anche più facili da confinare come problematica. Come in precedenza, si cerca di trovare un pattern conosciuto e partire con quello. Questo vuol dire gestire un lavoro più piccolo, il che ci consente di comprenderlo meglio, visto che il cervello umano non è in grado di tenere sotto controllo una moltitudine di elementi, ma ci consente di avere una visione prima di insieme e poi del dettaglio, così da rendere le cose più facili da dominare. La riduzione rende anche chiare altre due cose, ovvero le criticità: parliamo di quelle parti meno esplorate e in cui ci sono più difficoltà. Mette in luce anche le dipendenze, cioè quali siano le fondamentali e quali siano le parti accessorie, cominciando anche a delineare una sequenza.
La prima tattica è quello di dividere il problema in problemi più semplici: un task o un progetto diventano via via più raffinati e più piccoli e al tempo stesso più semplici da stimare ma anche più facili da confinare come problematica. Come in precedenza, si cerca di trovare un pattern conosciuto e partire con quello. Questo vuol dire gestire un lavoro più piccolo, il che ci consente di comprenderlo meglio, visto che il cervello umano non è in grado di tenere sotto controllo una moltitudine di elementi, ma ci consente di avere una visione prima di insieme e poi del dettaglio, così da rendere le cose più facili da dominare. La riduzione rende anche chiare altre due cose, ovvero le criticità: parliamo di quelle parti meno esplorate e in cui ci sono più difficoltà. Mette in luce anche le dipendenze, cioè quali siano le fondamentali e quali siano le parti accessorie, cominciando anche a delineare una sequenza.

Possiamo pensare di ragionare come nel caso di un pittore che deve creare un quadro che di per sè ha un soggetto e un tema ma non ha una definizione precisa del risultato finale.
Si procede prima con un disegno, che poi viene ripassato a tempera per poi venire ritoccato più volte per andare incontro alle esigenze del committente.
Il processo empirico è proprio questo, partire da una o più caratteristiche base, da uno scheletro, e agginugere elementi interagendo così da ottenere qualcosa che si adatta man mano che viene creato.
Partire da elementi di base e poi costruire in manirea iterativa ci consente di scomporre tutto in elementi più piccoli e semplici, più predittibili e quindi più gestibili; questa scomposizione ci consente di riportarci ai due processi precedenti che possono essere predetti meglio e, obiettivo principale, automatizzati.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automatizzati? In che senso?
E perché l'obiettivo principale non é la predizione?

Possiamo pensare di ragionare come nel caso di un pittore che deve creare un quadro che di per sè ha un soggetto e un tema ma non ha una definizione precisa del risultato finale.
Si procede prima con un disegno, che poi viene ripassato a tempera per poi venire ritoccato più volte per andare incontro alle esigenze del committente.
Il processo empirico è proprio questo, partire da una o più caratteristiche base, da uno scheletro, e agginugere elementi interagendo così da ottenere qualcosa che si adatta man mano che viene creato.
Partire da elementi di base e poi costruire in manirea iterativa ci consente di scomporre tutto in elementi più piccoli e semplici, più predittibili e quindi più gestibili; questa scomposizione ci consente di riportarci ai due processi precedenti che possono essere predetti meglio e, obiettivo principale, automatizzati.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automatizzati? In che senso?
E perché l'obiettivo principale non é la predizione?


#### Scomposizione

La prima tattica è quello di dividere il problema in problemi più semplic: un task o un progetto diventano via via più raffinati e più piccoli e al tempo stesso più semplici da stimare ma anche più facili da confinare come problematica. Come in precedenza, si cerca di trovare un pattern conosciuto e partire con quello. Questo vuol dire gestire un lavoro più piccolo, il che ci consente di comprenderlo meglio, visto che il cervello umano non è in grado di tenere sotto controllo una moltitudine di elementi, ma ci consente di avere una visione prima di insieme e poi del dettaglio, così da rendere le cose più facili da dominare. La riduzione rende anche chiare altre due cose, ovvero le criticità: parliamo di quelle parti meno esplorate e in cui ci sono più difficoltà. Mette in luce anche le dipendenze, cioè quali siano le fondamentali e quali siano le parti accessorie, cominciando anche a delineare una sequenza.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Le parti meno esplorate non é detto che siano le "più difficili", sono quelle dove incertezza di stima é maggiore! Metterei il focus su questo.


#### Scomposizione

La prima tattica è quello di dividere il problema in problemi più semplic: un task o un progetto diventano via via più raffinati e più piccoli e al tempo stesso più semplici da stimare ma anche più facili da confinare come problematica. Come in precedenza, si cerca di trovare un pattern conosciuto e partire con quello. Questo vuol dire gestire un lavoro più piccolo, il che ci consente di comprenderlo meglio, visto che il cervello umano non è in grado di tenere sotto controllo una moltitudine di elementi, ma ci consente di avere una visione prima di insieme e poi del dettaglio, così da rendere le cose più facili da dominare. La riduzione rende anche chiare altre due cose, ovvero le criticità: parliamo di quelle parti meno esplorate e in cui ci sono più difficoltà. Mette in luce anche le dipendenze, cioè quali siano le fondamentali e quali siano le parti accessorie, cominciando anche a delineare una sequenza.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

L'ultima frase é molto potente. La espanderei dando idea di come sia possibile espanderle (facendo domande, coinvolgendo esperti esterni per avere un opinione, documentandosi).
Da notare che tutto ciò richiede del tempo e che quindi va stimato, per esempio scegliendo investigazione time-boxed


La prima tattica è quello di dividere il problema in problemi più semplic: un task o un progetto diventano via via più raffinati e più piccoli e al tempo stesso più semplici da stimare ma anche più facili da confinare come problematica. Come in precedenza, si cerca di trovare un pattern conosciuto e partire con quello. Questo vuol dire gestire un lavoro più piccolo, il che ci consente di comprenderlo meglio, visto che il cervello umano non è in grado di tenere sotto controllo una moltitudine di elementi, ma ci consente di avere una visione prima di insieme e poi del dettaglio, così da rendere le cose più facili da dominare. La riduzione rende anche chiare altre due cose, ovvero le criticità: parliamo di quelle parti meno esplorate e in cui ci sono più difficoltà. Mette in luce anche le dipendenze, cioè quali siano le fondamentali e quali siano le parti accessorie, cominciando anche a delineare una sequenza.

#### Isolare le criticità
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Criticità secondo me non é il termine corretto: userei di più incertezza, "poca conoscenza", dubbio, known-unknown.


#### Forbice

L'espressione della stima è intuitivamente temporale in ore o giorni uomo, ma non è l'unica possibilità. In alcuni framework agili questa viene sostituita con delle unità adimensionali o addirittura con qualcosa di non numerico: l'esempio classico sono le taglie delle magliette. Questo approccio è tipico di quei team che lavorano per sessioni (chiamati a volte sprint) che durano da una settimana in su dove il gruppo sa che entreranno un certo numero di task con una determinata taglia, rimanere vaghi è un metodo per evitare due cose, la prima è che si faccia della matematica non opportuna sulle stime: la sequenza di come si svolge il lavoro è importante e sommarle ciecamente può comportare problemi nello svolgimento poi; capita spesso, infatti, che chi sovraintende il lavoro abbia bisogno di avere una scaletta (ancora meglio una data) e la cosa più immediata è sommare i tempi ma magari non è la solzione migliore perché ci sono dipendenze tra i lavori o si ha un'idea globale del lavoro ma non sufficientemente dettagliata e possono sorgere fraintendimenti.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
L'espressione della stima è intuitivamente temporale in ore o giorni uomo, ma non è l'unica possibilità. In alcuni framework agili questa viene sostituita con delle unità adimensionali o addirittura con qualcosa di non numerico: l'esempio classico sono le taglie delle magliette. Questo approccio è tipico di quei team che lavorano per sessioni (chiamati a volte sprint) che durano da una settimana in su dove il gruppo sa che entreranno un certo numero di task con una determinata taglia, rimanere vaghi è un metodo per evitare due cose, la prima è che si faccia della matematica non opportuna sulle stime: la sequenza di come si svolge il lavoro è importante e sommarle ciecamente può comportare problemi nello svolgimento poi; capita spesso, infatti, che chi sovraintende il lavoro abbia bisogno di avere una scaletta (ancora meglio una data) e la cosa più immediata è sommare i tempi ma magari non è la solzione migliore perché ci sono dipendenze tra i lavori o si ha un'idea globale del lavoro ma non sufficientemente dettagliata e possono sorgere fraintendimenti.
L'espressione della stima è intuitivamente temporale in ore o giorni uomo, ma non è l'unica possibilità. In alcuni framework agili questa viene sostituita con delle unità adimensionali o addirittura con qualcosa di non numerico: l'esempio classico sono le taglie delle magliette. Questo approccio è tipico di quei team che lavorano per sessioni (chiamati a volte sprint) che durano da una settimana in su dove il gruppo sa che entreranno un certo numero di task con una determinata taglia, rimanere vaghi è un metodo per evitare due cose, la prima è che si faccia della matematica non opportuna sulle stime: la sequenza di come si svolge il lavoro è importante e sommarle ciecamente può comportare problemi nello svolgimento poi; capita spesso, infatti, che chi sovraintende il lavoro abbia bisogno di avere una scaletta (ancora meglio una data) e la cosa più immediata è sommare i tempi di stima. Purtroppo però questa scelta potrebbe non essere la soluzione migliore perché ci sono dipendenze tra i lavori o ci sono aree ancora troppo poco chiare per avere una stima affidabile.

#### Forbice

L'espressione della stima è intuitivamente temporale in ore o giorni uomo, ma non è l'unica possibilità. In alcuni framework agili questa viene sostituita con delle unità adimensionali o addirittura con qualcosa di non numerico: l'esempio classico sono le taglie delle magliette. Questo approccio è tipico di quei team che lavorano per sessioni (chiamati a volte sprint) che durano da una settimana in su dove il gruppo sa che entreranno un certo numero di task con una determinata taglia, rimanere vaghi è un metodo per evitare due cose, la prima è che si faccia della matematica non opportuna sulle stime: la sequenza di come si svolge il lavoro è importante e sommarle ciecamente può comportare problemi nello svolgimento poi; capita spesso, infatti, che chi sovraintende il lavoro abbia bisogno di avere una scaletta (ancora meglio una data) e la cosa più immediata è sommare i tempi ma magari non è la solzione migliore perché ci sono dipendenze tra i lavori o si ha un'idea globale del lavoro ma non sufficientemente dettagliata e possono sorgere fraintendimenti.
La seconda è che si vuole semplificare il lavoro di stima evitando di dare un numero in ore e quindi si sa che ce la si farà in una sessione ma si evita di approfondire quanto anche per non creare fraintendimenti.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Se si vuole dare idea di voler descrivere due cose, é meglio separarle in 2 paragrafi diversi o fare un elenco puntato con la descrizione.
Leggendo un po' velocemente, mi ero perso che erano 2 le cose: usare elementi grafici con i paragrafi o gli elenchi, aiuta il lettore a tenere in mente che le cose che leggerà saranno 2.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[🆕]: MVP / Stime