Ingegneri del software e programmatori di computer sviluppano entrambi le applicazioni software necessarie per i computer funzionanti. La differenza tra le due posizioni risiede nelle responsabilità e nell'approccio al lavoro. Gli ingegneri del software utilizzano principi e procedure scientifici ben definiti per fornire un prodotto software efficiente e affidabile.
L'ingegneria del software considera l'approccio allo sviluppo del software come un processo formale molto simile a quello riscontrato nell'ingegneria tradizionale. Gli ingegneri del software iniziano analizzando le esigenze degli utenti. Progettano software, lo distribuiscono, lo testano per la qualità e lo mantengono. Istruiscono i programmatori di computer a scrivere il codice di cui hanno bisogno. Gli ingegneri del software possono o meno scrivere il codice da soli, ma hanno bisogno di forti capacità di programmazione per comunicare con i programmatori e sono spesso fluenti in diversi linguaggi.
Gli ingegneri del software progettano e sviluppano giochi per computer, applicazioni aziendali, sistemi di controllo della rete e sistemi operativi software. Sono esperti nella teoria del software di elaborazione e nei limiti dell'hardware per cui progettano.
L'intero processo di progettazione del software deve essere gestito formalmente molto prima che venga scritta la prima riga di codice. Gli ingegneri del software producono lunghi documenti di progettazione utilizzando strumenti di ingegneria del software assistita da computer. L'ingegnere del software converte quindi i documenti di progettazione in documenti di specifica di progettazione, che vengono utilizzati per progettare il codice. Il processo è organizzato ed efficiente. Non è in corso alcuna programmazione immediata.
Una caratteristica distintiva dell'ingegneria del software è la traccia cartacea che produce. I progetti vengono approvati dai gestori e dalle autorità tecniche e il ruolo dell'assicurazione della qualità è quello di controllare la traccia cartacea. Molti ingegneri del software ammettono che il loro lavoro consiste nel 70% di scartoffie e nel 30% di codice. È un modo costoso ma responsabile per scrivere software, che è una delle ragioni per cui l'avionica negli aerei moderni è così costosa.
I produttori non possono costruire complessi sistemi critici per la vita come aeromobili, controlli di reattori nucleari e sistemi medici e si aspettano che il software venga lanciato insieme. Richiedono che l'intero processo sia gestito in modo completo dagli ingegneri del software in modo da poter stimare i budget, reclutare il personale e ridurre al minimo il rischio di guasti o errori costosi.
In aree critiche per la sicurezza come l'aviazione, lo spazio, le centrali nucleari, la medicina, i sistemi di rilevamento incendi e le montagne russe, il costo del fallimento del software può essere enorme perché le vite sono a rischio. La capacità dell'ingegnere del software di anticipare i problemi e di eliminarli prima che si verifichino è fondamentale.
In alcune parti del mondo e nella maggior parte degli Stati Uniti, non puoi definirti un ingegnere del software senza istruzione o certificazione formale. Diverse delle grandi società di software, tra cui Microsoft, Oracle e Red Hat offrono corsi di certificazione. Molti college e università offrono lauree in ingegneria del software. Gli aspiranti ingegneri del software possono specializzarsi in informatica, ingegneria del software, matematica o sistemi informatici.
I programmatori scrivono il codice secondo le specifiche fornite dagli ingegneri del software. Sono esperti nei principali linguaggi di programmazione informatica. Sebbene di solito non siano coinvolti nelle prime fasi di progettazione, potrebbero essere coinvolti nel test, nella modifica, nell'aggiornamento e nella riparazione del codice. Scrivono il codice in uno o più dei linguaggi di programmazione richiesti, tra cui: