SheCanCode

Het antwoord? Dat hangt ervan af aan wie je het vraagt!

Er is geen officieel onderscheid tussen de functies, maar bedrijven gebruiken hun eigen ervaring en kennis om beschrijvingen te maken die aansluiten bij hun behoeften. Om het nog verwarrender te maken, kunnen er ook regionale variaties zijn, met een duidelijk verschil in opleiding. De verscheidenheid aan gegevensbronnen kan echter worden beoordeeld en geanalyseerd om conclusies uit te trekken.

Volgens Computer Science Degree Hub hebben softwareontwikkelaars en software-ingenieurs verschillende rollen:

“Software engineering verwijst naar de toepassing van engineering principes om software te maken. Software engineers nemen deel aan de software development life cycle door het verbinden van de behoeften van de klant met toepasbare technologische oplossingen. Zo ontwikkelen zij systematisch processen om specifieke functies te vervullen. Uiteindelijk betekent software engineering het gebruik van engineering-concepten om software te ontwikkelen.

Aan de andere kant zijn software-ontwikkelaars de drijvende creatieve kracht achter programma’s. Softwareontwikkelaars zijn verantwoordelijk voor het gehele ontwikkelingsproces. Zij zijn degenen die samen met de klant een theoretisch ontwerp maken. Vervolgens laten zij computerprogrammeurs de code maken die nodig is om de software goed te laten werken. Computerprogrammeurs testen en verhelpen problemen samen met de softwareontwikkelaars. Softwareontwikkelaars bieden projectleiding en technische begeleiding in elke fase van de softwareontwikkelingslevenscyclus.”

Udacity is het ermee eens dat er een sterke scheiding is:

“De termen Softwareontwikkelaar en Software Engineer zijn, in tegenstelling tot wat vaak wordt gedacht, niet onderling uitwisselbaar. Een ontwikkelaar weet hoe hij moet coderen en kan de technische vaardigheden hebben die nodig zijn om zinvolle producten te bouwen. Een software engineer volgt een systematisch proces van eisen begrijpen, samenwerken met belanghebbenden en een oplossing ontwikkelen die aan hun behoeften voldoet. Een ontwikkelaar heeft de neiging om alleen te werken. Een software engineer maakt deel uit van een groter team”
Wat betekent dat in de praktijk? Laten we het verschil eens nader onderzoeken.

Software Engineer Vaardigheden en Functiebeschrijvingen

Een Software Engineer is een zeer bekwame Software Developer die in staat is een complex systeem te beheren. Iemand die niet alleen in staat is om een volledig functionerende app te bouwen, maar die ervaren genoeg is om te weten hoe hij deze moet bouwen op een manier die gemakkelijk te refactoren is, zelf-documenterend, en als gevolg daarvan gemakkelijker te debuggen.
Zij zullen een actieve rol spelen als leider, adviseur en individuele bijdrager aan verschillende projecten. Zij moeten analytisch advies geven bij het identificeren en implementeren van nieuwe IT-toepassingen om klanten en het bedrijf te helpen strategische doelen te bereiken. Hij moet in staat zijn middelen te beheren, ontwikkelingstaken te coördineren en toezicht te houden op technische projectplannen. Zij werken vaak samen met IT-, operationeel en ontwikkelingspersoneel gedurende de gehele levenscyclus van softwareontwikkeling
Zij weten dat nadenken en vooruitdenken aan de voorkant dagen werk en hoofdpijn op de lange termijn kan besparen. Ze wijden zich niet aan het maken van de slimste code, maar aan het duidelijk maken van hun code. Ze weten dat het beste stuk code het stuk is dat je nooit hoeft te schrijven.
Software-engineers worden geacht:

  • Technische expertise te hebben, met ervaring in het werken aan een breed scala van projecten

  • Bekwaam te zijn met patroondesign om veerkrachtige en fouttolerante systemen te creëren

  • Gebruik te maken van testautomatisering met tools als Gherkin, Cucumber of Ansible

  • Kennis te hebben van het creëren en onderhouden van IT-architectuur, grootschalige gegevensopslag en cloudgebaseerde systemen.

  • 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.

  • Overleg met klanten over specificatie en ontwerp.

  • Coördinatie van systeemsoftware voor implementatie en installatie

  • Toezicht houden op het werk van technologen en ingenieurs

