Durante la scrittura del codice o durante la progettazione si tenta di generalizzare il problema nella prima istanza stessa o si tenta di risolvere quel problema molto specifico.
Lo sto chiedendo perché cercare di generalizzare il problema tende a complicare le cose (il che potrebbe non essere necessario) e d'altra parte sarà molto difficile estendere la soluzione specifica in caso di modifica del requisito.
Immagino che la soluzione sia trovare la via di mezzo che è più facile a dirsi che a farsi. Come affrontate questo tipo di problema? Se inizi a generalizzarlo in quale momento sai che è sufficiente questa generalizzazione?