SheCanCode

Svaret? Det beror på vem du frågar!

Det finns ingen officiell skillnad mellan rollerna, utan företagen använder sin egen erfarenhet och kunskap för att definiera beskrivningar som passar deras behov. För att förvirra saken ytterligare kan det också finnas regionala variationer, med en tydlig skillnad i utbildning. De olika datakällorna kan dock bedömas och analyseras för att dra slutsatser.

Enligt Computer Science Degree Hub har programvaruutvecklare och programvaruingenjörer skilda roller:

”Software engineering refers to the application of engineering principles to create software. Programvaruingenjörer deltar i livscykeln för programvaruutveckling genom att koppla ihop kundens behov med tillämpliga tekniska lösningar. Således utvecklar de systematiskt processer för att tillhandahålla specifika funktioner. I slutändan innebär programvaruteknik att man använder tekniska koncept för att utveckla programvara.

Å andra sidan är programvaruutvecklare den drivande kreativa kraften bakom programmen. Programvaruutvecklare är ansvariga för hela utvecklingsprocessen. Det är de som samarbetar med kunden för att skapa en teoretisk design. De låter sedan datorprogrammerare skapa den kod som behövs för att programmet ska kunna köras korrekt. Datorprogrammerare testar och åtgärdar problem tillsammans med programvaruutvecklare. Programvaruutvecklare tillhandahåller projektledning och teknisk vägledning i varje skede av livscykeln för programvaruutveckling.”

Udacity håller med om att det finns en stark åtskillnad:

”Termerna programvaruutvecklare och programvaruingenjörer är, i motsats till vad många tror, inte utbytbara. En utvecklare vet hur man kodar och kan ha de tekniska färdigheter som behövs för att bygga meningsfulla produkter. En mjukvaruingenjör följer en systematisk process för att förstå kraven, arbeta med intressenter och utveckla en lösning som uppfyller deras behov. En utvecklare tenderar att arbeta ensam. En mjukvaruingenjör är en del av ett större team”
Vad innebär det i praktiken? Låt oss utforska skillnaden närmare.

Software Engineer Skills and Job Descriptions

En Software Engineer är en mycket skicklig mjukvaruutvecklare som kan hantera ett komplext system. En person som inte bara kan bygga en fullt fungerande app utan är tillräckligt erfaren för att veta hur den ska byggas på ett sätt som är lätt att refaktorisera, självdokumenterande och därmed lättare att felsöka.
Den kommer att spela en aktiv roll som ledare, konsult och enskild bidragsgivare i olika projekt. De måste ge analytiska råd vid identifiering och genomförande av nya IT-användningar för att hjälpa kunderna och företaget att nå strategiska mål. De måste kunna förvalta resurser, samordna utvecklingsuppgifter och övervaka tekniska projektplaner. De samarbetar ofta med IT-, drifts- och utvecklingspersonal genom hela livscykeln för programvaruutveckling
De vet att omtanke och förutseende i början kan spara dagar av arbete och huvudvärk längre fram. De ägnar sig inte åt att göra den smartaste koden, utan åt att göra koden självklar. De vet att den bästa koden är den som man aldrig behöver skriva.
Mjukvaruingenjörer förväntas:

  • Har teknisk expertis, med erfarenhet av att arbeta med ett brett spektrum av projekt

  • Var duktig på mönsterdesign för att skapa motståndskraftiga och feltoleranta system

  • Använder sig av automatiserad testning med hjälp av verktyg som Gherkin, Cucumber eller Ansible

  • Vetar hur man skapar och underhåller IT-arkitektur, storskaliga datalager och molnbaserade system.

  • Build scalable deployment pipelines, to support Continuous Integration and Continuous Delivery

  • They must be able to work effectively by themselves and with remote teams.

  • Senior software engineers must oversee complex systems analysis, design and development programs.

