Salve gente.
Gironzolando su StackOverflow mi sono imbattuto in questa interessante domanda alla quale ha risposto un buon numero di persone.
Una risposta/domanda-retorica, in particolare mi ha colpito (e fatto piegare in due dalle risate):
Isn’t the difference between a programmer and a software developer the same as the difference between toilet paper and bathroom tissue–in other words, just a prettier sounding term that looks better on a résumé?
![]()
Esiste davvero una differenza nella nomenclatura?
Credo di sì, ma non in Italia: da noi vanno di moda svariati termini, talvolta piuttosto imprecisi. Ad esempio:
- programmatore (universale)
- sviluppatore (accettabile)
- informatico (accettabile ma generico)
- analista programmatore (psicologo del computer?)
- softwarista/firmwarista (orrendi)
- impiegato tecnico (indefinito)
In coda allo sportello…
A parte sviluppatore e programmatore (nonchè la “versione psicologica” di quest’ultimo
), nessuno degli altri termini credo renda giustizia a quello che uno davvero fa per lavoro.
Il problema si verifica soprattutto quando tocca compilare qualche scartoffia burocratica o qualcuno non-tecnico (es: impiegato ad uno sportello) chiede di descrivere in termini comprensibili il vostro lavoro, possibilmente in fretta… Che fare?
In questi casi, per evitare inutili perdite di tempo (e situazioni imbarazzanti), io e la Bau abbiamo adottato il genericissimo impiegato tecnico che, se non altro, suona meglio di programmatore ed è immediatamente comprensibile anche ai non-tecnici.
Questo fatto è divertente, considerata l’innata presunta anglofilia di noi italiani…
Sarei curioso di sapere come vi comportate in questi casi.
Fra simili
In un contesto tecnico, ossia quando si può parlare tranquillamente in jargon o quasi, la situazione è profondamente diversa e spesso anche noi italiani ci serviamo dei termini inglesi-americani.
Talvolta li usiamo per sfoggiare un certo status, altre volte per intenderci al volo con persone straniere. Ci sono però casi in cui li adottiamo perchè in italiano non ci sono sfumature degne di essere usate.
Qualcuno potrebbe anche avanzare l’idea, tutt’altro che scontata, che siccome l’informatica è zeppa di termini inglesi-americani, per coerenza dovremmo usare sempre e solo quelli.
Il problema a questo punto, cambiando la lingua, si sposta: supponendo di voler usare termini inglesi per definire il nostro lavoro, ecco che ci ritroviamo a dover scegliere una delle tantissime sfumature a disposizione, una per ciascun tipo di figura professionale.
Le tre più “comuni” sono:
- programmer (programmatore)
- software developer – SD (sviluppatore di software)
- software engineer – SE (ingegnere del software)
Apparentemente le prime due individuano figure professionali distinte ma, in fondo, qual’è il programmatore che non sia anche anche uno sviluppatore, poco o tanto che sia?
Diciamo pure che per quanto il nostro lavoro alla fine si riduca a scrivere codice, nessuno di noi ammetterebbe mai di fare solamente il dattilografo, essere cioè un code monkey.
Non deve quindi stupire che i termini programmatore/programmer, nel tempo, siano diventati sinonimi di “ultimo anello della catena programmativa”, figure decisamente poco trendy dalle quali ci si vuole affrancare appena possibile.
Lo standard ormai è software developer con software engineer usato per rappresentare qualcosa in più come, per esempio, un certo livello di esperienza nel campo in cui si opera, elevate capacità di progettazione e sviluppo anche in senso algoritmico/architetturale, titoli accademici/professionali, …
Ci sono aziende – Google ad esempio – dove di fatto non esistono SD ma solo SE (questo forse è dovuto anche agli stringenti requisiti minimi che pare abbia adottato per le assunzioni).
In altre aziende gli SE assumono altri nomi, più “caratteristici”: ad esempio in Microsoft si chiamano Software Design Engineer (SDE) in cui l’aspetto della progettazione (design) appare a chiare lettere.
Esistono poi prefissi addizionali, per indicare il differente livello di esperienza in un campo e/o all’interno dell’azienda: senior e junior sono la norma, anche se nessuno tende di solito a scrivere junior per evitare di passare per un novellino.
Sfortunatamente non esiste una norma universalmente accettata per determinare il passaggio da junior a senior: di certo la sola “anzianità”, intesa come pura e semplice presenza in azienda, pare non sia un requisito valido. Almeno non all’estero…
A tale riguardo vi consiglio l’interessante domanda “Is there a minimum age/years of experience to be a “senior”?“, sempre tratta da StackOverflow.
Curiosità accademiche
Veniamo alla parte divertente: per fregiarsi del titolo di SE serve una laurea in ingegneria o comunque tecnica di qualche genere?
Contrariamente alla nostra mentalità italiana, la risposta è assolutamente no, almeno non in ambito internazionale. Medesima situazione per un altro titolo, considerato superiore a engineer, ossia architect.
Sentendo questa frase probabilmente alcuni di voi avranno alzato un sopracciglio in senso di perplessità o disappunto ma, che lo vogliate o no, la situazione in Italia è ben diversa da quella mondiale.
Per i più intransigenti circa il titolo di ingegnere del software vorrei segnalare un fatto abbastanza curioso, relativamente all’apposito corso di laurea.
Citando da Wikipedia: “nell’ordinamento universitario italiano, non esiste una laurea in ingegneria del software.”
Esistono certamente esami che vertono sulll’ingegneria del software, magari organizzati in curriculum, ma non esiste un intero corso di laurea dedicato a tale disciplina (o almeno con quel nome
).
La laurea in ingegneria informatica, propriamente, è l’equivalente di quella in “computer engineering” che, parafrasando la solita Wikipedia, “is a discipline that combines elements of both Electrical Engineering and Computer Science.
All’estero la situazione è ovviamente ben diversa: da anni ormai esistono corsi di laurea specifici in ingegneria del software (cfr. CCSE/SE2004, B.SE.) ma anche in questo caso per diiventare SE non è obbligatorio aver seguito tali corsi di laurea.
Ciau!