Evidence Based Scheduling

Joel Spolsky ha scritto un interessante articolo sulle modalità con cui vengono stimati e poi tracciati i tempi di scrittura del software nella sua azienda (Fog Creek Software). L'articolo merita una lettura approfondita perché i principi applicati sono pienamente attuabili anche nella realtà italiana (talvolta ho citato altri suoi articoli in cui alcune cose andavano adattate alla nostra realtà, in questo caso direi di no).

Va detto subito che la metodologia descritta è anche inserita nelle funzionalità di un prodotto che questa azienda produce e vende, ma riflettere su tali concetti in maniera oggettiva non è tempo perso.

I concetti "rivoluzionari" (rispetto alla media con cui molti operano) sono:

  1. Definire task in termini di ore e non avere task con più di 16 ore.
  2. Misurare il tempo speso per i task (includendo eventuali "distrazioni", come la chiacchierata con il capo-progetto e la telefonata inaspettata)
  3. Simulare il futuro utilizzando il rapporto di ore stimate/effettive per creare scenari statistici con simulazioni Monte Carlo.
  4. Richiedere ai programmatori di fare le stime e non ai loro capi
  5. Mantenere le informazioni e le stime separate (e quindi personalizzate) per programmatore.
  6. Includere nei costi della feature il tempo speso a correggere i bug – senza allocare tempi preventivi per il "debugging" generico.

A mio parere la metodologia è scientifica e chiara, non è così semplice da applicare per abitudine, mentalità e definizione dei ruoli all'interno di un team, certo non per una complessità che non c'è. Se avete altre opinioni, o se qualcuno già usa una metodologia simile, sarebbe interessante avere qualche opinione.

Operatore ternario e di coalesce in Visual Basic 9

Nonostante sia molto raro per me usare Visual Basic… scrivendo un libro su LINQ ho lavorato a un capitolo in cui si confrontano le novità di Visual Basic 9 rispetto a C# 3.0.

Una novità introdotta dalla Beta 2 (che resterà tale anche in RTM) è la sintassi integrata per i nullable types con cui si può scrivere Integer? invece di Nullable( Of Integer). Per chi ha letto il libro, segnalo un post dove evidenzio una variazione che è avvenuta rispetto a quanto pubblicato qualche mese fa (comportamento dei cast tra nullable e non-nullable).

Altra novità è poi l'operatore If, che sembra Iif ma può essere usato anche come coalesce. In pratica, quello che in C# si scrive così:

a = b ?? 0;
c = (d != 0) ? n / d : 0;

In Visual Basic 9 si può scrivere così:

a = If( b, 0 )
c = If( d <> 0, n \ d, 0 )

L'assegnazione a c può stupire perché sembra identica all'uso di IIF, ma la differenza è che con IIF tutti i parametri vengono valutati, quindi n \ d (che è la divisione con risultato intero) genera un'eccezione quando d = 0. Usando la If, invece, solo l'argomento necessario in base al primo parametro (che è Boolean) viene valutato, l'altro no. In pratica si ottiene lo stesso comportamento dell'operatore ternario di C#.

Nuovi paradigmi verso il parallelismo

Non è la prima volta che tocco l'argomento del parallelismo… il fatto è che rendere paralleli e autonomi i servizi all'interno di un'applicazione sta diventando sempre più una necessità. Gli ambienti di sviluppo e i linguaggi si muovono di conseguenza, offrendo strumenti, tool e servizi per rendere l'implementazione più semplice.

Il link che segnalo oggi è questo post di Don Syme sui workflow asincroni in F#. Anche se non avete mai visto e/o usato F#, vale la pena dargli un'occhiata, perché si tratta di un approccio interessante alla necessità di semplificare l'implementazione di codice che può essere eseguito in maniera indipendente.

Non credo che ci sia già un paradigma "definitivo" per affrontare le problematiche introdotte dal parallelismo, esistono molte spinte (linguaggi ad-hoc, librerie, approcci più dichiarativi che iterativi, ecc.) in cerca di fortuna. Probabilmente non esiste la bacchetta magica e gli strumenti da usare saranno diversi, quel che è certo è l'impatto pratico su come il programmatore deve "pensare".

Corretto il bug di Excel 2007

Pochi giorni fa ho segnalato un bug di Excel 2007, all'interno di un post dove parlavo più in generale dei bug nelle applicazioni.

La notizia (stranamente, devo dire…) non ha avuto un'ampia copertura dai media tradizionali. I fix saranno inclusi in Windows Update tra qualche giorno.

I link: questo post del team di Excel riassume i link per i download (ce ne sono sia per Excel che per Excel Services). Gli articoli di knowledge base sono il 943075 e il 943076.