Qual è la differenza tra uno sviluppatore full stack e uno sviluppatore di software?

Lo sviluppatore full stack (FSD) è qualcuno che è capace di codificare per qualsiasi strato/livello in un'applicazione. Di solito le applicazioni software che sono sviluppate e usate in tutto il mondo, seguono un'architettura a n-tier/multi layer.
Quello che significa è che l'applicazione avrà
- UI (presentation layer) che tutti noi vediamo sul web/ o pagina GUI per le applicazioni desktop. La competenza necessaria qui è javascript/jquery/HTML/CSS ecc per le applicazioni web. AWT/Jframes o qualsiasi altra tecnologia equivalente.
- Logica di business: Qualsiasi linguaggio di programmazione orientato agli oggetti come java, c#.
- Back end: Comprensione e utilizzo di almeno un RDBMS (realtionl database maangement system) come Oracle, MySql
Tutti gli strati di cui sopra di solito sono sotto MVC framework. ex:- Struts, Spring MVC

Tuttavia, uno sviluppatore di software idealmente fa tutte queste cose. A seconda dell'organizzazione e del progetto su cui lavora, può/deve lavorare su tutti i livelli.
Alcune aziende avranno un set separato di sviluppatori per l'UI, chiamato sviluppatori Front end.
Più persone per lo sviluppo del back end (compresa la logica di business e il database) chiamato sviluppatori di back end.
Alcune aziende avranno programmatori DB/DBA se un'applicazione comporta un ampio uso di stored procedure ecc.