Snelle software - Is topsnelheid altijd nodig?

Snelle software - Is topsnelheid altijd nodig?
Photo by Mathew Schwartz / Unsplash

Iedereen heeft wel een idee bij snelheid. Usain Bolt rent (of rende) heel snel 100 meter. Een Ferrari is zo snel dat die binnen 3 seconden van 0 tot rijontzegging optrekt. Je splinternieuwe mobieltje of PC is snel. Maar een (toen) snelle iPhone of computer van 5 jaar geleden voelt lang niet zo vlug. En die vertraging begint eigenlijk meteen na de aanschaf. Jouw nieuwe aankoop voelt eventjes heel snel. Maar al ‘snel’ wordt die nieuwe snelheid gewoon. En vanaf dat moment is het bergafwaarts. Toch wordt jouw apparaat fysiek niet langzamer. En toch lijkt alles steeds minder snel te reageren.

Snelheid is één van de meest voelbare eigenschappen van goed werkende software. Wanneer je op een knop drukt, dan verwacht je een ‘onmiddellijke’ reactie. Je wil niet wachten tot de ‘computer klaar is’. Bij Semantica geloven wij dat software je in jouw werk moet helpen. Snelheid is hiervan een belangrijk onderdeel. Maar het is zeker niet het enige onderdeel. Als geen ander weten wij dat snelle software niet altijd goede software is. Maar langzame software zal al helemaal nooit de wereld veranderen.

Net als alles, heeft ook snelheid zijn prijs. De prijs van snelheid kan je zien als het verschil tussen een Ferrari en een Toyota. De Ferrari zal heel snel zijn, veel bekijks trekken en erg leuk om in te rijden zijn. Maar de Toyota is eigenlijk altijd ‘snel genoeg’, is veel goedkoper en is tenslotte heel betrouwbaar. Daarom stellen wij de vraag: “Wat is eigenlijk snel?” En misschien nog de belangrijkere vraag: “Wanneer is een programma snel genoeg?”

Twee smaken snelheid

Snelheid is er in twee soorten die erg verschillend lijken. Maar eigenlijk hebben deze twee soorten snelheid heel veel met elkaar gemeen. Deze twee soorten snelheid zijn:

  • De menselijke kant van snelheid
  • Daadwerkelijke snelheid

De menselijke kant van snelheid gaat over frictie. Of meer precies om het gebrek aan frictie. Het gaat over de gebruikerservaring: 'voelt het snel'. Daartegenover staat daadwerkelijke, meetbare snelheid. Metrieken zoals dat een actie in een programma 100 milliseconden duurt, dat het opslaan van een Word-bestand in 10 seconden gebeurt, of dat het opstarten van een computer binnen 15 seconden klaar is.

Eventually everything hits the bottom, and all you have to do is wait until someone comes along, and turns it back again. ⌛️
Photo by Aron Visuals / Unsplash

Wat is en wat maakt snelheid

We verwachten van een website dat die in één seconde geladen is. Een website die er langer over doet vinden we traag. En als die website 10 seconden moet laden, dan haken we meestal af. Maar een supercomputer die dagen staat te rekenen op een moeilijk, wetenschappelijk vraagstuk kan in vergelijking heel snel zijn. Twee voorbeelden die laten zien dat het doel deels bepaald of en wanneer iets snel is. Seconden kunnen traag zijn terwijl dagen snel kunnen zijn. Vervolgens is snelheid persoonlijk: wat de ene persoon als snel ervaart, zal een ander langzaam vinden. Tenslotte verandert snelheid met de tijd: wat wij vandaag snel vinden, vinden we ergens in de toekomst traag.

De snelheidsbeleving hangt samen met een aantal eigenschappen die niet meteen ‘snelheid’ schreeuwen. Eigenschappen die verbonden zijn met de taak van de software:

1) Het programma heeft een duidelijk doel

Zoals in de voorbeelden hierboven te zien is, bepaalt het doel van het softwareprogramma voor een deel ‘wanneer iets snel is.’ Moet het ‘onmiddellijk’ beschikbaar zijn zoals het laden van een website? Of mag het programma een tijd draaien zoals bij de verwerking van verzekeringsaanvragen in de nacht?