A Software Engineer role will typically involve:

  • Research, design, develop and test their software as well as compiling and distributing software over the network

  • Modify existing software is to resolve defects, to adopt a new hardware or improve its performance.

  • Analyze the user needs and assess software requirement including design feasibility and cost/time constraints.

  • Konsultationer med kunder om specifikation och design.

  • Koordinering av systemprogramvara för distribution och installation

  • Övervakning är teknologers och ingenjörers arbete

Mjukvaruutvecklarens färdigheter och arbetsbeskrivning

En mjukvaruutvecklare är inte bara ansvarig för att skriva kod, han/hon måste också se över det nuvarande systemet, ge idéer till förbättringar, inklusive den ansträngning som krävs för att göra det. En mjukvaruutvecklare har ett nära samarbete med analytiker, slutanvändare/marknadsföring och designers.
Mjukvaruutvecklare måste också se till att deras kod fungerar genom att testa den, med hjälp av kontrollerade och verkliga situationer innan du kan gå live. De måste ha ett öga för perfektion för att korrekt lösa buggar och revideringar av program för att öka driftseffektiviteten.
Den bästa mjukvaruutvecklaren är kreativ och har den tekniska expertisen för att komma på en innovativ idé för att lösa ett kundproblem och är tillräckligt erfaren för att se många problem innan de uppstår.
En mjukvaruutvecklare följer vanligtvis en metodik för utvecklingslivscykeln eller ett leveransramverk som Scrum, XP eller Kanban.
Mjukvaruutvecklare måste ha:

  • Uppmärksammade analytiska färdigheter eftersom de kommer att behöva jämföra behoven med mjukvarans möjligheter kontinuerligt.

  • De måste vara bekanta med datorspråk för att effektivt kunna arbeta med datorprogram, t.ex. Java, C#, C++, Python

  • Har erfarenhet av att använda verktyg för öppen källkod, t.ex. GitHub

  • Geniala färdigheter för återkoppling och kommunikation, med stor uppmärksamhet på detaljer, eftersom små fel kan leda till stora problem

  • Att vara detaljorienterad kommer att hjälpa dem att hantera samtidiga projekt i olika utvecklingsstadier.

  • Förstå logiken i koden även i språk som de inte är bekanta med.

Mjukvaruutvecklare måste kontinuerligt övervaka de ändringar de gör, bland annat genom att lösa defekter, för att säkerställa hög kvalitet och enhetlighet. Följaktligen måste de ständigt växla mellan tilldelat arbete, hantera tidsfrister och scheman.

Sammanfattning

För att sammanfatta de viktigaste skillnaderna mellan mjukvaruutvecklare och ingenjörer:
En utvecklare utför. Deras talanger är ofta inriktade på ett enda område. Utan behov av den ”stora bilden”. Så programvaruutvecklaren är främst inriktad på att utveckla kod som är en del av programvaruutvecklingscykeln.
En ingenjör utformar och planerar och tillämpar tekniska principer på programvaruutveckling. Alltid medveten om den ”stora bilden”, med talanger inom många områden. En ingenjör kan ta på sig rollen som utvecklare, men en ingenjörs kärnfokus ligger på arkitektur.
I slutändan är den största skillnaden mellan programvaruteknik och programvaruutveckling att den senare övervakar tekniken medan den förra fokuserar på att skapa funktionella program.
Alla kan bli programvaruutvecklare. Om du kan en liten mängd programmeringskoncept har du grunden för att bli mjukvaruutvecklare. De skriver kod utan någon analys av prestanda och skalbarhet. Mer av denna del utförs av mjukvaruingenjören, vilket gör att den rollen skiljer sig från en mjukvaruutvecklare.
Det finns alltid något nytt att lära sig om du är mjukvaruutvecklare eller ingenjör, och många byter mellan de två rollerna beroende på projekt och kund.
Har du tittat på SheCanCodes nya Beta Job Board, som annonserar roller från företag som tar mångfald på allvar. Du kan själv bedöma skillnaden mellan nuvarande roller som mjukvaruutvecklare och mjukvaruingenjör.