Over stamkroegen & grootboeken

door Arnout Schuijff

21 sep. 2021

early floorplan
early floorplan
early floorplan

Af en toe schrijft iemand van het Tebi-team een artikel. In deze post deelt Arnout Schuijff, Junior Kotlin Developer bij Tebi (en CEO), een persoonlijk verhaal over zijn missie om zelfstandige ondernemers te helpen.

In 2012 ontwierp ik een eenvoudige app met een kassaysteem voor een vriend van me, Stef, de eigenaar van een kroeg waar ik graag kom. Stef hield destijds zijn verkopen nog bij met pen en papier, en de belastingdienst had hem al een keer een waarschuwing gegeven. Ik bood aan om hem te helpen door een simpel appje te schrijven, als vervanging voor z’n notitieboekje. Stef was in eerste instantie niet echt enthousiast om de digitale wereld te omarmen maar toch stemde hij uiteindelijk in met mijn aanbod.

De kassa-app die ik voor Stef ontwierp was klein, simpel en makkelijk te gebruiken. Acht jaar lang draaide de bar van Stef (inmiddels overgenomen door Frits) met hetzelfde systeem. Natuurlijk waren er gaandeweg wat aanpassingen en updates nodig (shoutout naar Pieter B.!) en liepen we tegen enkele problemen aan. Eén van die problemen was een rekening met de naam “Susana”, die €57,40 bedroeg en die in 2018 was geopend. Als je probeerde deze rekening te sluiten, crashte de hele app. Maar, geen zorgen: Frits plaatste deze rekening in een hoekje te plaatsen en maande al het personeel dat ze onder geen enkele omstandigheid die rekening mochten aanraken. Probleem opgelost!

In maart 2020 was ik net teruggekomen van een reis toen ik, net als iedereen, plotseling vanuit huis moest werken. Naast al het werk voor Adyen besloot ik in de rustige avonduurtjes door te werken aan het upgraden van het kassasysteem dat ik acht jaar eerder had gebouwd. Ik loste oude bugs op, optimaliseerde het design, en voegde een boekhoudsysteem toe. Toen ik dit project (lees; een uit de hand gelopen hobby) met andere (Android) developers deelde, vroegen ze me steeds dezelfde vraag: “Gebruik je al Kotlin?” Ik begon me geleidelijk te schamen om te zeggen, nee, het is in Java geschreven, dus besloot ik de overstap te maken naar Kotlin en zo werd ik een junior Kotlin-developer.

In het verleden heb ik al eerder met boekhoudsystemen gewerkt: als eerste, en alweer lang geleden, voor Bibit, toen een eenvoudige “betalingsstatus-tabel” een beetje uit de hand liep, en de tweede keer voor Adyen, waar we veel van de lessen uit de Bibit-tijd meenamen, vooral die met betrekking op schaalbaarheid. Maar deze keer zou het klein en simpel worden. Gewoon alleen de basis eigenlijk. Yeah, right…

Eerste taak: het bouwen van een soort mini grootboek (ledger) om alle verkopen bij te houden. Dit idee van mini grootboeken ontwikkelde zich geleidelijk tot wat ik nu subledgers noem: kleine grootboeken die dynamisch ontstaan en een reeks boekingen over een willekeurige periode bijhouden. Wanneer zo’n subledger wordt afgesloten, wordt het resulterende saldo overgeboekt naar een andere subledger. Bijvoorbeeld, een subledger die een factuur vertegenwoordigt, wordt afgesloten en het saldo wordt geboekt naar een subledger die een werkdag vertegenwoordigt. Als je het in zijn geheel bekijkt, bestaat het overkoepelende grootboek uit een hele zwerm subledgers die communiceren via een streamingplatform, in ons geval Kafka. Ik noem het een ‘zwerm’ omdat de subledgers zowel verbonden als onafhankelijk zijn.

Dus, ‘klein en simpel’ werd uiteindelijk wel iets meer dan dat. Ik besefte toen, dat ik in feite een soort boekhoud-infrastructuur aan het bouwen was dat een basis kon vormen voor veel meer bedrijfsprocessen, niet alleen het kassasysteem op de toonbank. Ik raak echt enthousiast als ik hierover praat, vanwege alle mogelijkheden die het biedt om apps te bouwen die makkelijk online en offline werken en toch gesynchroniseerd blijven. Het maakt grootboeken mogelijk die zo klein zijn als een enkele factuur, tot grote bankgrootboeken. Deze ‘oneindige’ schaalbaarheid wordt bereikt door de subledgers onafhankelijk van elkaar te houden en te laten communiceren via event streaming met Kafka. Dit levert uiteindelijk een extreem snelle gebruikerservaring op. Maar daar vertel ik je graag alles over in een andere post.

Een andere belangrijke motivatie voor mij is om samen te werken met mensen die mijn enthousiasme delen, die mij recht in mijn gezicht zouden vertellen wanneer ik met een belachelijk idee kom en die creatief, slim en grappig zijn. Ik voel me vereerd dat het me gelukt is om mijn getalenteerde vrienden Mazdak, Greta, Rob en Thijs bij dit avontuur te betrekken. Dit diverse gezelschap deelt allemaal het fundamentele geloof dat het mogelijk is om een ethisch bedrijf op te zetten dat alleen kosten in rekening brengt voor toegevoegde waarde, terwijl het in lijn blijft met de belangen van onafhankelijke ondernemers.

Tebi is onze poging om een nieuwe generatie technologie voor bedrijven te creëren; één platform dat lokale bedrijven over de hele wereld alles biedt wat ze nodig hebben, ontwikkeld voor en door ondernemers.

We doen het stap voor stap. Op het moment van schrijven, iets meer dan een jaar nadat ik begon te werken aan deze ideeën, ging de allereerste versie van Tebi live in mijn stamkroeg. De trein is vertrokken!