Porsi tre domande:
- Abbiamo la risorsa per cambiare il design ora? In caso contrario, lascia stare.
- È probabile che un cambiamento di progettazione aggiunga più valore al prodotto nel corso della sua vita? In caso contrario, lascia stare.
- C'è qualcosa di meglio che potrei fare con le mie risorse? Se è così, fallo invece.
Il punto di fare qualsiasi cosa, che si tratti di creare software, progettare un prodotto, fare lavoretti, ecc. è sostituire un'alternativa di basso valore per uno più alto. ad esempio, pulisco il pavimento della mia cucina perché apprezzo la sua pulizia rispetto allo sforzo necessario per pulirlo.
Quindi, se i "miglioramenti" apportati a un design sono intesi a confermarlo con un determinato principio di progettazione, ma non aggiungere alcun valore reale, non ha senso crearli.
Il problema di tutto questo è che nessuno può essere sicuro di ciò che accadrà in futuro. Ciò significa che qualsiasi sforzo che io pongo per migliorare oggi potrebbe essere uno sforzo inutile. Per esempio, ho cambiato l'olio nella mia auto regolarmente perché così facendo, spero, contribuirò a prolungare la sua vita. Tuttavia, se la mia macchina viene ammortizzata subito dopo un cambio d'olio, ho sprecato i miei soldi.
La soluzione a questo dilemma è di fare una stima ottimale sulla base delle informazioni che ho a disposizione. Come aiuto per farlo, le persone hanno escogitato regole o principi che li guidano in modi per aggiungere più valore al costo minimo. È qui che entrano in gioco cose come i principi del design del software, ma euristiche simili possono essere applicate a molti altri settori della vita.
La sfida sta scegliendo il principio giusto al momento giusto. Di Coruse, non ci sono regole rigide per farlo, ma per fortuna, ci sono (non sorprendentemente) principi che puoi applicare.
Ecco alcuni:
- Comprendi perché qualcosa è considerato best practice.
- Comprendi i tipi di situazioni alle quali il principio appartiene
- ... e per il quale non lo fa.
- Confronta questi dati con la situazione attuale.
- Scopri il costo dell'implementazione del principio.
- ... e i vantaggi che potrebbero derivare dall'applicarlo.
- Determina se hai la risorsa per applicare il principio ora.
- Impara dall'esperienza, sia la tua che quella di altri che hanno svolto un lavoro simile.
- Considera se potresti apportare miglioramenti incrementali piuttosto che provare a modificare tutto in una volta.
Un'ultima cosa da ricordare è che i costi e i benefici sono cose complesse e spesso scivolose. Tornando al mio esempio di pulire il pavimento della mia cucina, il tempo che passo a pulire ha sia benefici immediati (sembra più bello), benefici a medio termine (mia moglie è felice, e il nostro rapporto migliora di conseguenza) e benefici a lungo termine (dura più a lungo, non è probabile che prendiamo cattive malattie dalle cose ammuffite che festeggia negli angoli). I benefici immediati potrebbero non sembrare così importanti ... ma alcuni degli altri sono critici. Molti dei vantaggi del buon design nel software sono simili. In particolare, un buon design libera "spazio di testa" che può essere utilizzato per risolvere altri problemi, spesso più profondi.