Veel developers hebben dit volgende (vaak onware) verhaal gehoord. Als software engineer krijg je de kans om een innovatief platform te ontwerpen dat de potentie heeft om miljoenen gebruikers te bereiken. Het platform speelt perfect in op MVO. Je hebt geen legacy software om mee te werken en je hebt volledige controle over hoe je het platform wilt ontwerpen. De enige vereisten? Toekomstbestendig én beveiliging en privacy zijn ingebouwd. Hoe klinkt dat voor jou?
Als iemand dit tegen mij zou zeggen, zou ik zeggen dat zoiets niet bestaat. Als software-engineer moet je 95% van de tijd voortbouwen op iets wat al is gebouwd. Toch is dit precies de kans die we hebben gehad en daar ga ik je in deze blog alles over vertellen. Daar gaan we!
In samenwerking met The Social Handshake hebben we een platform gecreëerd: Loongift
Werkend bij een bureau dat haar klanten helpt bij hun digitale transformaties, hebben we zelden startups als klant. Het inhuren van externe consultants kost natuurlijk geld, iets waar startups zelden toegang toe hebben. Eens in een blauwe maan is er een startup met een echt innovatief idee dat erin is geslaagd om wat financiering te krijgen, maar geen IT-kennis in huis heeft. De naam van die startup is The Social Handshake, en wij mochten ze hiermee helpen.
We ontwierpen en bouwden een platform genaamd LoonGift, waarin goed doen gemakkelijk wordt gemaakt door medewerkers in staat te stellen een deel van hun salaris rechtstreeks te doneren aan een goed doel naar keuze. Het bedrag dat je wilt doneren wordt direct van je loonstrook afgeschreven en jouw werkgever heeft geen inzage of inzicht in aan welke goede doelen je doneert. Aan het einde van het fiscale jaar krijg vervolgens belastingvoordeel over het bedrag dat je aan een goed doel hebt geschonken.
Het is gemakkelijk voor deelnemers om zich aan te melden en hun donaties te wijzigen. Een ander bijkomend voordeel is dat werkgevers betalen voor het gebruik van het platform, waardoor de volledige donatie van de werknemer naar het goede doel gaat. Het goede doel kan je ook niet om meer geld vragen of je andere informatie sturen als je je er niet voor hebt aangemeld en de goede doelen betalen geen retentiekosten of acquisitiekosten.
Het concept achter LoonGift heet payroll giving. Payroll Giving is populair in verschillende landen in Europa, bijvoorbeeld in Duitsland en Engeland. In Nederland bestond zoiets echter nog niet.
Google Cloud als basis voor het platform
Dus wat werd de aanpak? Gezien het feit dat zoiets nog niet bestond in Nederland en gezien het feit dat het concept zich heeft bewezen in andere Europese landen, hadden we een unieke kans om een platform te ontwerpen dat potentieel enorm kan zijn! Omdat we een Google Cloud-partner zijn en de mogelijkheden op het Google Cloud-platform eindeloos zijn hebben we ervoor gekozen om het écht cloud-native te gaan inrichten.
Helaas hadden we geen onbeperkte tijd en middelen om dit geweldige platform te bouwen. Zoals bij alle softwareprojecten moesten we keuzes maken over waar we onze tijd en energie aan besteden en welke functies vertraging konden oplopen. Zo'n platform helemaal opnieuw bouwen is lastig omdat het een constante afweging is tussen 'goed genoeg voor nu' en 'toekomstbestendig'. Gelukkig voor jou deel ik hier onze tips, trucs en worstelingen, zodat je er niet op de harde manier achter hoeft te komen!
Stappen die je moet nemen in platform denken
Je wilt dus een platform ontwerpen dat toekomstbestendig is. Hoe ga je hiermee om?
1. Denk vooruit
Het is onmogelijk om alles in de toekomst te weten.. Er zijn meerdere onbekenden en je bouwt inherent een technische schuld in vanaf het begin. Dit betekent niet dat je zomaar kunt beginnen met bouwen en kijken waar je uitkomt! Je moet een idee hebben waar je voor ontwerpt. Samen met onze UX en UI designers maakten we eerst een prototype genaamd ‘the dream’. ‘The dream’ was een prototype van het complete platform, gevalideerd door potentiële eindgebruikers. Met ‘The dream’ in gedachten hadden we een idee waar we naartoe moesten werken en hoe functionaliteiten in de toekomst zouden moeten werken. Nadat we een prototype van 'The dream' hadden gemaakt, konden we beslissen hoe ons MLP (Minimum Lovable Product) eruit zou gaan zien. Met 'The dream' konden we ook architecturale en technische beslissingen nemen die misschien niet strikt noodzakelijk waren voor de MLP, maar die cruciaal waren voor het succes op lange termijn voor LoonGift.
2. Maak de onvermijdelijke technische schuld vervangbaar
Zelfs bij ontwerpen met het oog op de toekomst is het onmogelijk om alles van tevoren te weten. Zorg er dus met deze bekende onbekenden voor dat de technische schuld die je creëert zo vervangbaar mogelijk is. Dit betekent dat je misschien wat functionaliteit wilt vervangen. Zelfs in een andere programmeertaal. Dus, zoals de meeste moderne applicaties, gebruik je natuurlijk een microservice-ontwerp. Zorg ervoor dat elke microservice verantwoordelijk is voor zijn gegevens en alleen zijn eigen gegevens. Het wijzigen van de gegevens van een andere dienst is nooit toegestaan. Dus zorg je ervoor dat je een relatief eenvoudig dienst kunt vervangen als dat nodig is.
3. Security by Design
Soms zijn beveiliging, gebruiksvriendelijkheid, tijd en budget een kleine afweging, maar beveiliging mag er nooit onder lijden. Vooral als je met gevoelige gegevens werkt, denk dan vooraf na over de ongelukkige stromen. Wat realistisch gezien fout kan gaan, gaat fout. Er zijn nog genoeg randgevallen waar je nog niet aan hebt gedacht, dat garandeer ik je. Zorg ervoor dat de randgevallen die je kan bedenken, zijn afgedekt. In deze gevallen, met een beperkt budget en hoge ambities, maak ik graag zoveel mogelijk gebruik van managed services. Beheerde services op cloud platforms hebben standaard ingebouwde beveiliging.
4. Bereid je voor op ‘smart data things’
Machine learning is momenteel hot (vanzelfsprekend). En zelfs als je op dit moment geen specifieke use-case in gedachten hebt, bereid je dan voor op de toekomst! Laat gegevens vrij door jouw microservice-architectuur stromen. Laat elke dienst gegevens produceren en laat een andere dienst de gegevens ophalen. Elke dienst die zich heeft geabonneerd op de data van de producerende dienst (en uiteraard de data mag zien) kan ermee doen wat ze willen. Dit is een perfecte architectuur om gegevens uit verschillende bronnen te combineren om mogelijk machine learning of grootschalige gegevensanalyse uit te voeren!
De takeaways van platformdenken op een rij
De meeste dingen die ik je in deze blog vertel kwamen we op de harde manier te weten. We waren zo enthousiast om een nieuw platform helemaal opnieuw te ontwerpen dat we de nieuwste technologieën wilden gebruiken. Met de nieuwste bedoel ik echt de nieuwste - verschillende producten en beheerde services die we gebruikten, waren nog in bèta. Ik hoef je niet te vertellen dat het gebruik van dingen die in bèta zijn, problemen kan veroorzaken in productieomgevingen, vooral als de middelen beperkt zijn. We hebben het voor elkaar gekregen, maar omwille van het gezond verstand zou ik het afraden.
Probeer de stakeholders uit te dagen. Ze hebben duidelijk een idee van wat er gebouwd moet worden en hoe het gebouwd moet worden, maar het is goed om altijd wat perspectief in te brengen. Aangezien jij (de programmeur) de technische expert bent, moet jij de klant adviseren wanneer je een betere manier ziet om een functie in te bouwen.
Na alle geleerde lessen is het resultaat echt iets om trots op te zijn. Een schaalbaar, innovatief, cloud-native, toekomstbestendig platform zonder infrastructureel onderhoud (bedankt, managed services!). Ga eens kijken op Loongift en als je in Nederland bent, kijk dan of je werkgever ook mee kan doen!