Inginerii software și programatorii de computere dezvoltă ambele aplicații software necesare pentru calculatoarele de lucru. Diferența dintre cele două poziții constă în responsabilități și în abordarea postului. Inginerii software folosesc principii și proceduri științifice bine definite pentru a livra un produs software eficient și fiabil.
Ingineria software tratează abordarea dezvoltării software-ului ca un proces formal, asemănător celui găsit în inginerie tradițională. Inginerii software încep prin analizarea nevoilor utilizatorilor. Proiectează software, îl implementează, îl testează pentru calitate și îl întreține. Ei instruiesc programatorii de computer cum să scrie codul de care au nevoie. Inginerii software pot sau nu să scrie niciunul dintre ei înșiși, dar au nevoie de abilități puternice de programare pentru a comunica cu programatorii și frecvent întâlnesc mai multe limbaje de programare.
Inginerii software proiectează și dezvoltă jocuri pe calculator, aplicații de afaceri, sisteme de control de rețea și sisteme de operare software. Sunt experți în teoria software-ului de calcul și limitările hardware-ului pentru care proiectează.
Întregul proces de proiectare software trebuie gestionat formal cu mult înainte de a scrie prima linie de cod. Inginerii software produc documente de proiectare îndelungate folosind instrumente de inginerie software asistate de computer. Inginerul software transformă apoi documentele de proiectare în documente de specificații de proiectare, care sunt utilizate pentru a proiecta codul. Procesul este organizat și eficient. Nu există o programare off-the-manșetă.
O caracteristică distinctivă a ingineriei software este următoarea de hârtie pe care o produce. Proiectările sunt semnate de către manageri și autoritățile tehnice, iar rolul asigurării calității este de a verifica urmele de hârtie. Mulți ingineri software recunosc că munca lor este de 70% documente și 30% cod. Este un mod costisitor, dar responsabil pentru a scrie software, acesta fiind un motiv pentru care avionica din aeronavele moderne sunt atât de scumpe.
Producătorii nu pot construi sisteme complexe de viață, precum aeronave, controale ale reactorilor nucleari și sisteme medicale și se așteaptă ca software-ul să fie aruncat împreună. Acestea necesită ca întregul proces să fie gestionat în detaliu de către ingineri software, astfel încât bugetele să poată fi estimate, personalul recrutat și riscul de eșec sau de greșeli scumpe la minimum.
În domenii critice pentru siguranță, cum ar fi aviația, spațiul, centralele nucleare, medicamentele, sistemele de detectare a incendiilor și plimbările cu coasterul rusesc, costul eșecului software poate fi enorm, deoarece viețile sunt în pericol. Capacitatea inginerului software de a anticipa problemele și de a le elimina înainte de a se întâmpla este esențială.
În unele părți ale lumii și în majoritatea statelor din SUA, nu poți să te numești inginer software fără educație formală sau certificare. Multe dintre companiile mari de software, inclusiv Microsoft, Oracle și Red Hat oferă cursuri pentru certificări. Multe colegii și universități oferă diplome în inginerie software. Inginerii de software pot aspira în domeniul informaticii, ingineriei software, matematicii sau sistemelor informatice.
Programatorii scriu codul conform specificațiilor date de către inginerii de software. Sunt experți în limbajele majore de programare pentru calculator. Deși de obicei nu sunt implicați în etapele de proiectare timpurie, pot fi implicați în testarea, modificarea, actualizarea și repararea codului. Scriu cod într-unul sau mai multe dintre limbajele de programare la cerere, inclusiv: