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 49 commits into
base: main
Choose a base branch
from
Open

Capitolo Stime #225

wants to merge 49 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 !

Co-authored-by: Brian Atzori <43118219+BrianAtzori@users.noreply.github.com>
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
eppak and others added 14 commits July 1, 2024 20:02
Co-authored-by: Michael Di Prisco <Cadienvan@users.noreply.github.com>
Co-authored-by: Michael Di Prisco <Cadienvan@users.noreply.github.com>
Co-authored-by: Serena Sensini <serena.sensini@gmail.com>
Co-authored-by: Serena Sensini <serena.sensini@gmail.com>
Co-authored-by: Serena Sensini <serena.sensini@gmail.com>
Co-authored-by: Serena Sensini <serena.sensini@gmail.com>
Co-authored-by: Serena Sensini <serena.sensini@gmail.com>
Co-authored-by: Serena Sensini <serena.sensini@gmail.com>
Co-authored-by: Serena Sensini <serena.sensini@gmail.com>
Co-authored-by: Serena Sensini <serena.sensini@gmail.com>
Co-authored-by: Serena Sensini <serena.sensini@gmail.com>
Co-authored-by: Michael Di Prisco <Cadienvan@users.noreply.github.com>
@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

Cadienvan
Cadienvan previously approved these changes Nov 20, 2024
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?

docs/it/stime.md Outdated Show resolved Hide resolved
docs/it/stime.md 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 Show resolved Hide resolved
docs/it/stime.md Outdated Show resolved Hide resolved
docs/it/stime.md Outdated Show resolved Hide resolved
Co-authored-by: Tommaso Allevi <tomallevi@gmail.com>
@eppak
Copy link
Member Author

eppak commented Jan 14, 2025

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?

Questo mi piace tanto come punto di vista, lo metterei come cappello spiegando poi che si da il focus sul tempo (al netto che sarebbe bello anche espandere il resto, altra rev? altro capitolo?)

Come intro cosa ne pensi?
Grazie

@allevo
Copy link
Contributor

allevo commented Jan 15, 2025

Concordo sul "restare semplici" (se no non si finisce più).
E concordo sul fare un cappello introduttivo che spieghi bene che il termine "stima" é complesso e declinato in diverse sfaccettature.

docs/it/stime.md Outdated 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.

Ho messo dei commenti per correggere qualche typo e suggerire dei titoli diversi, ma non ho una forte opinione in merito, sentiti pure libero di ignorarli e risolverli.

Non ho trovato invece la intro di cui si parlava la review scorsa. Secondo me quella può dare veramente molto valore e contesto.


Nell'ambito informatico, la stima può essere usata per dare una dimensione ad un task o ad un intero progetto, aiutando il business a delineare un'idea o a pianificare le attività ed è quindi piuttosto importante perché consente di prendere decisioni su come spendere le risorse. Dobbiamo ricordarci infatti che lo sviluppo è parte del business, e lo stiamo facendo anche noi quando programmiamo.

Un parametro importante nello sviluppo di un progetto è il cosiddetto Time To Market (tempo di arrivo su un certo mercato), può risultare determinante nella riuscita di un prodotto; rappresenta quando riuscirete ad essere pronti per i clienti e quindi quando arriverete rispetto alla concorrenza. Il business lo tiene molto in considerazione perché è un buon indicatore di quando i profitti potrebbero iniziare ad arrivare cominciando, quindi, a rientrare degli investimenti. Questo parametro diventa perno, insieme ad altri fattori, per delineare le strategie aziendalie; delineare la pianificazione in base ad alla stima temporale non è l'unica maniera di gestire questo aspetto, ma è sicuramente spesso il preponderante.
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
Un parametro importante nello sviluppo di un progetto è il cosiddetto Time To Market (tempo di arrivo su un certo mercato), può risultare determinante nella riuscita di un prodotto; rappresenta quando riuscirete ad essere pronti per i clienti e quindi quando arriverete rispetto alla concorrenza. Il business lo tiene molto in considerazione perché è un buon indicatore di quando i profitti potrebbero iniziare ad arrivare cominciando, quindi, a rientrare degli investimenti. Questo parametro diventa perno, insieme ad altri fattori, per delineare le strategie aziendalie; delineare la pianificazione in base ad alla stima temporale non è l'unica maniera di gestire questo aspetto, ma è sicuramente spesso il preponderante.
Un parametro importante nello sviluppo di un progetto è il cosiddetto Time To Market (tempo di arrivo su un certo mercato), può risultare determinante nella riuscita di un prodotto; rappresenta quando riuscirete ad essere pronti per i clienti e quindi quando arriverete rispetto alla concorrenza. Il business lo tiene molto in considerazione perché è un buon indicatore di quando i profitti potrebbero iniziare ad arrivare cominciando, quindi, a rientrare degli investimenti. Questo parametro diventa perno, insieme ad altri fattori, per delineare le strategie aziendali; delineare la pianificazione in base ad alla stima temporale non è l'unica maniera di gestire questo aspetto, ma è sicuramente spesso il preponderante.

