Ottimizzazione prematura

Nella misura in cui posso essere obiettivo su me stesso, a volte mi rendo conto che spendo molto tempo (e molte delle mie poche risorse celebrali) a micro-ottimizzare mansioni routinarie senza effettivamente andare a lavorare sui miei colli di bottiglia. La gestione del mio tempo (che si porta dietro tutte le conseguenze del caso in termini di risorse mentali, e spesso economiche) è decisamente discutibile.

Facendo il paragone informatico e prendendo in prestito il principio 20-80 (di Pareto): l’80% dei miei risultati quotidiani (quando ci sono) dipendono dal 20% del mio impegno. Se sbaglio (ahimè, non sono un codice) questo collo di bottiglia allora spreco ancora più tempo e risorse a mettere inutili pezze.

Ma in fondo mi consolo pensando che non farei altro che procedere ad “ottimizzazione premature” della mia giornata che ne diminuirebbero la sua linearità e la sua bellezza (si, ci provo ancora…). In fondo se non sai dove colpire (o non sei in grado) finisci con lo sparare nel mucchio…

L’ “ottimizzazione prematura” è quell’approccio tale per cui considerazioni sulle prestazioni influiscono sul progetto di un pezzo di codice. Il risultato è un codice non così chiaro come doveva essere (o anche non corretto), dato che il codice stesso è diventato più complicato a causa dell’ottimizzazione.

La prima regola dell’ottimizzazione dei programmi è: non farlo. La seconda regola dell’ottimizzazione dei programmi (solo per esperti!) è: non farlo, ancora! [Michael A. Jackson]

Possiamo dimenticarci quelle piccole efficienze, per il 97% del tempo: l’ottimizzazione prematura è la radice di tutti i mali. Non dobbiamo sprecare il tempo nemmeno per quel 3% di codice critico. [Knuth, parafrasando Hoare]

Parole in libertà cercando di capire come muovermi.

WU

PS. Ed ovviamente XKCD

xkcd080616.png

Che aggiunge anche (e mi prende decisamente per i fondelli) che sarebbe necessario un altro pezzo di codice per capire se l’ottimizzazione è prematura o meno. E quindi anche questo pezzo di codice andrebbe ottimizzato?

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...