TL;DR - È necessario sapere come sviluppare tre cose per qualsiasi applicazione full-stack di base. Il Front-End, il Back-end e un Database.
La maggior parte delle applicazioni mobili che usiamo oggi sono a due lati. Il 'Front-End' (in questo caso l'applicazione mobile) comunica con il 'Back-End' o il server/interfaccia cloud che fornisce informazioni all'applicazione per visualizzarle e memorizza/elabora le informazioni inviate indietro.
Uno sviluppatore full-stack è qualcuno che può sviluppare lo stack completo (cioè il front-end e il back-end) di un'applicazione.
Ci sono varie tecnologie che puoi imparare per poterti definire uno sviluppatore iOS full-stack, tuttavia devi imparare almeno una tecnologia front-end e una back-end. Ci sono due parti per imparare qualsiasi particolare "tecnologia". La prima è la lingua e la seconda è il framework API.
Per il front-end su iOS avete il nativamente disponibile UIKit (e una scarsità di altri framework a seconda di ciò che volete costruire) per il quale potete costruire usando il linguaggio Swift (non sto nemmeno menzionando Objective-C in questo giorno). Tuttavia si può anche scegliere di sviluppare in Javascript con React Native. Tuttavia, i framework ibridi hanno bisogno di un po' di supporto nativo, quindi potresti dover toccare comunque un po' di Swift.
In questi giorni è possibile essere uno sviluppatore full stack con la sola conoscenza del linguaggio Swift! Grazie a framework back end open-source come Perfect, Vapor e Kitura (sviluppato da IBM). Allo stesso tempo, puoi scegliere di sviluppare il tuo backend anche con Javascript usando qualsiasi framework lato server (Express, Hapi) che gira sull'ambiente Node.js. Puoi anche usare Java (Spring) e Ruby (Rails) per sviluppare il tuo back-end.
C'è un'altra cosa che probabilmente dovrai usare mentre sviluppi il back-end - un database. Dagli archivi basati su SQL (MySQL, PostgreSQL) agli archivi basati su NoSQL (MongoDB, CouchDB, Cassandra) avete un numero enorme di opzioni. Ma questa è una risposta per un'altra domanda.
Alla fine, tutto dipende da ciò che si sta cercando di costruire. Per esempio:
- Se volete costruire un'applicazione disponibile solo su iOS, sarebbe meglio usare Swift e i framework associati.
- Se volete rendere la vostra applicazione disponibile sia per Android che per iOS (e la User Experience non è una grande preoccupazione), allora potete usare Javascript con React Native sul front-end e Node per il back-end.
- Altri linguaggi usati sul back-end come Java sono anche più richiesti nelle aziende e sono molto usati nelle imprese, quindi è una valida opzione da imparare.