Cosa deve cambiare affinché Ingegneria del software diventi una professione formale?


11

A differenza di altre professioni (come contabilità, diritto, medicina, ecc.), Non esiste una certificazione a livello professionale per l'ingegneria del software.

Sono ben consapevole della moltitudine di certificazioni specifiche di tecnologia e metodologia che mirano a servire come prova di specializzazione ed esperienza, ma non esiste una società pubblica di ingegneria del software / ente governativo che stabilisca (e abbia il potere di valutare legalmente) standard professionali generalmente accettati .

Capisco che il software è una bestia dinamica - che è in parte arte, in parte scienza - ma mi chiedo se l'ingegneria del software abbia il potenziale per diventare una professione formale.

Cosa deve cambiare perché ciò accada, e sarebbe anche una buona cosa?

(Se qualcuno conosce la ricerca formale su questo argomento apprezzerei molto i riferimenti)



Aggiornare

Concordo con molti dei punti positivi sollevati di seguito per quanto riguarda l'attuale livello di certificazione in Ingegneria del Software. Trovo anche molto interessante il fatto che alcuni paesi trattino l'ingegneria del software come una professione, mentre altri no.

Sembra tuttavia che ci sia un po 'di sudore attorno al termine "professione formale" e al modo in cui si applicherebbe all'ingegneria del software. Penso che il problema chiave dell'ingegneria del software - e il motivo principale per cui non è una vera e propria professione - è che se sei un ingegnere del software certificato e, ad esempio, alcuni software che hai scritto per un ascensore non funziona e uccide le persone, la tua certificazione e / o appartenenza a un ente professionale formale non verrà revocata.

Certo, la tua azienda potrebbe essere citata in giudizio per milioni di persone, e potresti perdere personalmente il lavoro e guadagnare una cattiva referenza, ma in generale, sei protetto personalmente dallo scudo di responsabilità limitata a seguito dell'impiego da parte di detta società. In altre parole, e per quanto ne so, non esiste alcuna valutazione / esecuzione legale (a differenza di altre professioni formali e delle loro società di governo) che hanno il mandato di impedirti ufficialmente di negoziare una volta che hai fatto un colossale imbroglio .

Mi è piaciuta abbastanza la risposta che ha toccato il fatto che l'Ingegneria del Software - così com'è - è una meritocrazia, che non ha bisogno di essere una professione formale, e che questa è una buona cosa che non dovrebbe cambiare. Allo stesso tempo, penso che dobbiamo fare una chiara distinzione tra gli ingegneri software di software mission-critical rispetto agli sviluppatori di software vari / non critici.

Per quelli di voi che lavorano / hanno lavorato su software mission-critical - c'è qualche responsabilità personale? Sicuramente sono necessarie ripercussioni formali nel caso in cui l'ingegnere del software commetta un errore costoso?


3
Quali sono i vantaggi di diventare una professione formale?
Pieter B,

1
Molto localizzato. Qui in Quebec, devi essere parte dell'ordine degli ingegneri per poter essere chiamato ingegnere. Le stesse regole valgono per l'ingegnere del software. Viene fornito con il codice etico, le regole, l'assicurazione di responsabilità civile, ecc.
Jean-François Côté,

5
Camici da laboratorio, ovviamente. Con cravatte.
Ben Brocka,

2
@Pieter B: Come ti sentiresti di vedere un medico se non esistesse una professione formale che garantisca uno standard che tutti i dottori devono soddisfare?
Giorgio,

1
Ho votato per riaprire questa domanda. Non è un duplicato di "Gli ingegneri del software possono diventare ingegneri professionisti certificati?": Quella domanda pone delle scelte di carriera in considerazione dello stato attuale della professione. Questa domanda si pone circa il divario tra quello stato e uno stato desiderato percepito, e come agire per colmare tale divario. Questi sono argomenti diversi.

Risposte:


15

