@justRoxy: un consiglio, data l'eta'
Lascia perdere certificazioni Oracle e cose del genere. Servono SOLO all'azienda che deve assumere il ""pischello"" per sapere se quando lo meteranno a sviluppare, per lo meno sa scivere un programma che compila. Se anche funziona, e' ""grasso che cola""
Spannometricamente, se uno sa gia' programmare ragionevolmente in un qualunque linguaggio di programmazione, imparare la SINTASSI di un nuovo linguaggi e' questione di qualche ora/giorno/settimana (dipende da quanta differenza c'e' tra il nuovo linguaggio e quelli che si conoscono gia').
Ad esempio, se uno conosce il C++, Java lo impara in qualche ora, C# in qualche giorno (ci sono un paio di ammenicoli da comprendere), Python in qualche giorno, Haskell in una settimana (e' un linguaggio funzionale un po' ""strano"")
Il contenuto della libreria di sistema, a corredo del linguaggio, un po' di piu' (settimane/mesi/anni) perche' le librerie sono STERMINATE (almeno quella per Java). Ma tanto si puo' essere confidenti che:
1) di sicuro contiene le funzionalita' necessarie (filesystem, collezioni, multithreading, interfaccia utente, networking)
2) sono incluse o si trovano librerie di terze parti gia' pronte per le cose estremamente utili (connessione al database, serializzazione, XML, JSON, ...)
3) per le cose un po' piu' ""astruse"", ci si arrangia
Ma queste informazioni sono TUTTE facilmente reperibili su "Amazon"/"Google" e comunque basta mettersi li a leggere, non serve una competenza specifica.
MOLTO piu' complicato e' acquisire conoscenze TEORICHE su argomenti interessanti.
E' SU QUESTO che devi concentrarti ed investire tempo & danaro.
Ed e' QUESTO che ti serve per cercare lavori pagati bene.
Programare in Java lo sa fare anche il piscello con le sole superiori.
Conoscere i concetti di NLP e saper come usare una libreria di NLP (che contiene centinaia di algoritmi con decine di parametri ogn'uno) per un certo compito, e' TUTT'ALTRA faccenda.
Alcuni argomenti che a mio avviso vanno ASSOLUTAMENTE CONOSCIUTI BENE oggi sono:
1) un' OTTTIMA conoscenza di Statistica Descrittiva (teorema di Bayes, distribuzioni di probabilita', NON solo la Gaussiana, e TUTTO quello che ci sta' attorno - c'e' un intero mondo)
2) algoritmi di Machine Learning, Deep Learning
3) algoritmi di Natural Language Processing (NLP)
Ma ovviamente e' solo un'inidcazione.
Non sarebbe male Remote Sensing (potresti andare a lavorare all ASI - Agenzia Spaziale Italiana, o all'ESA - European Space Agency).
Questo per dire che il tuo futuro lo decidi in base a conoscenze specifiche in settori in cui contano le competenze TEORICHE,
non facendo parte della massa di programmatori con la triennale, acquistabili sul mercato all'ingrosso
Se poi riesci a collaborare in qualche articolo di ricerca, ti si aprono le porte dei laboratori di ricerca di tutto il mondo.
In questo contesto, un Dottorato e' anche meglio (in certi casi e' un requirement! Ma ci sono i ma )
Il risultato e':
pro: fai lavori decisamente piu' interessanti, e come stipendio prendi da un po' d piu' a molto di piu' a moltissimamente di piu' (se con Dottorato), di quanto prenderesti come "programmatore Java da cannone" (alias di "carne da cannone")
contro: ti tocca spostarti dall'Italia.
Ma sai come e':
Italia -> 800-1200/euro al mese. Con 20 anni di espereza 1800 eur/mese (praticamente una Donna delle Pulizie PLUS)
Resto del mondo: 2000-5000-10000/euro al mese (anche di piu', ma entrano in gioco gli ""agganci"" )
(NON SONO cifre irragiungibili! Dpende dall'esperienza, dalle competenze. Per i 10.000 ti servirebbe anche un Dottorato, ma non serve essere geni, solo essere professionali)
C'e' poco da ""decidere""