De termen software developer, programmeur en engineer worden in de praktijk vaak door elkaar gebruikt. Daarom is het lastig om een eenduidig antwoord te geven op deze vragen. Het geheel van software engineering behelst grofweg het proces, de structuur, technologie en organisatie van softwareontwikkeling voor complexe systemen. Naast logische, wiskundige theoretische aspecten spelen engineering- en managementaspecten een rol.
Wat is software engineering?
Definities lopen uiteen:
- Het toepassen van een gestructureerde, systematische en kwantificeerbare aanpak voor het ontwikkelen, implementeren en onderhouden van software (Jacquard).
- Het gedisciplineerd toepassen van technische, wetenschappelijke en wiskundige principes en methoden op het efficiënt produceren van software (W. Humphrey).
- Volgens het Agile modellingprincipe draait engineering meer om communicatie, waarbij ideeën van de gebruiker of opdrachtgever via programmeurs omgezet worden in softwareapplicaties.
Wat doet een software engineer?
Software engineering (onderdeel van de opleiding hbo ICT) volgt technische ontwerppatronen, principes en methodes en betreft meer dan programmeren alleen. Je kunt daarom stellen dat de vaardigheden van een engineer verder reiken dan die van een software ontwikkelaar. Anderzijds kun je stellen dat de aard van het werk wordt bepaald door de omstandigheden en persoonlijkheid van een developer.
- Ingenieurs ontwerpen en realiseren oplossingen en applicaties voor complete netwerken, besturingssystemen en/of databases.
- Daarbij zijn zij gespecialiseerd in een set programmeertalen en ontwikkelomgevingen.
- Sommige engineers werken alleen, de meesten maken deel uit van een agile IT-team.
- Engineers zijn (deels) verantwoordelijk voor testing en documentatie.
- Als engineer werk je vaak intensief samen met een software tester.
- Soms instrueren en begeleiden zij eindgebruikers, zoals werknemers van opdrachtgevers.
Een (embedded) software engineer richt zich op software voor complete platforms (en niet voor één klant) en apparaten. Een product moet aantrekkelijk zijn, een groot publiek aanspreken en keer op keer gedupliceerd kunnen worden met het oog op continuïteit en kwaliteit. De SE heeft een brede blik, denkt verder vooruit en stelt vragen met betrekking tot schaling en hergebruik.
Hoe word je een succesvol software engineer?
1. Voorkom onderschatting, beloof niet te veel
Onderschat de hoeveelheid werk niet. Om en nabij 50% van alle projecten hebben te weinig budget of worden te laat opgeleverd. Houd dit in gedachten als je voor het eerst aan het werk bent als projectleider (bijvoorbeeld via Code Guild). Er moet een technisch ontwerp met tijdsplanning, budgettering en rolverdeling voor het hele ontwikkelproces worden opgesteld. Als je niet uitkijkt kom je op gespannen voet te staan met je teamleden.
Wees conservatief met je schattingen en bouw van tevoren een buffer in voor mogelijke fouten. Zo kun je voor de afgesproken kosten opleveren. Meer tijd geeft je de vrijheid je product te perfectioneren. Communiceer open en blijf consistent in je dialoog met belanghebbenden.
2. Perfectie bestaat niet
Misschien ben je bang zaken over het hoofd te zien bij de inrichting van je project of de samenstelling van het technische ontwerp. De kans is groot dat je alles ‘perfect' wilt doen. Zo zijn de meesten van ons immers geconditioneerd.
Iedereen loopt tegen beperkingen aan, perfectie bestaat niet. Je kunt niet alles van tevoren weten en controleren. Er zijn talloze alternatieven voor elke beslissing. Kies naar eer en geweten, objectief of op instinct.
3. Houd koers
Het maakt niet uit welke functie je uitoefent: focus houden is cruciaal. Stel doelen aan het begin van je project en committeer je daaraan. Je kunt niet iedereen tevredenstellen. Lever het product zo snel mogelijk op. Je weet niet wat de klant van de software vindt totdat je het aanlevert.
4. Verzamel feedback vroeg
Vroege releases, veel opleveren en zo snel mogelijk feedback ontvangen vormt de kern van agile werken. De mening van de klant is misschien wel het belangrijkste onderdeel van je softwareproject. Door vroege feedback weet je of het product voldoet aan de specificaties en wens van de opdrachtgever. Vroege releases stellen je in staat kapotte code te repareren en in ieder geval een minimum viable product (MVP) op te leveren.
5. Zoek voordat je vraagt
Zoek eerst zelf naar een antwoord voordat je een vraag stelt. Doe research, verken nieuwe, andere code. Dit betekent Googlen en Stack Overflow uitpluizen. Dat is niet iets slechts; het internet is van onschatbare waarde voor ontwikkelaars bij het zoeken naar oplossingen voor complexe problematiek. De kunst is om de juiste vraag te formuleren.
6. Optimaliseer voor eenvoud
Code schrijven is een kwestie van software optimaliseren om gestelde doelen te halen. Klanten en eindgebruikers moeten met het product kunnen werken, dus voorkom onnodige complexe interfaces et cetera. Collega-ontwikkelaars moeten je code kunnen lezen en doorgronden, dus kies altijd voor de eenvoudigere, schonere benadering.