it-swarm.it

Quali sono le differenze chiave tra ingegneri del software e programmatori?

Quali sono le differenze chiave tra ingegneri del software e programmatori?

102
grokus

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 a Software Engineer e il secondo a Programmer.

79
Nicole

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 programmatore è generalmente quella di un professionista assunto per produrre il codice di un programma per computer . Ciò implica che tu sai come scrivere il codice , puoi capire un algoritmo e seguono le specifiche . Tuttavia, di solito si ferma lì in termini di responsabilità.

  • Una posizione sviluppatore è generalmente considerata un super-tipo della posizione del programmatore . Comprende le stesse responsabilità, più la capacità di progettare e progettare un componente software , e di scrivere la documentazione tecnica per esso (comprese le specifiche). Sei in grado di - almeno tecnicamente - guidare gli altri (quindi programmatori), ma non necessariamente una squadra (arriva il fuzz ...)

  • Una posizione ingegnere di solito implica che sei uno sviluppatore che ha un tipo specifico di laurea , alcuni conoscenza dell'ingegneria ed è in grado di progettare un sistema (come in: una combinazione di software componenti/moduli che insieme formano un'intera entità software). Fondamentalmente, tu vedi un'immagine più ampia e sei in grado di progettare e spiegare e separandolo in moduli più piccoli .

Tuttavia, tutto ciò è discutibile, e come ho detto, non ci sono requisiti legali di cui sono a conoscenza nei paesi USA/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, il cosiddetto "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, ad 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 alcune parti del mondo, facendoti sentire come noi bambini ridicoli che giocano con i nostri nuovi giocattoli software appariscenti in confronto).

Noi non riusciamo a prevedere sistematicamente le scadenze con precisione , noi non riusciamo a prevedere sistematicamente i costi in modo accurato , noi non riusciamo a identificare e mitigare sistematicamente i rischi intrinseci ed esterni in modo efficiente e deterministico . Il meglio che riusciamo a fare è produrre abbastanza bene ipotesi, e accomodarci per un po 'di 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 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).

È anche a volte solo una forza dell'abitudine e specifica della cultura e del gergo di un settore. 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 quindi altri titoli che mescolano entrambi (come "Software Development Engineer" o "Software Engineer in Test"!), E poi altri che enfatizzano anche ponti più folli con altri domini (pensate 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 diventa ffaaarrrrrr). 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ù). ;)

130
haylem

ingegneri del software sono persone che lavorano in aziende che chiamano le persone che scrivono software per loro "ingegneri del software".

Programmatori sono persone che lavorano in aziende che chiamano le persone che scrivono software per loro "programmatori".

Ci sono anche sviluppatori o sviluppatori software. Sono persone che lavorano in aziende che chiamano le persone che scrivono software per loro rispettivamente "sviluppatori" o "sviluppatori software".

81
Jer

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.

15
Ken Egozi

Nessuna differenza. Sono la stessa cosa. Le aziende, tuttavia, possono avere descrizioni di posti di lavoro formali utilizzando i termini, e quindi potrebbe esserci un significato specifico della società per il termine.

10
GrandmasterB

La programmazione riguarda il codice. L'ingegneria del software riguarda il prodotto finale.

8
darreljnz

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.

3
JB King

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.

3
James Black

Non credo ci siano "differenze ufficiali", per la mia esperienza che potrebbe significare:

  • Alcune aziende usano ingegneri del software e sviluppatori di software per riferirsi alla stessa cosa. Usano solo il loro termine preferito.
  • Altri usano entrambi i termini per diverse posizioni interne, ma i ruoli variano da compagnia a compagnia! In alcuni potrebbe essere solo una differenza nella funzione (un soft. Ingegnere lavorerà sulla manutenzione e sul miglioramento dei sistemi mentre uno sviluppatore lavorerà sul prodotto dell'azienda), o potrebbe essere gerarchico (l'ingegnere è al di sopra dello sviluppatore), o addirittura l'ingegnere dipende davvero dalle domande e risposte!

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

3
Khelben

Gli ingegneri del software tendono a lavorare su sistemi molto grandi che impiegano molti anni a svilupparsi, ad es. Da 5 a 16 anni per esempio. 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.

2
Siamac Nikoo