Bij nieuwe softwarefunctionaliteiten moet je veel breder en verder kijken dan enkel het probleem en de oplossing die je hiervoor ontwikkelt. De nieuwe features die je ontwikkelt hebben impact op jouw organisatie, andere bedrijfsprocessen en data, de toekomst, andere applicaties…kortom: jouw succes! Heb jij aan alle factoren gedacht die je raakt met nieuwe softwarefunctionaliteit vóórdat je begint met ontwikkelen?
Wordt er ontwikkeld wat de bedoeling is?
Bij de ontwikkeling van software zijn diverse mensen betrokken, ieder met een eigen interpretatie van hetzelfde onderwerp. De klant heeft een probleem en omschrijft dit vanuit zijn perspectief, de consultant interpreteert dat vanuit zijn eigen invalshoek, de engineer ziet het resulterende wijzigingsvoorstel vanuit weer een ander oogpunt en het resultaat is uiteindelijk niet wat de klant oorspronkelijk bedoelde. Communicatie is dus cruciaal. Je dient continu af te stemmen en terug te koppelen om te zien of je elkaar hebt begrepen en dus in staat bent om tot een passende oplossing te komen.
Levert de nieuwe functionaliteit voordeel op?
Wat is de reden die ten grondslag ligt aan de ontwikkeling van de nieuwe functionaliteit? “Zo deden we het in het vorige systeem ook” is geen legitieme reden. Softwareontwikkeling kost geld en moet dus waarde opleveren. Return On Investment is waar het om draait. Zorg dus dat je helder in kaart hebt gebracht hoe je nu werkt (software en bedrijfsprocessen), hoe dit verandert met de beoogde nieuwe functionaliteit en welke voordelen dit oplevert. Ga je efficiënter werken? Minder fouten maken? Klanten beter van dienst zijn? Je moet kunnen motiveren dat de softwareontwikkeling de organisatie succesvoller maakt.
Wat is de impact van de functionaliteit op andere processen?
Wat je ontwikkelt kan goed functioneren, maar hoe beïnvloedt het de andere processen? Werkt de rest van het systeem nog naar behoren? Te vaak wordt slechts de nieuwe functionaliteit getest, terwijl deze een geïntegreerd onderdeel is van een complete applicatie. Beoordeel hoe het nieuw te ontwikkelen stuk past binnen de bestaande applicatie en processen. Sluit het aan op wat je al hebt en hoe je nu werkt? En zorg ervoor dat je de juiste tools hebt om te testen. Automatische testapplicaties en load-tests zijn essentiële hulpmiddelen om bestaande processen te blijven testen.
Wat zijn de gevolgen voor de klant?
Wijzigingen kunnen impact hebben op bestaande processen, maar ook op bestaande data. Hoe zorg je ervoor dat een wijziging backwards compatible is? Hoe draag je zorg dat bestaande klantdata op de juiste manier in een nieuwe processtructuur wordt geplaatst en niet verloren gaat? Hier zal je vooraf, maar ook gaandeweg het proces rekening mee moeten houden. Ook hier is een goede communicatie met consultant en klant van niet te onderschatten waarde.
Hoe integreer je verschillende platformen zo efficiënt mogelijk?
Tegenwoordig is het niet meer houdbaar om op één platform te werken. Mobiele applicaties en webapplicaties maken steeds meer deel uit van een compleet pakket. Dit brengt ook vraagstukken met zich mee, omdat verschillende ontwikkeltalen, -platformen en -processen feilloos met elkaar moeten worden geïntegreerd. Buiten kennis van de talen en bijgewerkte technische documentatie zijn goede procesbeschrijvingen en testwerk daar heel belangrijk bij.
Wat zijn de gevolgen voor de toekomst?
Maatwerk zal je bij een upgrade mogelijk opnieuw moeten ontwikkelen of kan wellicht niet eens mee naar een volgende versie. Dit kan een tijdrovende en kostbare klus worden en de klant moet feitelijk investeren in wijzigingen die ze al hadden. Denk daarom bij maatwerk heel goed na. Heeft de klant dit nieuwe stukje functionaliteit echt wel nodig? En is het iets dat een kortstondig probleem oplost of is het iets dat nodig is voor de langere termijn? Is de technologie er eentje die ook over een paar jaar nog gebruikt en – niet onbelangrijk – ondersteund wordt?
Daarnaast zal je er natuurlijk rekening mee moeten houden dat je over een jaar wellicht niet meer zo in de materie zit als nu, of dat een collega-ontwikkelaar naar je code moet kijken. Kortom: denk bij het maken van functionaliteit niet alleen aan hoe je het werkbaar maakt, maar denk ook aan het onderhoudbaar houden van wat je maakt. Dit kan wellicht in het beginstadium iets meer werk opleveren, maar dit zal zich later dubbel en dwars terugbetalen. Voor je het weet groeit je code namelijk uit tot een ondoorzichtige bord spaghetti en vallen er bij iedere wijziging drie andere zaken om.
Goed ontwikkelen doe je voor tachtig procent voor je ook maar een letter codeert. Goed nadenken dus voordat je begint met ontwikkelen, alles over nieuwe functionaliteit in kaart brengen en pas dan een weloverwogen beslissing nemen. Dat bespaart je veel problemen!
Peter Conijn is Application Developer bij Dysel en zet moderne technologie om in praktische en bruikbare toepassingen voor klanten.