Qual è la differenza tra un ingegnere di sistema, un ingegnere del software, uno sviluppatore web e un informatico?

Non ci sono regole rigide e veloci per questi titoli nelle aziende. In alcune aziende, troverete un bel po' di sovrapposizione e/o "misclassificazione". Ecco la mia opinione molto soggettiva sulle cose che differenziano questi ruoli.

Web Developer -- Lavora sulla presentazione delle informazioni sul web, a volte includendo la logica di business quando c'è una scarsa stratificazione in un'applicazione multilivello. Le principali tecnologie utilizzate sono HTML, CSS, Javascript e framework basati su browser come Angular. Non è richiesto un background educativo specifico, anche se molti sviluppatori web hanno un'educazione formale che si concentra sulla programmazione, sul design dell'interfaccia utente o sul CS.

Ingegnere software -- Lavora su qualsiasi compito che richiede la progettazione e lo sviluppo di software. Non sono limitati alle tecnologie front-end (web). Il lavoro può essere in ambienti front-end (web) o back-end (server), o su applicazioni scritte per il desktop o per dispositivi mobili. Gli SWE generalmente eseguono compiti complessi di progettazione e codifica. Programmano usando qualsiasi tecnologia sia appropriata, che può variare dai linguaggi di scripting (per esempio python, ruby, ecc.) ai linguaggi di livello superiore (per esempio C++, Java, Objective C, ecc.). Generalmente, per queste posizioni è richiesta una laurea in CS o ingegneria del software o equivalente.

Ingegnere dei sistemi -- Lavora sui sistemi in un modo più olistico attraverso più tecnologie (inclusi software, hardware e processi umani). Di solito si occupano di questioni più ampie nella progettazione e creazione di sistemi, come requisiti, affidabilità, prestazioni, manutenzione, verifica, qualità, processo, logistica, ecc. Un ingegnere di sistemi avrà di solito una laurea in una disciplina ingegneristica.

Scienziato Informatico -- Di solito lavora su problemi che richiedono la conoscenza dell'informatica teorica. Se non lavora direttamente nella ricerca accademica, uno scienziato informatico applicherà la sua conoscenza della teoria (es. algoritmi, complessità, teoria del linguaggio, ecc.) per creare soluzioni a problemi irrisolti, cioè ricerca applicata. Il codice scritto dagli scienziati informatici è generalmente a livello di prototipo/prova di concetto. Una laurea CS avanzata è spesso richiesta per questo tipo di lavoro.

Per mettere queste cose nel contesto di un progetto specifico, considerate qualcosa come le mappe di Google. Gli sviluppatori web lavoreranno sulla presentazione della mappa nel browser. Un informatico lavorerà sugli algoritmi per memorizzare ed elaborare in modo efficiente i dati delle mappe. Gli ingegneri del software creeranno il codice a livello di produzione che implementa gli algoritmi creati dall'informatico, in particolare ingegnerizzando le parti più prosaiche del sistema per gestire l'affidabilità e la scala. Gli ingegneri dei sistemi creeranno le strategie per l'intero sistema, dall'analisi dei requisiti tecnici ai processi che raccolgono i dati di mappatura (compreso l'ottenimento di informazioni dai satelliti e da tutte quelle auto di Google che raccolgono informazioni di street-view), alla validazione, all'aggiornamento, al ciclo di vita dei dati, ecc.