Un esempio nel nostro campo questo potrebbe essere l'installazione di un sistema operativo, di un CMS; non ci aspettiamo grandi soprese da queste operazioni, al più possono chiederci qualche pacchetto accessorio ma nulla che possa impattare nè sui tempi nè sui risultati.

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.
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'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.
L'esempio classico è la produzione di un bene materiale dove per forza di cose, errori, difformità di materiali e altre variabili possono incidere sul risultato che produciamo; ci troviamo di fronte ad un processo che può essere dominato con la statistica, cioè so che avrò un certo scarto percentuale.

Il cliente ha un'esigenza e spesso non è in grado di esprimerla da subito in termini chiari e precisi, in un contesto come meccanica ed elettronica è più facile perché il cliente è in grado di descrivre le specifiche con caratteristiche fisiche misurabili; un cliente che chiede un sito internet invece difficilmente potrà fare altrettanto.
Ad esempio possiamo trovarci di fronte a percezioni di un prodotto terzo e molto qui può fare l'analisi perché ci può chiarire meglio la specifica, la definizione di cosa si vuole ottenere.

In questo contesto di incertezza nasce il processo empirico che ha preso piede negli ultimi venti anni, si tratta di abbracciare un po' questa incertenzza e procedere in maniera iterative.
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
In questo contesto di incertezza nasce il processo empirico che ha preso piede negli ultimi venti anni, si tratta di abbracciare un po' questa incertenzza e procedere in maniera iterative.
In questo contesto di incertezza nasce il processo empirico che ha preso piede negli ultimi venti anni, si tratta di abbracciare un po' questa incertezza e procedere in maniera iterativa.

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 importante, automatizzati magari per un riuso in altri ambiti.
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
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 importante, automatizzati magari per un riuso in altri ambiti.
Partire da elementi di base e poi costruire in maniera 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 importante, automatizzati magari per un riuso in altri ambiti.


#### Isolare le criticità

Nella suddivisione si possono scorgere, come si è visto, criticità; sono le parti più complesse da stimare, quelle che ci pongono di fronte a situazioni nuove dove un pattern già conosciuto non è visibile o proprio è assente. Si possono adottare due strategie concatenate: la prima è quella di "assegnare ad una stima del tempo di stima": sembra un gioco di parole ma non lo è. Se un tema è complesso e non scomponibile e ha bisogno di essere studiato è necessario prendersi il tempo per farlo. Assegnare a questo task una stima per consentirci di avere le idee più chiare ci da la maniera di introdurre il concetto di PoC: proof of concept. Di fatto è un micro task orientato alla creazione di uno o più proprietà del progetto finale che sono critiche e che, una volta sbrogliate, rendono tutto il processo di creazione più chiaro. Può anche essere utile mostrarlo, a volte può bastare provare se l'idea funziona a livello tecnico, ma a volte è possibile anche mostrarlo a chi poi prenderà decisioni perché dà immediatamente un'idea di dove si vuole arrivare, che prestazioni o di che interattività si parla.
Copy link
Contributor

Choose a reason for hiding this comment

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

suggerisco di fare un elenco puntato con le due strategie in modo da dividere bene il testo (anche visualmente). Inoltre si eviterebbe il ":" dentro un altro ":".


Nella suddivisione si possono scorgere, come si è visto, criticità; sono le parti più complesse da stimare, quelle che ci pongono di fronte a situazioni nuove dove un pattern già conosciuto non è visibile o proprio è assente. Si possono adottare due strategie concatenate: la prima è quella di "assegnare ad una stima del tempo di stima": sembra un gioco di parole ma non lo è. Se un tema è complesso e non scomponibile e ha bisogno di essere studiato è necessario prendersi il tempo per farlo. Assegnare a questo task una stima per consentirci di avere le idee più chiare ci da la maniera di introdurre il concetto di PoC: proof of concept. Di fatto è un micro task orientato alla creazione di uno o più proprietà del progetto finale che sono critiche e che, una volta sbrogliate, rendono tutto il processo di creazione più chiaro. Può anche essere utile mostrarlo, a volte può bastare provare se l'idea funziona a livello tecnico, ma a volte è possibile anche mostrarlo a chi poi prenderà decisioni perché dà immediatamente un'idea di dove si vuole arrivare, che prestazioni o di che interattività si parla.

#### Forbice
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
#### Forbice
#### Unità di misura

O simili.

- 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.
Se la stima invece è scritta sotto forma di tempo possiamo usare lo stratagemma di creare una forbice con un tempo minimo e massimo per lo svolgimento del lavoro, questo per conteggiare il rischio soprattutto di quelle parti che risultano nuove che potrebbero portare con sé delle criticità. Un altro modo è spesso quello di indicare una stima e poi aggiungere un margine, questo è forse il metodo più incerto perché il margine è spesso arbitrario; generalmente si usa Pareto aggiungendo il venti per cento a quanto ottenuto.

#### Specifiche
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
#### Specifiche
#### L'impatto delle specifiche sulla stima

che te ne pare ?

@eppak
Copy link
Member Author

eppak commented Jan 24, 2025

@allevo

Non ho trovato invece la intro di cui si parlava la review scorsa. Secondo me quella può dare veramente molto valore e contesto.

Non l'ho ancora fatta fino a che il corpo centrale non è definitivo per evitare di accavallare le cose, una volta che commenti e cambi sono a posto procedo.

Grazie mille

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