Risposte:
Quando assumiamo, cerchiamo una distinzione tra qualcuno che sarà in grado di aiutarci a progettare il nostro sistema, definire i processi, creare specifiche tecniche, implementare refactoring avanzato, ecc. E qualcuno che ci aiuterà a completare le attività di programmazione da una lista di controllo . Credo che potresti chiamare il primo un ingegnere del software e il secondo un programmatore .
Dipende davvero dall'azienda, poiché non credo che esista un quadro giuridico per imporre una denominazione o un'altra, o almeno non di cui io sia a conoscenza e questo potrebbe variare da paese a paese (ad esempio, l'uso del termine "ingegnere" è in realtà abbastanza regolamentato in Francia, ma ci sono varianti che sono consentite per i casi "abusivi").
Detto questo, la tendenza generale va così:
Una posizione di programmatore è di solito quella di un professionista assunto per produrre il codice di un programma per computer . Implica che sai come scrivere il codice , capire un algoritmo e seguire le specifiche . Tuttavia, di solito si ferma lì in termini di responsabilità.
Una posizione dello sviluppatore è generalmente considerata un super-tipo della posizione del programmatore . Comprende le stesse responsabilità, oltre alla capacità di progettare e progettare un componente software e di scrivere la documentazione tecnica per esso (comprese le specifiche). Sei in grado - almeno tecnicamente - di guidare altri (quindi programmatori), ma non necessariamente una squadra (arriva il fuzz ...)
Una posizione di ingegnere di solito implica che sei uno sviluppatore che ha un tipo specifico di laurea , una certa conoscenza dell'ingegneria ed è in grado di progettare un sistema (come in: una combinazione di componenti / moduli software che insieme formano un'intera entità software) . Fondamentalmente, vedi un quadro più ampio e sei in grado di progettarlo, spiegarlo e separarlo in moduli più piccoli .
Tuttavia, tutto ciò è discutibile e, come ho già detto, non ci sono requisiti legali di cui sono a conoscenza nei paesi degli Stati Uniti / Regno Unito . Detto questo, in Francia puoi definirti un "ingegnere" solo se vieni da una scuola di ingegneria (riconosciuta dalla Commission des Titres d'Ingenieurs o qualcosa del genere). Non puoi dire di avere una "Laurea in Ingegneria", ma puoi dire che hai una "Laurea in Ingegneria" se hai studiato una disciplina che rientra nel settore dell'ingegneria e delle tecnologie.
È possibile che alcuni paesi abbiano una distinzione simile, proprio non lo so davvero.
Tornando al titolo di ingegnere del software ... Una volta, uno dei miei insegnanti ha detto alla nostra classe - e giustamente - che non esiste, ad oggi, la cosiddetta "ingegneria del software" . Perché progettare qualcosa (che si tratti di un edificio, un veicolo, un componente hardware ...) significa che sei in grado di immaginarne il design e tutte le fasi della sua produzione e di prevedere con precisione le risorse di cui avrai bisogno, e quindi il costo di produzione.
Questo è vero per la maggior parte delle "vere" discipline ingegneristiche. Ci sono fluttuazioni, ovviamente (i prezzi dei materiali varieranno nel tempo, per esempio), ma ci sono modelli teorici molto limitati (per la progettazione e la pianificazione) e modelli empirici (per mantenere praticamente uno qualsiasi dei primi entro limiti accessibili) che ti consentono di prevedere la data di conclusione di un progetto e il suo utilizzo delle risorse.
Il problema principale con il software è che non è ancora presente. Vogliamo puntare sull'ingegneria del software, ma in realtà non ci siamo ancora. Perché abbiamo un ambiente molto fluido e dinamico, vincoli molto variabili per i progetti e ancora una mancanza di maturità in retrospettiva nei nostri processi. Certo, potremmo dire di migliorarci (altamente discutibile con i dati concreti, però), ma ci siamo riusciti solo dagli anni '60 (i progetti precedenti erano in realtà più vicini ai computer solo hardware, quindi più vicini alla vera ingegneria, ironicamente ). Considerando che costruiamo veicoli a motore da più di un secolo, veicoli in generale per alcuni millenni, e costruiamo per ancora più millenni (e siamo stati abbastanza dannatamente bravi in realtà in qualche parte del mondo, facendoti sentire come noi '
Non riusciamo a prevedere sistematicamente le scadenze in modo accurato , non riusciamo a prevedere sistematicamente i costi in modo accurato , non riusciamo a identificare e mitigare sistematicamente i rischi intrinseci ed esterni in modo efficiente e deterministico . Il meglio che riusciamo a fare è produrre stime abbastanza buone e adattarci a qualche buffer, facendo del nostro meglio per ottimizzare i processi per ridurre i cicli e le spese generali.
Ma vedi, forse questo è l'ingegneria. Ed è quello che, quando qualcuno parla di un "ingegnere del software", dovrebbe pensare e mirare.
Ciò sembra difficilmente intercambiabile con il semplice atto di routine di programmazione o l'atto più avanzato di sviluppo di applicazioni.
Tuttavia, tutto è una questione di tendenze. Ultimamente è abbastanza comune avere un team di sviluppo orizzontale in cui tutti i membri del team sono sviluppatori di software senior (sì, le capitali, perché ciò ci fa sentire speciali, non è vero?), Senza una vera distinzione di età (abbastanza giusto, nel mio opinione) e non tanta distinzione di abilità (uh-oh ...) e responsabilità (ora che non può essere buona, a parte puramente per il buzz di PR).
A volte è anche solo una forza dell'abitudine e specifica della cultura e del gergo di un'industria. Altre posizioni per la produzione di software embedded utilizzano titoli per ingegneri del software. Soprattutto perché probabilmente implica che dovrai sempre avere a che fare con una certa misura anche con l'hardware in questo campo, quindi ovviamente affronti altri aspetti della produzione e dell'intero "sistema" che produci. Non solo i pezzi che vanno fuori di testa al suo interno. D'altra parte, non si vede davvero il termine ingegnere utilizzato nelle posizioni di produzione di software finanziario. O perché è un'evoluzione mimetica di questo settore da parte di uno dei suoi predecessori (per esempio, l'ingegneria integrata trova le sue radici nell'ingegneria automobilistica, per esempio), o perché vogliono solo dare più o meno credito / peso a una posizione.
E per essere sicuri di perdere tutti nella nebbia, troverai altri titoli che mescolano entrambi (come "Software Development Engineer" o "Software Engineer in Test"!), E poi altri che enfatizzano ponti ancora più folli con altri domini ( pensare a "Software Architect" e come "architettura software" potrebbe essere un furto spudorato del vocabolario). E continuali a venire: Ingegnere di rilascio, Responsabile dello sviluppo del cambiamento, Ingegnere di costruzione (anche quello si fà fuori di testa). E a volte semplicemente "ingegnere".
Spero che abbia aiutato, anche se non è davvero una risposta.
Oh, e questo significa che la tua nuova compagnia o sta cercando di attirarti con un nuovo titolo o che a loro non importa davvero dei titoli, o che avrai davvero una posizione di livello superiore. L'unico modo per sapere è leggere le tue specifiche di lavoro, parlare con loro e alla fine provare e giudicare da solo. Spero sia l'ultima opzione e che tu ne sia felice (e potenzialmente incasserai di più). ;)
Gli ingegneri del software sono persone che lavorano in aziende che chiamano le persone che scrivono software per loro "ingegneri del software".
I programmatori sono persone che lavorano in aziende che chiamano le persone che scrivono software per loro "programmatori".
Ci sono anche sviluppatori o sviluppatori di software . Sono persone che lavorano in aziende che chiamano le persone che scrivono software per loro rispettivamente "sviluppatori" o "sviluppatori software".
Quindi c'è il "Software Engineer", il "Programmer", e anche lo "Developer", "Coder" e non puoi mai dimenticare l '"Esperto SOA"
Questi sono tutti termini di marketing per le persone che non possono dire qualcosa di significativo nel loro CV, come il loro ruolo effettivo (non solo il titolo di lavoro) nelle posizioni precedenti.
Sugli annunci di lavoro, la differenza sta nella persona delle risorse umane.
In conclusione: ogni persona ha il suo punto di vista su "ciò che rende un buon dipendente che lavora con il codice", e ad alcuni piace associare tali e tali competenze a tali e tali titoli.
Cosa devi fare? Gli annunci di lavoro dovrebbero essere descrittivi delle competenze richieste e i CV dovrebbero spiegare i dettagli dell'esperienza del candidato.
Nessuna differenza. Sono la stessa cosa. Le aziende, tuttavia, possono avere descrizioni di posti di lavoro formali usando i termini, e quindi potrebbe esserci un significato specifico per il termine.
Dipende molto da come l'azienda definisce le posizioni. Può darsi che come ingegnere del software avrai maggiori opportunità di decisione sul design, mentre come sviluppatore ti darebbero diagrammi UML e tu scriveresti il programma.
Ma non esiste una definizione di set reale in modo che in base al titolo le persone sapranno cosa fai o quanto esperienza hai.
Quando ero un architetto / sviluppatore, il mio titolo era un informatico, ma direi semplicemente alle persone che ero un programmatore, poiché i primi due non sono facilmente definibili, ma la maggior parte delle persone sa cosa fa un programmatore.
Se un titolo è importante per te, accetta quello nuovo, poiché l'ingegnere sembra più alto di uno sviluppatore.
Non credo ci siano "differenze ufficiali", per la mia esperienza che potrebbe significare:
Inoltre, sono anche termini di moda che cambiano ... Prima il termine era "programmatore", quindi "ingegnere del software" e ora sembra essere "sviluppatore" ...
È meglio leggere la descrizione del lavoro o qualcuno della società specifica
In alcune giurisdizioni, "Ingegnere" porta con sé il requisito di essere un ingegnere professionista, che ha un P. Eng. desigazione tra le proprie credenziali. Tuttavia, in altre aree potrebbe non esserci una differenza in quanto ero un "ingegnere progettista di softwere" che lavorava nello stato di Washington alcuni anni fa.
Gli ingegneri del software tendono a lavorare su sistemi molto grandi che impiegano molti anni a svilupparsi, ad esempio da 5 a 16 anni. I programmatori tendono ad avere questo stereotipo di solo codifica e nient'altro. Ma dipende davvero dall'organizzazione in cui lavori e da come le risorse umane stanno commercializzando il ruolo come spiegato sopra. Sono essenzialmente la stessa cosa. Basta non essere troppo attaccato a un titolo perché è anche.