e' una domanda molto piu' profonda di quanto tu credi.
nel senso che ... chiunque scriva software, di qualunque tipo e uso, deve appoggiarsi su qualcosa esistente. banalmente:
- linguaggio (java, javascript, python, C, ...)
- librerie (cioe' mattoncini che citi)
- framework (cioe' mattoncini che citi)
- librerie personali (cioe' mattoncini che citi)
...
ora, imparare tecnologie sottostanti e' in generale un lavoro gigantico, perche' sono tutte estremamente sofisticate (aka migliaia di pagine di documentazione e mesi di prove per ognuna) quindi quando prendi decisioni devi bilanciare tra:
- tuo know how acquisito negli anni
- features esistenti
la differenza tra un senior architect e un junior developer sta proprio in questa capacita', nella capacita' di contemporaneamente "sapere un po tutto" e la capacita' di scegliere i componenti corretti per quel lavoro
non e' tanto diverso dal lavoro di Conte. se conte sceglie darmian, lo fa perche' ha vincoli di costo (imposti nel caso del sw developer dal budget cliente). E se sceglie vidal e' perche' ha vincoli di tempo e non vuole dedicarne ad insegnare cose che ha gia' insegnato a vidal (cioe' studiare nuove tecnologie) ad altri ecc, anche se magari esistono soluzioni migliori in senso assoluto.
il tuo caso (del sistema di fatture) poi e' molto particolare perche' esiste un ulteriore livello che e' quello della customizzazione vs sviluppo.
Ci sono molti sistemi "a meta' strada", vedi il forum che stai usando. vbulletin e' una piattaforma customizzabile, non scrivi da zero tutto. idem per i sistemi gestionali, non parti mai da zero, ma usi qualcosa di personalizzabile, perche' non sarebbe possibile ripagare lo sforzo.
in questo caso particolare parti dalle specifiche utente/stakeholders, vedi se esiste qualcosa di adattabile/personalizzabile.
se si fai una analisi di tempi e costi, scopri limitazioni, le condividi con il cliente, e se sono accettabili, you go for it.
make vs buy e' comunque un argomento storico e importante nel mondo dello sviluppo software, da sempre.
Idem per un sito web. Che livello di personalizzazione ti serve? basso? ok, no nscassare i maroni, ti installo "un wordpress" (nel senso di un sistema pronto e mediamente personalizzabile) e ti arrangi.
Personalizzazione enorme a livello di funzionalita', integrazione con altri sistemi? ok, va scritto tutto.
Ma anche in questo caso "tutto" non e' mai tutto perche' ti appoggi a framework esistenti per semplificare le cose banali e ripetitive, quello che viene normalmente chiamato "boilerplate code".
E poi ci sono tante considerazioni: quanti utenti avrai? 10 o 1000000000? se la risposta e' 10, non serve una soluzione scalabile all'infinito che costa 10 volte tanto.
E' una domanda importantissima, si potrebbe scrivere non un libro ma moltissimi libri sull'argomento. E non esiste una risposta univoca
In generale:
1) ascolti i requisiti utente (cosa estremamente complicata, perche il cliente non sa mai che ***** vuole e soprattutto vuole tutto senza capire le implicazioni)
2) cerchi di capire cosa e' fondamentale e cosa non lo e'
e poi la tua esperienza ti fa prendere la strada corretta o errata