Questa è una domanda molto generale, quindi la risposta può essere inevitabilmente "dipende".
Ad esempio, JPA (Hibernate) e Entity Framework sono tentativi di creare astrazione su database (per lo più relazionali), in modo che la tua app sia indipendente dal motore di database SQL in uso.
È fantastico, ma non è gratuito. Ciò che ottieni è maggiore flessibilità (puoi teoricamente cambiare il motore DB sottostante) e una migliore astrazione, ma perdi la possibilità di utilizzare funzionalità più avanzate del DB per es. prestazioni migliori. Inoltre, queste astrazioni sono spesso abbastanza "leaky". Sostituito DB (e app) probabilmente si comporterà in modo leggermente diverso da quello vecchio. È ancora necessario essere consapevoli di ciò che fa SQL, basi del modello relazionale. Quindi può essere effettivamente più difficile per i nuovi arrivati: devono conoscere sia l'SQL che il framework di tua scelta.
Ma questo non è ancora totalmente agnostico. JPA / EF sono di nuovo solo un pezzo di tecnologia di cui vuoi essere indipendente. Quindi crei il tuo livello su JPA / EF che nasconde tutti i dettagli dell'implementazione (gestori di entità, dbcontexts ecc.)
Le persone utilizzano tipicamente modelli esistenti (dao, repository) per questo scopo. Il nuovo dipendente ha ancora bisogno di conoscere SQL, JPA / EF e ora il tuo nuovo livello brillante.
La situazione descritta sopra è in realtà abbastanza comune, ma è lungi dall'essere "il più agnostico possibile". Si potrebbe anche smettere di assumere che si utilizzi db con modello relazionale (NoSQL), che il proprio db supporti le transazioni e ACID, quindi si finisca per avere un modello di programmazione di storage a valori-chiave essenzialmente persistente. Devi pensare a ciò che perdi e ciò che guadagni.