Sulla base delle informazioni disponibili, credo che l'ingegneria del software sia già una professione formale. Potrebbe non essere ampiamente accettato come tale, ma soddisfa i criteri generalmente accettati per le caratteristiche di una professione.

Da articolo di Wikipedia su Professione :

Vi è un considerevole accordo sulla definizione delle caratteristiche di una professione. Hanno "un'associazione professionale, una base cognitiva, formazione istituzionalizzata, licenze, autonomia lavorativa, controllo dei colleghi ... (e) codice etico" [18] a cui poi aggiunge Larson "elevati standard di eccellenza professionale e intellettuale, "(Larson, p. 221) che" le professioni sono occupazioni con potere e prestigio speciali ", (Larson, px) e che comprendono" un gruppo d'élite esclusivo ", (Larson, p. 20) in tutte le società.

Questo cita The Rise of Professionalism di Magali Sarfatti Larson : un'analisi sociologica ampiamente. La ricerca di "caratteristiche di una professione" tende a condurre risultati simili.

In che modo l'ingegneria del software si confronta con queste caratteristiche?

  • Associazione professionale Esistono numerose associazioni professionali per ingegneri del software. L' IEEE e più specificamente l' IEEE Computer Society servono professionisti che lavorano nel campo dell'ingegneria in tutto il mondo, con l'IEEE Computer Society focalizzata specificamente su ingegneri informatici e software. L' ACM è un'altra organizzazione professionale per professionisti che lavorano nel campo dell'informatica, generalmente nelle Americhe. C'è anche la British Computer Society , che si occupa di vari aspetti delle professioni nella tecnologia dell'informazione e della comunicazione, generalmente nel Regno Unito.

  • Base cognitiva Il corpo di conoscenza dell'ingegneria del software è sponsorizzato da IEEE, Boeing, National Research Council Canada, Raytheon, Construx Software, Canadian Council of Professional Engineers, MITER Corporation, NIST, Rational, SAP (per la versione 2004). È stato avviato specificamente come un passo verso "rendere l'ingegneria del software una legittima disciplina ingegneristica e una professione riconosciuta" .

  • Formazione istituzionale negli Stati Uniti, i programmi di informatica, informatica e ingegneria del software possono essere accreditati da ABET . In Canada, i programmi di informatica e ingegneria del software sono accreditati dal CIPS . Queste organizzazioni definiscono standard minimi e risultati attesi per gli studenti che si laureano da un programma accreditato per consentire loro di funzionare in un ambiente professionale. L'IEEE offre anche due esami basati sull'ente di conoscenza dell'ingegneria del software: l' esame Associate di sviluppo software certificato per studenti universitari (o laureandi di recente laureati) e l' esame Professional Development Software Development per professionisti di metà carriera.

  • Licenza A partire da aprile 2013, NCEES offre un esame di ingegneria professionale in ingegneria del software . Viene offerto stato per stato negli Stati Uniti. Tuttavia, l'esame di Software Engineering PE non è attualmente offerto da tutti gli stati e ancora meno richiedono la licenza. Questo articolo, pubblicato nel numero di novembre / dicembre 1999 del software IEEE, discute i requisiti di licenza nello stato del Texas e una breve discussione sulle licenze in Ontario e British Columbia, Canada e Regno Unito. In Texas, è necessaria una licenza solo per la progettazione, il collaudo o l'implementazione di sistemi embedded o in tempo reale che "richiedono una comprensione dettagliata dei componenti elettrici o meccanici ingegnerizzati" e per i sistemi software per "dispositivi meccanici, dispositivi elettrici e sistemi di alimentazione "- una quantità relativamente piccola di lavoro di sviluppo software. Negli stati che offrono licenze, lo scenario peggiore è l'azione disciplinare, le sanzioni o la perdita della licenza qualora un cliente o un datore di lavoro presenti un reclamo. Tuttavia, l'unico vero danno arriva negli stati che richiedono una licenza - a meno che la licenza non sia richiesta per fare il lavoro, perderla non significa nulla.

  • Codice etico ACM e IEEE Computer Society hanno creato un Codice etico e di pratica professionale di ingegneria del software . Negli Stati Uniti, i laureati dei programmi di ingegneria accreditati ABET, compresi i programmi di ingegneria del software, possono anche aderire all'Ordine dell'Ingegnere , che mantiene un codice etico che generalmente si applica agli ingegneri professionisti.

  • Autonomia di lavoro, controllo dei colleghi, elevati standard di eccellenza professionale e intellettuale Questi sono spesso visibili in un ambiente in cui l'ingegneria del software è considerata una disciplina ingegneristica. Ciò significa che non tutti i datori di lavoro (o liberi professionisti) considerano lo sviluppo del software come ingegneria.