2) Het systeem is logisch opgebouwd en makkelijk te gebruiken

Kan je het programma gebruiken zonder uitgebreide cursus of lange inwerktijd? En is het makkelijk om nieuwe functies te gebruiken en te leren? Beschermt het systeem je tegen het maken van fouten? Want die fouten moet je later herstellen. Tenslotte de vraag: zijn er allerlei ‘nutteloze’, lastige handelingen nodig zijn om iets te kunnen doen. Want een programma kan nog zo snel zijn, als er veel extra handelingen nodig zijn, dan kan het programma toch ‘langzaam’ zijn.

3) Alle informatie die nodig is, is beschikbaar wanneer nodig

Krijg je de informatie op het scherm te zien, wanneer je de informatie nodig hebt? Immers, het is zonde om te wachten tot de informatie geladen is. Of dat je handmatig extra informatie moet opzoeken. Daarom geeft een programma dat snelheid bevorderd jou alle informatie die nodig is voor de taak waarmee je bezig bent. En een programma zou juist niets moeten tonen dat je kan afleiden en waardoor je fouten kan maken.

Flessenhalzen verwijderen

Omdat softwaresnelheid een combinatie van onderdelen is, zijn er veel factoren die vertraging kunnen veroorzaken en software traag doen voelen of traag doet zijn. Sommige stukken zijn super snel, terwijl andere stukken langzaam (of langzamer) zijn. Zie het als de ritsstrook op de snelweg die altijd voor files zorgt. Wanneer de flessenhals verwijderd wordt, dan rijdt het verkeer weer beter door.

Het verwijderen van flessenhalzen in een software applicatie wordt ‘optimaliseren’ genoemd. Bijvoorbeeld van een 'geheugenlek’ waardoor de computer langzaam 'vol loopt'. Een inefficiënte database die het zoeken naar gegevens moeilijker en langzamer maakt. Of software die de beschikbare hardware niet goed benut. Oorzaken die kunnen zorgen voor een langzamer programma. Maar gelukkig hoeven ze bijna nooit allemaal aangepakt te worden. Het verwijderen van de grootste flessenhals zorgt meestal al voor een verademing.

Smog and heavy trafić at night.
Photo by Jacek Dylag / Unsplash

Genoeg snelheid

Bij Semantica geloven wij niet in simpelweg ‘het snelste’. Wij vinden dat software snel genoeg voor zijn taak moet zijn. Hoe graag wij ook super snelle software maken, we moeten ook eerlijk zeggen dat dat veel tijd en werk kost. Daarom zoeken wij naar de beste snelheid voor de taken in jouw software. Zodat jouw programma nu, maar ook in de toekomst de taken ‘snel genoeg’ kan uitvoeren.

Uiteindelijk brengt dit ons terug naar de vraag: ‘Is het programma snel genoeg voor de taak die het moet doen?’ Wij kijken samen met jou naar wat snel genoeg is voor de taken die jouw software moet uitvoeren: en daar gebruiken wij een heel simpel model voor:

  1. Is de software snel genoeg voor de taak in jouw business?
  2. Ja, het is snel genoeg. Mooi zo :) Stoppen, want verder gaan is het zonde van het geld;
  3. Nee? Ga op zoek naar de flessenhals;
  4. Weeg de oplossingen voor de flessenhals af en voer het uit;
  5. Ga terug naar stap 1.

Doordat wij geloven in snel genoeg, gaan we niet door met optimaliseren tot jouw software zo snel is als een Ferrari. Tenminste, niet als het geen waarde biedt voor jouw onderneming. Want alle tijd die we besteden aan het maken van een Ferrari, kunnen we ook besteden aan het maken van nieuwe, nuttige functionaliteiten. Of aan het zorgen voor hogere betrouwbaarheid. Maar als het voor jouw business nodig is, dan gaan we net zo lang door tot het laatste beetje performance er uit is geperst.