Ciao, sono Francesco, Ingegnere Informatico, scrivo da Torino, laureato nel 2007 (specialistica) presso il Politecnico di Torino, alla tenera età di 25 anni. Attualmente sono impiegato presso una software house di Torino e faccio software per il mondo della finanza e la sicurezza informatica a livello aziendale.
Posso dirti una cosa, la differenza tra programmatore e analista dovrebbere essere netta e chiara a chiunque lavori in questo campo, ma ahimè il tuo amico ha anche molta ragione...almeno qui in Italia (non posso accusare nessuno all'estero perchè non saprei dirti se è vero anche lì) la situazione si presenta così:
1. Il programmatore è visto come un tuttologo e tutto fare, cioè, deve saper proporre una soluzione ad un problema/quesito, implementare e programmare la soluzione adottata, testare (e ovviamente configurare l'ambiente, sia quello di sviluppo che quello di produzione) e molte volte anche scrivere i vari manuali di installazione o utenti.
2. L'analista tecnico dovrebbe essere colui che date delle specifiche funzionali, deve tradurle sotto forma di specifiche tecniche, decidere l'architettura software e l'ambiente e l'imfrastruttura su cui bisogna lavorare. Questa figura praticamente in Italia non esiste (forse solo nelle grandissime realtà, tipo io la vedevo quando lavoravo in Motorola). Adesso viene svolta anche dal programmatore.
3. L'analista funzionale: traduce le esigenze del cliente in specifiche funzionali, guida l'analista tecnico nelle sue scelte, e normalmente fa anche da Tester (anche se teoricamente il Tester dovrebbe essere una figura a parte, fuori dal team, che non ha idea di come sia fatto il software. tranne che sapere solo quali sono le sue funzionalità, e quindi vedere il software dall'esterno come una scatola nera che interroga in tutti i modi possibili ed aspettarsi che ritorni i risultati attesi). Cmq, il Tester ormai è ricoperto dall'analista funzionale o dal programmatore, ma non è completamente vero che l'analista funzionale non esiste. Anzi ancora è una di quelle figura che tiene il suo campo e ruolo e la sua importanza all'interno di un team. Questo però non esclude che in piccole realtà di poche decine di persone, anche questo ruolo venga coperto da chi si occupa anche di programmare il software.
4. Tutto il managemant: dal project manager ai vari manager del settore o area aziendale .... beh, lì siamo su un'altro settore ed è meglio che per adesso non specifichiamo altro, ma probabilmente capirai che si occupano di tutt'altro tranne che la programmazione.
Cmq, discorsi a parte, vedi un pò tu ... se ti interessa la programmazione, ti conviene cambiare facoltà....tipo Informatica e non Ingegneria Informatica. In Ingegneria non ti insegnano a programmare, ma a progettare, pianificare, gestione costi e team e analisi, ma più di quella funzionale che tecnica. Se hai la passione per la programmazione, o passi ad Informatica, o basta anche imparare qualche linguaggio serio (che non è ovviamente quello di programmare un fogio excel), se ti dovessi consigliare, tantissimo C e C++ e poi il resto lo impari in una settimana ognuno (da C# a Java e via dicendo).
Una cosa di cui mi sono reso conto in questi anni è che gli anni che passi all'università li puoi coprire moltissimo con l'esperienza...cioè, se ti impegni, 5 anni di università e 5 anni di lavoro nello stesso settore sono equivalenti (certo l'università ti da qualche nozione in più, ma se calcoli che potresti anche uscire fuori corso, come potresti anche perdere qualche anno per imparare lo stesso con l'esperienza, allora ti accorgi che sei alla pari).
Spero di averti dato qualche dritta ... se ti serve altro, chiedi pure!
Ciao,
Francesco