6
90%, o arriverei persino al punto di dire che il 99% dei programmatori probabilmente non sa nemmeno che esiste IEEE CS. Se il 99% dei medici non appartenesse all'AMA, avrei molta meno fiducia nella professione.
Jonathan Rich,

3
@JonathanRich - Tutti quelli che conoscevo al college si sono uniti almeno all'IEEE. Dove hai inventato i tuoi numeri? Ti sei connesso a IEEE quindi hai effettivamente dei numeri di abbonamento effettivi?
Ramhound,

2
@Ramhound: quando ero all'università, la gente era a conoscenza dell'IEEE ma pochi sembravano mai aderire. Inoltre, la mia scuola aveva un programma di informatica , non un programma di ingegneria del software , altre scuole avevano corsi di programmazione informatica . Pochissimi avevano l'ingegneria del software , anche se questo inizia a cambiare man mano che le scuole ottengono l'accreditamento per i loro corsi. Inoltre, non eravamo negli Stati Uniti, non siamo sicuri che ciò abbia alcun impatto sulla partecipazione dell'IEEE.
FrustratedWithFormsDesigner

11
@JonathanRich, il 90% dei programmatori non sono ingegneri del software.
Filippo,

6
@Philip E qui sta il problema. Sei un programmatore? Uno sviluppatore? Uno sviluppatore di software? Un ingegnere del software? Un analista di sistemi? Quali sono professionali e quali no? Hai bisogno di un ingegnere del software per configurare il tuo sito WordPress? Dovresti lasciare che uno sviluppatore si avvicini alla tua piattaforma di data warehousing interna? Mi auguro vivamente che l'ingegneria del software sia stata affrontata in modo più professionale di quanto non lo sia dal 90% delle persone con cui ho lavorato, ma quando hai persone che vogliono pagare un DBA in meno rispetto al ragazzo che falcia il tuo prato, non lo sei andando a prendere le persone migliori.
Jonathan Rich

4

Un ente professionale ampiamente riconosciuto e accettato per sviluppatori software / ingegneri / architetti / ecc. Non sarebbe una buona cosa.

Attualmente, questo è uno dei pochi campi che possono fungere da meritocrazia. Come in, non mi interessa quale grado hai (o se ne hai uno), quanta anzianità hai, quali lingue conosci, ecc. È relativamente facile capire se sei un buon sviluppatore o no e alla fine è l'unica cosa che conta. cioè puoi fare le cose?

Attualmente sei misurato dalla tua abilità, non da un accreditamento che qualcuno ti ha assegnato. E questa è una buona cosa buona (tm).


2
La somiglianza con la prostituzione è leggermente sconcertante ....
mattnz

@mattnz Si chiama prostituzione intellettuale e la mia tariffa oraria è probabilmente inferiore a quella tradizionale.
MrFox,

