Il modo migliore per capire l'importanza di questi principi è di averne bisogno.
Quando ero un programmatore alle prime armi, non pensavo molto alla progettazione, infatti non sapevo nemmeno che esistessero schemi di design. Man mano che i miei programmi crescevano, cambiare una cosa significava cambiare molte altre cose. Era difficile rintracciare i bug, il codice era enorme e ripetitivo. Non c'era molta gerarchia di oggetti, le cose erano dappertutto. L'aggiunta di qualcosa di nuovo o la rimozione di qualcosa di vecchio comportano errori nelle altre parti del programma. Vai a capire.
Su piccoli progetti, potrebbe non avere importanza, ma nei grandi progetti le cose possono essere davvero da incubo. Più tardi, quando mi sono imbattuto in concetti di design pattern, ho detto a me stesso, "oh yah, fare questo avrebbe reso le cose molto più facili allora".
Non riesci davvero a capire l'importanza dei modelli di design fino a quando non si presenta la necessità. Rispetto gli schemi perché, per esperienza, posso dire che rendono la manutenzione del codice semplice e robusta.
Tuttavia, proprio come te, sono ancora incerto riguardo ai "test facili", perché non ho ancora avuto la necessità di entrare nei test delle unità.