De kloof dichten
Nico Meijerman ging aan de slag bij NTS om de softwarecompetentie van het hardwarebastion op en uit te bouwen. Als een van de eerste dingen legde hij zich toe op het overbruggen van de kloof tussen software-engineering en de werelden van fysica, mechanica en hardware-gerelateerde disciplines. Het resultaat is de workshop ‘Software-engineering voor niet-software-engineers‘ bij High Tech Institute waarin Meijerman zijn niet-softwarecollega’s de basisprincipes bijbrengt van software-engineering. Klant- en bedrijfsspecificaties inbegrepen.
Eerstelijnstoeleverancier NTS Group heeft de laatste jaren in stilte gewerkt aan zijn softwarecompetentie. Je verwacht het misschien niet van een bedrijf dat nog steeds het grootste deel van zijn inkomsten haalt uit het buigen van plaatstaal, het frezen van onderdelen en het assembleren van systemen.
De afgelopen decennia is NTS actief aan het bouwen aan zijn systeemontwikkelcapaciteiten. Het ontwikkelt en fabriceert nu complete machines en modules die zijn klanten vervolgens van een labeltje voorzien en verkopen. Nu de waarde van eindproducten steeds meer verschuift naar software, lijkt het een logische stap voor NTS om de competenties te ontwikkelen om mee te surfen op de digitaliseringsgolf.
NTS’ afdeling Development & Engineering (D&E) telt ongeveer tweehonderd ingenieurs, van wie vijftien procent gericht op software. Voor een leverancier van high-end systemen en ontwerpen is dit nog steeds aan de lage kant, vindt Nico Meijerman. ‘Het zal zeker groeien omdat we zien dat software steeds belangrijker wordt voor het creëren van waarde voor onze klanten. We zien de software-inspanning toenemen in onze projecten.’

Software engineering for non-software engineers
Especially for engineers designing real tangible stuff it is not easy to understand how the abstract software world looks like. Check out Nico Meijerman's workshop.
Meer informatieIntrigerend aanbod
Meijerman bewandelt het hardware-softwarepad al zijn hele carrière. Hij leerde chips ontwerpen tijdens zijn studie in Twente en sloot zich aan bij Sagantec, een bedrijf dat zowel werkte aan een siliciumcompiler als toepassingsspecifieke ic’s ontwikkelde voor klanten. Daar begon hij met designen, maar al snel schoof hij op naar programmeerwerk omdat de embedded software meer inspanning vroeg dan de hardware.
Na les te hebben gegeven in informaticagerelateerde onderwerpen aan verschillende afdelingen van de hts in Arnhem stapte Meijerman aan boord bij Philips CFT, waar ze een software-engineer nodig hadden die begreep wat er gebeurde in de mechanische en elektrische domeinen. Hij ontwikkelde er motioncontrolsoftware voor de eerste PAS 5500-lithoscanners van ASML en werkte aan mri-scanners voor Philips Healthcare.
In 2010 besloot Meijerman dat het tijd was om een eigen consultancybedrijf te beginnen, maar een paar jaar later benaderde NTS hem met een intrigerend aanbod: of hij interesse had om groepsleider te worden voor machinebesturingen, een team dat zich richt op software en elektrotechniek. Een softwarecompetentie helpen opbouwen leek hem een uitdagende en tegelijk zeer aantrekkelijke opdracht.
Eenmaal gearriveerd in het hardwarebastion was het Meijerman duidelijk dat hij moest werken aan zijn relatie met de mechanici en mechatronici binnen NTS. Hij bedacht dat de korte workshop Software-engineering voor niet-software-engineers kon helpen om zijn nieuwe collega’s meer vertrouwd te maken met software.
Als eerste stap voerde Meijerman uitgebreide gesprekken met collega’s om zo een idee te krijgen van hun behoeftes. Hij begon met de systeemengineers – jongens die over het algemeen een mechanica-achtergrond hebben. ‘De meeste van hen hadden geen idee van software. Ik kreeg opmerkingen terug als ‘Die jongens zijn altijd te laat’, ‘Ze maken nooit wat ik echt nodig heb’ en ‘Ik kan niet met ze werken omdat ze niks begrijpen’. Het werd me duidelijk dat onze systeemengineers echt niet wisten wat ze bij software aan het doen waren. Ze zagen het als een onvoorspelbare zwarte doos.’
In Meijermans gesprekken met de systeemarchitecten begon alles meer te resoneren. ‘Zij hadden naderhand in elk geval een idee over wat ze graag zouden willen weten over software. Ze wilden meer leren over programmeertalen, third-party software, multitasking, realtime, Agile en andere basisconcepten. Ze wilden ook weten hoe een softwareontwikkelproces eruitziet.’