Grazie per la risposta perspicace @MrFox. Vorrei prenderti un po 'più in là il cervello se posso. Se medici / commercialisti / avvocati commettono un errore critico / costoso, rischiano di perdere la loro certificazione e di essere esclusi da ulteriori scambi. Gli ingegneri del software, d'altro canto, non corrono rischi di questo tipo, dal momento che raramente sopportano di perdere denaro (a causa della responsabilità limitata concessa loro dalle società da cui sono assunti). Tutto ciò che possono perdere è il loro attuale lavoro e la loro reputazione. Alla luce di ciò, pensi che avrebbe senso avere una società formale per governare le migliori pratiche di ingegneria del software?
Kosta Kontos,

2
@KostaKontos Considerare cosa significherebbe nel mondo reale: si otterrebbero violazioni se non si scrivessero test unitari o non si disponesse di documentazione sufficiente? O perderesti la licenza se trasferissi il codice in un ambiente di produzione con un difetto di sicurezza? Sarebbe una buona cosa per il campo? La mia argomentazione è che ciò aggiungerebbe molta burocrazia, politica, incolpazione e aumenterebbe semplicemente i profitti delle compagnie assicurative attraverso ogni sviluppatore che deve acquistare un'assicurazione per negligenza. È un pensiero interessante però. Scommetto che non è ancora successo perché fare causa ai propri ingegneri è una cattiva idea.
MrFox,

0

Niente deve cambiare.

Come sottolineato da Thomas , l'ingegneria del software è già una professione. Può essere chiamato ingegneria, programmazione, hacking e / o creazione, ma è come professione e molte persone ci fanno soldi.

Penso che la tua domanda riguardi le licenze.

Al momento non esiste una licenza formale per l'ingegneria del software. Chiunque abbia abbastanza intelligenza e capacità di programmazione può essere assunto e pagato per la creazione di codice rispetto a quello eseguito su una macchina o un dispositivo.

Ciò è diverso dalle altre industrie (la legge e la medicina sono esempi citati nella domanda). È richiesta una licenza per tali professioni. Chiunque può guidare un'auto, ma per guidarne una legalmente devi avere una patente dirvers è un altro esempio. Chiunque può programmare, nessuna licenza o certificazione richiesta.