Softwareontwikkelaar Vaardigheden en Functieomschrijving

Een softwareontwikkelaar is niet alleen verantwoordelijk voor het schrijven van code, hij moet ook het huidige systeem beoordelen, ideeën aandragen voor verbeteringen, inclusief de inspanning die daarvoor nodig is. Een software ontwikkelaar zal nauw samenwerken met analisten, eindgebruikers/marketing, en ontwerpers.
Software Ontwikkelaars moeten er ook voor zorgen dat hun code werkt door deze te testen, met behulp van gecontroleerde en echte situaties, voordat men live kan gaan. Ze moeten oog hebben voor perfectie om bugs en herzieningen van programma’s goed op te lossen om de operationele efficiëntie te verhogen.
De beste software ontwikkelaar is creatief en heeft de technische expertise om met een innovatief idee te komen om een klantprobleem op te lossen en is ervaren genoeg om veel problemen te zien voordat ze zich voordoen.
Een software ontwikkelaar volgt meestal een development lifecycle methodologie of delivery framework zoals Scrum, XP, of Kanban.
Software ontwikkelaars moeten beschikken over:

  • Uitstekende analytische vaardigheden omdat ze voortdurend behoeften zullen moeten vergelijken met software mogelijkheden.

  • Ze moeten vertrouwd zijn met computertalen om effectief met computerprogramma’s te kunnen werken, zoals Java, C#, C++, Python

  • Ervaring hebben met het gebruik van open source tools zoals GitHub

  • Goede feedback- en communicatievaardigheden, met een sterke aandacht voor detail, aangezien kleine fouten tot grote problemen kunnen leiden

  • Detailgericht zijn zal hen helpen om gelijktijdige projecten in verschillende ontwikkelingsstadia te beheren.

  • Begrijpen de logica van code, zelfs in talen waarmee ze niet vertrouwd zijn.

Softwareontwikkelaars moeten voortdurend toezicht houden op de wijzigingen die ze aanbrengen, inclusief het oplossen van defecten, om een hoge kwaliteit en consistentie te waarborgen. Bijgevolg moeten ze voortdurend schakelen tussen toegewezen werk, het beheren van deadlines en schema’s.

Samenvatting

Om de belangrijkste verschillen tussen de softwareontwikkelaar en engineer samen te vatten:
Een ontwikkelaar voert uit. Hun talenten zijn vaak gericht op een enkel gebied. Zonder de behoefte aan het “grote plaatje”. Dus de software ontwikkelaar is vooral gericht op het ontwikkelen van code die deel uitmaakt van de software ontwikkelingscyclus.
Een ingenieur ontwerpt en plant en past de principes van engineering toe op softwareontwikkeling. Altijd bewust van het “grote plaatje”, met talenten op vele gebieden. Een engineer kan de rol van ontwikkelaar op zich nemen, maar het zwaartepunt van een engineer ligt bij architectuur.
Het belangrijkste verschil tussen software engineering en software ontwikkeling is uiteindelijk dat de laatste de engineering overziet, terwijl de eerste zich richt op het maken van functionele programma’s.
Iedereen kan een software ontwikkelaar zijn. Als je een klein beetje programmeerkennis hebt, heb je de basis om software ontwikkelaar te worden. Zij schrijven code zonder enige analyse van prestatie en schaalbaarheid. Meer van dit element wordt ingevuld door de Software Engineer, waardoor die rol verschilt van een Software Developer.
Er is altijd iets nieuws te leren als je een Software Developer of Engineer bent, met veel mensen die wisselen tussen de twee rollen, afhankelijk van het project en de klant.
Kijk eens op SheCanCode new Beta Job Board, die vacatures plaatst van bedrijven die diversiteit serieus nemen. Je kunt het verschil tussen de huidige Software Developer en Software Engineer rollen zelf beoordelen.