Software engineering for non-software engineers
Especially for engineers designing real tangible stuff it is not easy to understand how the abstract software world looks like. Check out Nico Meijerman's workshop.
Meer informatieAl snel kwamen Meijerman en de systeemarchitecten tot de conclusie dat het klantperspectief van enorm belang is. ‘We zagen de noodzaak om klanten vroegtijdig te betrekken bij het softwareontwikkelproces. Voor NTS had dit hoge prioriteit omdat de meeste klanten een mechanica-achtergrond hebben. Ze zijn zich ervan bewust dat ze niet zonder software kunnen, maar verder moeten ze nog alles leren, bijvoorbeeld dat software nooit foutvrij is. Daarom gaat een deel van mijn workshop ook over bedrijfsmodellen en alles dat volgt op onze ontwikkelactiviteiten.’
Verkeerde aannames
In de hightechindustrie hoor je vaak dat communicatie het probleem is in omgevingen waar verschillende disciplines samenkomen. Maar bij NTS heeft Meijerman ervaren dat het meer gaat over begrip en in staat zijn om in de schoenen van iemand anders te gaan staan. ‘Mensen proberen te communiceren. Ik zie dat er zeker een bereidheid is om te praten’, zegt hij. ‘Maar hardware- en software-engineers leven vaak in andere werelden.’
Meijerman legt uit dat mechanische ingenieurs vooral kijken naar de beperkingen van de fysica. ‘Bij hen gaat het over nanometers, over milliseconden. De stijfheid van een constructie bepaalt wat je kunt bereiken. Onderdelen slijten als je ze te lang gebruikt.’ Software-engineers hebben niks te maken met fysica; zij proberen de complexiteit te beheersen. ‘Mechanica gaat over het managen van de fysische grenzen, terwijl software draait om het managen van complexiteit.’

De problemen ontstaan vaak door verkeerde aannames. ‘Mechanici vragen zelden naar de complexiteit. Software-engineers zullen daarom meestal zeggen dat ze hun machinebesturingsproblemen wel kunnen oplossen – behalve als het heel moeilijk wordt. Maar als je hun wel vraagt hoeveel inspanning het gaat kosten en hoe complex het is, krijg je misschien een heel ander antwoord. Een werktuigbouwkundig ingenieur kijkt naar dingen vanuit de fysica, niet vanuit een complexiteitsoogpunt. Maar hij moet weten hoeveel werk zijn vraag kan opleveren. Het gebrek aan begrip van dergelijke basisconcepten maakt het moeilijk om te communiceren. Andersom moeten ook software-engineers meer kennis krijgen van werktuigbouwkunde.’
Onderdeel van Meijermans workshop is begrijpen dat software-engineering niet hetzelfde is als programmeren. ‘Op school leert de jeugd programmeren. Veel mensen denken dat software-engineering gewoon meer van hetzelfde is, maar niets is minder waar. Bij programmeren is de complexiteit meestal niet het probleem omdat je toch maar hooguit een paar honderd regels code produceert. Pas als je te maken krijgt met meer dan honderdduizend regels code wordt het echt ingewikkeld. Hightech systemen bevatten miljoenen regels code en uitdagingen van een dergelijke omvang vragen om een doorwrochte aanpak. Dat betekent dat je het werk in stukken moet hakken en ervoor moet zorgen dat het correct is. Engineering draait om een focus op architectuur en design, maar ook om het managen van complexiteit.’
‘Mijn doel is om deelnemers alle aspecten van software-engineering bij te brengen’, concludeert Meijerman. ‘Als ze dat beseffen, begrijpen ze dat ze er niet komen door hun neef wat te laten spelen met Arduino-bordjes en hem in het weekend een programma te laten schrijven.’ Aan het einde van de workshop weten de deelnemers meer over de intrigerende wereld van software-engineering en over de verschillen en overeenkomsten tussen software-engineering en andere disciplines, wat resulteert in betere samenwerking, betere oplossingen en hopelijk meer plezier in hun werk.