Ora, credo che la licenza sia buona in quanto dimostra che qualcuno ha la capacità di fare qualcosa (come guidare un'auto) e conosce i dettagli delle regole (della strada).

Una licenza simile potrebbe essere richiesta per l'ingegneria del software, ma non credo che farebbe molto bene. In effetti ci sono molti driver con licenza che sono driver orribili, quindi solo perché hai una licenza non significa che sei un buon driver o programmatore.

Una licenza crea una barriera all'ingresso, che in questo settore non sarebbe una buona cosa, quindi non vedo alcun beneficio percepito da tale licenza.

Le aziende che assumono ingegneri del software dovrebbero sicuramente testare l'abilità di quel potenziale programmatore con un "test di programmazione" (e non sto parlando del tipo di buzz fizz) in base al set di abilità necessario. I programmatori con "certificazioni" hanno un bell'aspetto sulla carta, ma dovrebbero davvero essere messi alla prova con un test del mondo reale per valutare esperienza e attitudine.


2
"I programmatori con" certificazioni "stanno bene sulla carta", no, non lo fanno.
Filippo,

0

Penso che dovrebbe essere possibile diventare uno sviluppatore di software certificato superando un esame nel modo in cui un avvocato supera un esame di avvocato. Penso anche che i programmatori non certificati dovrebbero essere ancora in grado di operare come programmatori. La differenza è che i datori di lavoro sarebbero in grado di fare pubblicità in modo specifico per i programmatori certificati se è quello che vogliono, e un programmatore certificato verrebbe con certe garanzie di responsabilità, oltre a un prezzo più alto.

Sono d'accordo con il poster che afferma che lo sviluppo del software è un casino senza responsabilità. Non penso che debba essere così. Ci sono sviluppatori che vogliono creare un buon software e sono disposti a renderne conto. Abbiamo solo bisogno di un modo per distinguerci.

Sviluppo software da oltre 20 anni. Non pretendo che questo mi renda un grande sviluppatore da solo, ma penso di essere uno sviluppatore abbastanza bravo. Il problema è che devo dimostrare costantemente perché sono uno sviluppatore migliore di ogni bambino che ha imparato a programmare nel suo tempo libero e desidera lo stesso lavoro come me. Per non parlare delle legioni di sviluppatori "offshore" che promettono di fare lo stesso lavoro per una frazione del denaro. In questo momento ci vuole molto sforzo. Devo fornire campioni di lavoro, referenze, fare prove, fare interviste. Potrei facilmente passare una brutta giornata, fare un errore durante un test e essere squalificato. Preferirei solo dire "sì, sono uno sviluppatore certificato ed ecco il mio certificato". Dovrei ancora fare interviste, ma almeno competerei solo con altri sviluppatori certificati.


Grazie per la risposta perspicace. Pensi che dovrebbe esserci un minimo di esperienza lavorativa richiesta prima che gli sviluppatori siano in grado di sostenere il loro "esame da bar"? Simile a come avvocati / commercialisti devono completare da due a tre anni di articoli. E se ci fosse questo requisito minimo, pensi che il lavoro stesso dovrebbe essere standardizzato in una certa misura, in modo da garantire la coerenza dell'esperienza acquisita attraverso la professione?
Kosta Kontos,

-2

Non lo farà mai, almeno non del tutto. Il software è un mezzo, come la vernice. Ci sono persone che fanno lavori di verniciatura su scala industriale di grandi strutture, ci sono persone che progettano nuove vernici per eseguire standard elevati, ma ci sono anche persone che acquistano vernice per fare lavori su piccola scala come dipingere il loro capannone, e altri ancora che potrebbero mescolare la propria vernice, ma basta usarla per dipingere immagini di gatti.

Allo stesso modo, mentre potevo vedere un futuro in cui il software di sicurezza e / o finanziario necessitasse di ingegneri accreditati che ci lavorano, non ci sarà mai bisogno di persone che producano software per l'arte o l'intrattenimento. Cosa deve cambiare per ottenere la sicurezza o il software finanziario necessario per avere ingegneri accreditati? Bene, proprio come quelle altre professioni richiederebbe una legge per imporlo.


4
In che modo è diverso rispetto ad altre discipline ingegneristiche? Prendiamo l'ingegneria civile. Chiunque può costruire un ponte nel prato sul retro di un torrente. Ma non tutti possono costruire un ponte autostradale sopra un lago. Penso che possa essere applicato anche a molte altre discipline ingegneristiche, ed è comunemente accettato che l'ingegneria sia una professione.
Thomas Owens

@ThomasOwens questo è vero, tuttavia con il software non abbiamo una parte formale "non tutti possono costruire un ponte autostradale", che verrà comunque
jk.

2
Non è vero. Non tutti possono costruire il software avionico per un jet commerciale. O il software di controllo per una macchina per radioterapia. Esistono numerosi software controllati, regolamentati e devono essere previsti determinati standard. Tuttavia, fino a poco tempo fa, non c'erano le stesse licenze associate ad altre discipline ingegneristiche.
Thomas Owens

1
@ThomasOwens Come ingegnere informatico che lavora su software avionici per un jet commerciale (OBIGGS), sì, in realtà chiunque potrebbe probabilmente costruirlo. Il software non è poi così complicato. Ma i clienti sono DAVVERO schizzinosi sul fatto che sia robusto e sicuro che non esploderà. Proprio come chiunque potrebbe costruire un bridge, malamente, chiunque potrebbe probabilmente codificare male un'unità OBIGGS. L'aspetto professionale deriva dai test, dal processo, dall'affrontare DO-178b e dalla capacità di dimostrare con sicurezza che non cadrà dal cielo quando attraverserà la linea di data internazionale.
Filippo

3
"Non esiste un analogo della fisica nel software": esiste, si chiama matematica o qualche altro metodo formale. E infatti, per i software mission-critical la maggior parte del lavoro va nella specifica, verifica e test e solo il 10% del lavoro va nella codifica effettiva. Solo un software non mission-critical può essere sviluppato in modo agile, tentativi ed errori (il modo in cui si costruisce un ponte nel loro prato), ma provare a utilizzare lo stesso metodo per costruire software avionico!
Giorgio,

-2

Il software non è una professione, né lo sarà mai.

"Una professione nasce quando qualsiasi commercio o occupazione si trasforma attraverso lo sviluppo di qualifiche formali basate su istruzione, apprendistato ed esami, l'emergere di organismi di regolamentazione con poteri di ammettere e disciplinare i membri e un certo grado di diritti di monopolio".

Questa descrizione non corrisponde affatto al software.

Prima di tutto, chiunque abbia un interesse per il software può uscire e provare a trovare un lavoro per lo sviluppo di software. Molte di queste persone hanno titoli universitari totalmente estranei alla programmazione informatica e molti non hanno alcun titolo. Non c'è niente che impedisce a nessuno di questi gruppi di diventare programmatori di software.

Il software non può diventare una professione perché i membri "autorizzati" diventano responsabili dei danni che causano e della loro negligenza. L'80-90% degli sviluppatori perderà il lavoro entro un paio d'anni solo per quello.

In generale, la qualità del software è atroce, soggetta a bug e semplicemente non molto ben fatta. È degno di essere una professione? Prevedi che si interromperà perché le persone ottengono la licenza? Se un'organizzazione professionale non ha standard elevati e qualità professionale, non ha senso. Ciò va direttamente contro la pratica del settore. Scrivere software di qualità, robusto e funzionante è contro i principi della maggior parte delle aziende là fuori, perché il time-to-market, il costo, è abbastanza buono, non voglio rompere qualcos'altro cercando di riparare il software rotto viene visto come più importante del software di livello professionale.

Inoltre, per quanto riguarda la negligenza. Come hai intenzione di dimostrare che uno da più profondo è un altro da incolpare. Nel software è facile puntare le dita ed entrambi gli sviluppatori "hanno ragione". Di chi è la colpa quando quello sviluppatore utilizza l'API non documentata nascosta nelle viscere del sistema operativo e quindi il fornitore del sistema operativo cambia la sua funzione o la rimuove?

Buona fortuna con quella cosa dell'organismo di regolamentazione. Vediamo il congresso dire no a Microsoft quando Microsoft chiede loro di uccidere quel disegno di legge perché consentirà loro di assumere sviluppatori "con licenza". Senza quell'organismo di regolamentazione, allora chi si unirà a un'organizzazione che ha il diritto di disciplinarti e addebitarti le quote soprattutto se non c'è valore aggiunto come ottenere i diritti di monopolio senza l'organismo di regolamentazione.

Per quanto riguarda, sarebbe una buona cosa richiedere la licenza? Assolutamente, per coloro che possono ottenere l'accreditamento. La tua paga aumenterebbe drammaticamente con il tuo nuovo monopolio trovato.

Tuttavia, per tutti gli altri ... l'uso della tecnologia informatica nelle imprese probabilmente diminuirebbe insieme al rapido ritmo di avanzamento che vediamo oggi. Vi saranno certamente ostacoli ai nuovi progressi del software, come le lingue e le metodologie di progettazione. Dopo tutto, chi vorrà spingere per nuovi modi di fare cose che richiederanno anni di riqualificazione per mantenere la licenza. La maggior parte degli sviluppatori con licenza preferirà mantenere le cose esattamente come sono in questo senso.


aggiungi alcuni riferimenti per supportare le tue affermazioni (che per me hanno un certo senso ma non importa), e rimuoverò il voto negativo
moscerino del
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.