INGEGNERIA INFORMATICA: CUI PRODEST?

Si fa un gran parlare della necessità di ingegneri informatici: ma si sa di quello che si parla?
Qualche pensiero danzante, ad uso e consumo specialmente dei maturandi.
L'INGEGNERE NON PUO' FARE TUTTOMolte matricole all'inizio non sanno la differenza tra questi corsi di laurea, complici anche le guide all'orientamento che ad ogni corso dicono "In questo corso di laurea si otterrà una forte specilizzazione del campo coniugata ad un'elasticità mentale che permetterà al laureato di lavorare anche in campi diversi".
Bischerate: i passaggi di settore non sono mai banali e poi richiedono sempre la capacità di colmare l'esperienza di uno del settore, anche uno studente (quindi parlo di anni). Un matematico può risolvere problemi di economia? Si ma io tenderei a metterlo alle dipendenze di un economista, in linea di massima.
Per cui lasciate da parte incroci culturali e specializzatevi per bene negli argomenti base: il resto verrà da sè.
Anche se in effetti economia è più semplice di ingegneria... ;)
L'INGEGNERE INFORMATICO DEVE ESSERE UN BUON MATEMATICO
Non se la prendano gli hacker, ma dubito che un buon informatico non capisca nulla di matematica.
L'informatica è innanzitutto "capire come funzionano i sistemi macroscopici" e "calcolo". Per la prima bisogna studiare sistemi complessi (es. evoluzioni di termodinamica), per i secondi capire i meccanismi di calcolo.
Chi è un buon informatico? Chi realizza software complesso? No, ma chi riesce a minimizzare le lentezza ed a migliorare i processi di calcolo.
Quindi poche ciance: mettetevi esami di matematica (dicreta se possibile, perchè di analisi in effetti se ne vede poca: derivate ed equazioni differenziali ne vedrete giusto un po' negli esami di fisica e analisi: gli elettronici fanno molta più matematica del continuo di noi); nel piano magari rinviate esami dai nomi altisonanti ma che di sostanza hanno poco.
L'INGEGNERE INFORMATICO NON E' UN ELETTRONICO
Uh! Mi painge il cuore perchè a me elettronica era piaciuta (almeno, più di teoria dei segnali o di reti di telecomunicazioni; non che ci voglia molto. Per me peggio di queste solo un calcio sulle natiche ma vabbè...).
Volete lavorare nell'industria dei sistemi digitali dedicati nel lato del software? Ocio, dovete conoscere bene l'elettronica e non è affatto semplice. Per ora non c'è molto in Italia come imprese per cui temo sarete costretti poi a cambiare settore.
Non è un gran periodo per il silicio questo, almeno in Italia...
IMPARATEVI L'INGLESE E POI IL TEDESCOAlcuni testi sono in inglese che se scritti da Italiani: quindi mettetevi il cuore in pace: dovete imparare almeno a leggerlo e capirlo, anche da soli, sennò addio esame e laurea. Il sottoscritto si è fatto fuori per "Informatica 3" Programming Computer Languages di Carlo Ghezzi e Dino Mandrioli, che insegnano dove ho studiato io.
O così o così.
Dopo l'inglese, il tedesco perchè se non si muove la Germania non si muove nulla (come industria) ed in più serve per i nuovi paesi dell'Est (per il lavoro, non per la fauna femminile ;)).
Lo spagnolo ed il francese già mi pare siano meno importanti per il nostro settore (notizia desunta dal corriere della sera di novemre/dicembre 2006: era in uno speciale del lavoro del venerdì).
USATE E STUDIATE SISTEMI LIBERI (GNU/LINUX E *BSD)
Andate in un LUG vicino a voi: prendete un computer scassato ma funzionante; installateci sopra GNU/Linux (non usate una distribuzione semplice: usate Gentoo, Debian, Slackware, Archlinux) o un sistema BSD (direi FreeBSD).
Usatelo; studiate la documentazione; fate modifiche; createvi degli script; installate e disinstallate. L'informatica si capisce solo mettendoci le mani sopra.
Lasciate perdere Windows o Mac: USATE SISTEMI APERTI IN TUTTO! O sudate e capite per bene come funzionano le macchine o sarete tecnici buoni solo a digitare qualche tasto ma destinate a piantarvi alla prima occasione un po' eterodossa.
Vi ho avvisato.
IMPARATE C/C++
Oggi molte aziende richiedono Java, XML, database con tutto ciò che gira intorno. Io consiglio il C e poi il C++ comeprimi linguaggi. Java è più semplice e più veloce ma il C vi insegna a programmare per bene e vi da gli strumenti per mettere davvero le mani in pasta e ottimizzare il più possibile. il C/C++ sono come il latino ed il greco per l'umanista: oggi nessuno li usa nel quotidiano, ma quando c'è necessità sono una mano santa.
E' più semplice cominciare da C/C++ e poi imparare Java (perchè si consoce la struttura sotto) che non viceversa (dovreste infatti fare piazza pulita del consociuto)
PARTECIPATE AD UN PROGETTO OPEN SOURCE
Andate su
sourceforge o
freashmeat o altri siti dove ci sono progetti su cui potete lavorare liberamente (come tigris.org per l'ingegneria del software); vedetevi un progetto, se vi piace scaricatelo, vedete cosa va e cosa no, leggete la documentazione.
Mandate ad uno del progetto una mail in cui dite che avete visto il software e che pensavate di aggiustare una certa cosa E CHE SIETE DISPONIBILI, ANCHE SOLO A TRADURRE/AGGIUSTARE LA DOCUMENTAZIONE O A FARE DEI SEMPLICI TEST.
9,99 volte su 10 la risposta sarà (specie per la documentazione): VUOI COLLABORARE? A NOI FAREBBE PIACERE!
Fatelo. La documentazione va benissimo per iniziare visto che ce n'è poca specie in più lingue.
Collaborare ad un progetto (anche stupido) è un bel biglietto da visita per il mod professionale.
BUONA UNIVERSITA'
Se vuoi uscire di casa in Italia legalmente sono tutte uguali, in realtà penso di no. Io consiglio il
Politecnico di Torino (dove originariamente sarei dovuto andare) o il
Politecnico di Milano (quest'anno al
CEFRIEL 8° migliore gruppo di ricerca nell'ingegneria del software (campo in cui ho fatto la tesi) nel mondo, davanti Germania, Stanford e MIT di Boston: enjoy!). Meglio le grandi città e considera che Milano è il centro per l'informatica mentre Torino mi pare si stia risvegliando.
Altri centri buoni sono Pisa, Padova, Ancona (più per il lato elettronico però) ed il Politecnico di Bari. Catania è buona per l'elettronica per la presenza della ST ma è un altro campo.
Evitate sedi "allegre":perdereste solo il vostro tempo ed ORA non ve lo potete permettere.
L'INGEGNERE NON E' UN PROGRAMMATORE, PIUTTOSTO UNO SVILUPPATOREMolti usano i due termini come sinonimi: in realtà il programmatore programma ed amen; lo sviluppatore:
->programma;
->crea i test;
->scrive la documentazione;
->progetta l'architettura generale del sistema;
->verifica l'usabilità del programma;
->sente il cliente per la manutenzione del sistema,
->risolve i bug;
->scrive le specifiche software;
E' un bel po' diverso...
L'INGEGNERE DEVE CONOSCERE L'ECONOMIA
Si lo so è un'emerita rottura di scatole: per me economia è stato l'esame che più mi ha fatto stancato mentalmente.
Va studiata non la macroeconomia o le varie teorie (per questo basta leggersi il blog di
Ventinove Settembre e leggersi qualche libro della scuola marginalistica austriaca). A noi serve la microeconomia: cosa sono i centri di costo, come leggere un bilancio etc.
Prima o poi lasceremo lo sviluppo a basso livello del software ad altre persone più giovani e ci toccherà DIRIGERE UN TEAM DI SVILUPPO!!
SAREMO MANAGER!!
Ma di questo parleremo in futuro... con la laurea in tasca! ;)