A parte il fatto che per diventare un professionista, come in qualunque settore, servono anni e tanto studio, come inizio devi partire dalla seguente considerazione:
realizzare un programma NON E' un problema di linguaggio di programmazione o libreria, ma di metodologia.
Il problema da affrontare consiste essenzialmente in:
dato il problema, generalmente mal posto (non si sa tutto o comuqnue saltano sempre fuori delle situazioni particolari da affrontare, le cosidette "rogne" ), sapere come scomporlo in componenti
sapere come realizzare ogni singolo componente
sapere come mettere assieme le diverse componenti per risolvere il problema
E' ovvio che la scomposizione in componenti dipende dal paradigma di programmazione utilizzato (ad oggetti, funzionale, logico, a regole, ...), e dalla disponibilita' di componenti gia' pronti.
E' ovvio anche che si devono conoscere i limiti e le potenzialita' dei componenti gia' pronti.
Come componenti gia' pronti puoi immaginare:
- librerie di terze parti per la stampa, la grafica, il calcolo, ...
- database
- application server
- hardware: architetture di rete, tipi di computer, tipi di reti, ecc..
Poi entra in gioco anche il settore per cui realizzerai il software.
Ogni settore ha le sue peculiarita':
- web
- mobile
- signal processimg
- robotica
- elaboarzione di immagine
- finanza
...
Il consiglio che ti si puo' dare e': va all'universita' ed impara quello che c'e' da imparare.