In moltissimi casi nella vita di una persona che sceglie di intraprendere un percorso per diventare web developer, la prima domanda che emerge è “è meglio iniziare da una preparazione full stack o è meglio specializzarsi in un singolo linguaggio?”
In realtà questa è davvero un'ottima domanda, ma la risposta richiede di analizzarla un po’ più nel dettaglio.
Cosa significa “essere preparati”?
Potrai pensare che con “essere preparati” ci si riferisca al raggiungimento di quella condizione che ci permetta di dire “sento di avere padronanza di questo argomento, mi sento sicuro di me”. Tuttavia, essere preparati su uno o più linguaggi di programmazione, non significa aver semplicemente memorizzato un manuale che insegna quali sono le istruzioni più importanti, oppure aver seguito un corso di informatica che spiega per filo e per segno ogni cosa che possa esser detta riguardante il suddetto linguaggio.
La verità è che non si è mai completamente preparati: perché?
Prendiamo come esempio il linguaggio Javascript. Supponiamo tu abbia letto il tuo bel libro che spiega tutte le istruzioni di maggior utilizzo e più importanti. E adesso? Ti senti preparato? No, eh? Quello che ti manca potrebbe essere il fare pratica e acquisire dimestichezza con la sintassi, costruire quegli automatismi propri di ogni linguaggio, che chi programma da più tempo ha già acquisito.
A questo punto è semplice, hai individuato il problema: ci dai dentro!
E adesso, dopo aver fatto pratica su pratica, ti senti pronto? Non ancora, vero?
Questo avviene, probabilmente, perché ti manca esperienza effettiva, sul campo. Nessun problema! Decidi di trovare un lavoro che ti permetta di utilizzare le competenze che hai appena acquisito in Javascript.
Ci siamo, sei assunto! Sei uno sviluppatore web Junior e lavori in team con altre persone più o meno preparate di te.
“Adesso” – ti dici – “posso sentirmi finalmente preparato!” Eppure la sensazione che provi è un po’ diversa. Non sei ancora completamente padrone dell’argomento. E sai perchè? Perché esistono infinite applicazioni per il tuo linguaggio e tu nel tuo impiego ne vedrai solo una parte. E se qualcuno ti chiedesse di realizzare qualcosa che non hai mai realizzato? Non saresti perfettamente preparato per farlo!
Allora come se ne esce? Semplice: trovarti a realizzare qualcosa di nuovo ed inesplorato con il linguaggio di programmazione che hai scelto, può farti sentire spaesato. Non competente, impreparato. Ma quel che saresti sicuramente in grado di fare, a quel punto, sarebbe il documentarti e prepararti per realizzare la suddetta cosa. Passo dopo passo, di volta in volta. Ed è proprio questo che fa la differenza. Non si smette mai di imparare!
L’importanza del “sapersela cavare”
In relazione a quanto detto prima, è cristallino che, per essere elementi più validi nell’ ambito della programmazione informatica, prima ancora della conoscenza tecnica venga l’arte del “sapersela cavare”. Per quanto poco ortodosso e tecnico possa essere questo termine, riassume i valori che lo descrivono.
Nell’esempio visto poc’anzi ti si era prospettato un lavoro riguardante un linguaggio che conoscevi, ma che non avevi mai applicato per quello scopo. E quella era un’eventualità molto più concreta di quanto possa sembrare. Dunque, cosa sarebbe opportuno fare, in quel caso? Sicuramente le risposte sono variegate, ma prima tra tutte verrebbe in mente un’approfondita ricerca su internet: qualcuno magari ha già affrontato il problema in qualche modo! O, magari, potresti trovare delle librerie o dei moduli di qualche tipo che possano semplificarti il lavoro!
È in tal senso che parliamo del “sapersela cavare” poiché, spesso, ti verrà assegnato un incarico e il tuo scopo sarà quello di portarlo a termine, anche nei casi in cui non ti venga detto esplicitamente come fare. La vera mente creativa che sta dietro alla soluzione del problema sei tu, il tuo pensiero laterale; così come è tua la scelta del metodo da utilizzare per risolvere il suddetto problema.
Linguaggio singolo o preparazione full stack?
Fatte queste doverose premesse, torniamo in linea con la nostra domanda iniziale. È meglio imparare a programmare con un linguaggio singolo o aspirare da subito ad una preparazione full stack? Analizziamo pro e contro di ogni scelta.
Linguaggio Singolo – PRO:
Sicuramente uno dei vantaggi è la semplicità, imparare a programmare in un singolo linguaggio è più semplice che impararne diversi. L’altro vantaggio è la possibilità di scelta. Se hai intenzione di specializzarti in un linguaggio singolo, puoi scegliere tra i linguaggi di programmazione più richiesti dall’azienda che ti interessa, o tra i linguaggi di programmazione più usati al momento.
Linguaggio Singolo – CONTRO:
Il possibile lato negativo riguarda il collocamento lavorativo in seguito. Essere preparato su un solo linguaggio ti instrada sicuramente in una ricerca lavorativa più settoriale, più di nicchia. E non è detto che nell' azienda che hai puntato venga usato esclusivamente quel linguaggio: spesso nella stessa azienda vengono utilizzati diversi linguaggi, spesso legati ad una certa categoria, ad esempio linguaggi di sviluppo backend o di sviluppo front end.
Preparazione Full Stack – PRO:
I pro di una preparazione Full Stack riguardano la completezza di una preparazione simile, che è, chiaramente, un plus, perché ti consente, ad esempio, di integrare parti di un linguaggio in un altro o, comunque, farli comunicare. Un altro vantaggio, a livello lavorativo, riguarda il fatto che molte aziende ricercano proprio questo tipo di preparazione completa, più facile da riscontrare.
Preparazione Full Stack – CONTRO:
Il contro di una preparazione full stack risiede, chiaramente, nella difficoltà di una preparazione simile, in quanto studiare diversi linguaggi di programmazione è, ovviamente, più complesso in termini di tempo e impegno rispetto allo studiarne uno singolo.
In conclusione, come sempre, questa è una scelta enormemente soggettiva e personale. Un nostro consiglio, tuttavia, sarebbe quello di seguire una preparazione full stack e, magari in seguito, approfondire e specializzarti in un linguaggio di programmazione che ritieni più consono alle tue attitudini