Efficiëntie is een woord dat nog wel eens voorbijkomt op de werkvloer. Wat is nou de beste manier om iets aan te pakken, hoe gaan we iets opzetten en hoe doen we dit het snelst? Wij waren benieuwd naar de visie van een ontwikkelaar op dit onderwerp. Voor een interessant interview over dit onderwerp klopten we daarom aan bij Erik Orbons, één van onze developers. Hij ziet efficiëntie als het kijken naar de toekomst en het constant blijven verbeteren en ontwikkelen. Ook maakt hij onderscheid in efficiëntie van diensten en de efficiëntie van de manier van werken.
Betekenis van efficiëntie
Er zijn veel verschillende betekenissen van het centrale begrip. Voor Erik staat het in verbinding met het kijken naar de toekomst. Hij vertelt er het volgende over: “Als we het hebben over efficiëntie aan de achterkant van de producten vind ik eigenlijk twee dingen belangrijk.” Als eerste noemt hij de manier van werken. Hij vertelt dat het belangrijk is voor een ontwikkelteam om snel en goed te kunnen werken, zonder in te leveren op kwaliteit. Volgens hem betekent het begrip namelijk niet altijd het snelste of de makkelijkste manier. Op de langere termijn moet een dienst of oplossing ook efficiënt zijn. Dus daar moet over worden nagedacht. Het tweede punt is volgens hem de efficiëntie van de dienst zelf. Dus hoe snel is de dienst, hoeveel resources gebruikt deze en hoeveel servers zijn er nodig? Dit speelt allemaal mee. Hij omschrijft het als het afzetten van de efficiëntie van het team tegen wat het kost om de applicatie in de lucht te houden. Samen als team maken ze deze keuzes. Tijdens het ontwerpen van een dienst proberen ze al zoveel mogelijk rekening te houden met efficiëntie. Vooruitkijken is dan ook belangrijk: hoeveel gebruikers komen erop, wat is de verwachte groei en kunnen we het snel bijschalen als dit nodig is? Erik geeft een voorbeeld van afwegingen die je maakt. “Het zijn vaak kosten-baten afwegingen. Natuurlijk moeten bepaalde diensten snel zijn, zoals een spraakdienst. Mensen willen niet een paar seconden wachten voordat de woorden die je zegt overkomen. Bij andere diensten zoals Portal kan je hier nog wat mee schipperen. ”Bij Portal is het niet zo erg dat een klik op een knop 10 milliseconden of 50 milliseconden in beslag neemt. Als het secondenlang duurt, dan ontstaan er frustraties. Maar daar zit een groot speelveld tussen.”
Toekomst en efficiëntie
Bij het ontwikkelen van een dienst zijn toekomstige ontwikkelingen van invloed volgens Erik. Het kan zijn dat een dienst nu super efficiënt draait, maar dat deze in de toekomst daardoor moeilijk onderhoudbaar is. Dat zijn dingen waar je rekening mee moet houden. Hij noemt als voorbeeld het geheugengebruik. Je kan er in je software voor zorgen dat je zo min mogelijk geheugen gebruikt, maar dan is het in de toekomst moeilijker voor jezelf. Als je nu wat meer geheugen koopt en in de servers zet, dan kost het nu geld. Maar doe je dit niet, dan heb je veel meer ontwikkeltijd nodig. En dat is minder voordelig dan het vooruitkijken.
Efficiëntie in het ontwikkelteam
“In een softwareteam is het belangrijk dat je zonder afhankelijkheden door kunt werken en weinig op elkaar hoeft te wachten. De teams waarin ik heb gewerkt is dat tot nu toe wel de belangrijkste efficiëntieslag die je kunt maken. Bij Speakup is dit niet anders, omdat we niet aan projecten werken, maar aan diensten die voor langere tijd door ons onderhouden worden.” Daarom is die winst in tijd erg belangrijk. Efficiëntie zit voor hem voor een groot deel in ontwikkelsnelheid, effectief werken en kwaliteit kunnen leveren. Het belangrijkste onderdeel is volgens hem dat je leert van het proces en verandert waar nodig. Dat geldt voor de manier van werken, maar ook voor de manier waarop onze diensten draaien. Erik antwoordt: “Keuzes worden over het algemeen wel samen gemaakt. Veel nemen we ook al mee in het ontwerp. Je gaat bijvoorbeeld kijken naar hoe een dienst wordt gebruikt.” Verder is het team bezig met het weghalen van drempels. Vorig jaar hebben ze geïnvesteerd in een betere manier van ontwikkelen en dingen in productie zetten. Het werk moet zo soepel mogelijk lopen en daarom moet er, waar mogelijk, parallel worden gewerkt. “Eerder kwam het voor dat je langs verschillende personen moest lopen, voordat iets daadwerkelijk in productie stond. Dat proberen we uit het proces te halen en te vervangen door een stuk standaardisatie gecombineerd met automatisering”, zegt Erik. Hij legt uit dat dit werkzaamheden zijn die snel naar de achtergrond verdwijnen, omdat het proces niet zichtbaar is voor anderen. “Soms is het daardoor moeilijker te verantwoorden en de onzichtbaarheid maakt daarbij dat het makkelijk is om de focus erop te verliezen.” Toch is het volgens Erik wel belangrijk om bezig te blijven met dergelijke innovaties volgens.
Efficiëntie voor klanten
Tijdens het ontwikkelproces worden er ook vaak klanten bij betrokken. Vooral bij de laatste diensten proberen ze dit zoveel mogelijk te doen. Het leidt tot de ontwikkeling van een product. Erik noemt de term ‘minimal viable product’. Hij legt uit: “Dit is een techniek die je kunt gebruiken. Het betekent dat je eerst gaat focussen op iets dat werkt en wat voldoende is om een dialoog aan te gaan met je klant. Dat ga je langzaam uitbouwen zodat je meer ingespeeld bent op de klantwens. Een nadeel van die aanpak is dat je het soms niet kunt bijbenen. Als je met de klant in gesprek gaat kan het namelijk zijn dat je in een stroomversnelling terecht komt. Speakup levert namelijk vooral diensten, dus wij leveren nooit iets aan één klant, maar altijd aan meerdere klanten. Als die dienst snel populair wordt, kan het zijn dat je het als ontwikkelteam niet kunt bijbenen.” Naast rekening houden in het ontwerp met efficiëntie, kan je ook prototypes bouwen die de klanten kunnen testen. Dan pak je ook gelijk de gebruikerservaring mee.
Zichtbaarheid in oplossingen
Het ontwikkelteam van Speakup kijkt dus goed vooruit. Daarin houden ze al rekening met de efficiëntie van de producten. Erik licht nog verder toe: “Als je begint met ontwikkelen dan ga je nadenken over de soort dienst en de daarbij horende criteria. Een goed voorbeeld hiervan is onze CTI-dienst. Als jouw telefoon gaat rinkelen, komt er een pop-up in jouw beeldscherm over de beller.” Ze hebben goed nagedacht over de efficiëntie van deze dienst. Erik vertelt over de speelruimte die je hebt bij deze dienst: “Als het vijf tot tien seconden duurt voordat de pop-up in beeld komt, dan is het vervelend. Mensen willen dan al de telefoon opnemen en dan ben je te laat met de pop-up. Maar als je een paar seconden neemt als periode, dan is het acceptabel. Deze speelruimte heb je niet bij een telefoongesprek, die stemmen moeten gelijk doorkomen. Dus in het ontwerp maak je op deze manier andere keuzes.” Onze nieuwe dienst is Reporting en daar zijn andere keuzes gemaakt. Erik vertelt: “Reporting gebruik je achteraf, daarbij speelt efficiëntie wel een rol, vanwege het feit dat het veel data is. Alleen bij Reporting is het minder erg als het een tijdje duurt voordat de data binnengehaald kan worden in de server. Dit is niet erg, omdat je een heel ander soort gebruik hebt vanuit de gebruiker.” Het team focust meer op de kwaliteit van het ontwerp en niet op de ruwe snelheid van de dienst. Hoe zetten we functionaliteit zo goed mogelijk onderhoudbaar neer met het oog op de toekomst? Dat gaat soms ten koste van de efficiëntie, maar niet van de kwaliteit.
Oplossingen onderhouden
Maar hoe weet je nou wanneer je een dienst moet aanpassen of veranderen? Erik: “Dat kan op verschillende manieren. Je hebt je monitoring erop zitten, vooral voor de situaties waarin het onverwachts is dat de dienst het niet aankan. Dit merk je dan in de monitoring.” Daarnaast legt hij uit dat dit vaak te maken heeft met het aantal gebruikers. Deze aantallen zijn algemeen bekend. “Dan weet je wat je moet doen als je boven een bepaald punt uitkomt.” Veel mensen denken tijdens updates ‘alweer?’. Maar Erik vertelt hierover: “Met een update kan je de dienst aanpassen. In veel gevallen betekent dat gewoon het uitbreiden van de hardware die je hebt. Als het nu op drie machines draait en het groeit snel, dan moet er op een gegeven moment een vierde bij.” Vervolgens legt hij uit dat ze ook updaten in verband met security. Eigenlijk is het allemaal in het belang van de klant!
Voor ontwikkelaar Erik is efficiëntie dus vooral het kijken naar de toekomst en het constant blijven verbeteren en ontwikkelen. Leuk om eens een kijkje in het proces van het ontwikkelteam te krijgen en hoe zij het voor de klant en zichzelf zo efficiënt mogelijk maken. Op naar een innovatieve toekomst!