Alle notities
NOTE DROP / 02PRINCIPLE≈ 4 MIN

Architectuur voor prioriteiten die nog kunnen veranderen

Een beweeglijke roadmap werkt beter wanneer software in kleine stappen kan veranderen en belangrijke technische beslissingen omkeerbaar blijven.

Een now, next, later-roadmap maakt onzekerheid expliciet. Wat nu belangrijk lijkt, kan door nieuwe informatie opschuiven. Een oplossing in Later hoeft uiteindelijk helemaal niet gebouwd te worden. Dat is productmatig gezond, maar het stelt ook eisen aan de software die development onderweg maakt.

Een beweeglijke roadmap werkt slecht wanneer iedere koerswijziging een grote migratie, langdurige branch of allesomvattende release vraagt. Flexibiliteit in planning heeft daarom een technische tegenhanger nodig: systemen die veilig in kleine stappen kunnen veranderen.

Maak het verschil tussen omkeerbaar en kostbaar

Niet iedere technische beslissing verdient dezelfde hoeveelheid voorbereiding. De keuze voor de tekst van een knop is eenvoudig te wijzigen. Een publiek API-contract, de structuur van opgeslagen gegevens of een integratie waarop andere teams bouwen, is veel duurder om terug te draaien.

Bij onzekere prioriteiten helpt het om dat verschil bewust te maken. Omkeerbare keuzes kunnen snel en lokaal worden genomen. Voor moeilijk omkeerbare keuzes is meer discovery, afstemming en soms een kleine technische proef nodig.

Dat is geen pleidooi om alle toekomstige scenario’s vooraf te ondersteunen. Juist niet. Het voorkomt dat we veel flexibiliteit bouwen op plekken waar verandering goedkoop is, terwijl we een onzichtbare langetermijnverplichting aangaan op een grens die later moeilijk beweegt.

Lever verticale stukken die zelfstandig waarde hebben

Grote projecten worden vaak technisch opgedeeld in lagen: eerst de database, daarna de backend en uiteindelijk de interface. Iedere laag kan keurig worden afgerond zonder dat een gebruiker iets nieuws kan doen. Als de prioriteit halverwege verandert, blijft vooral half geïntegreerde techniek achter.

Een dun verticaal stuk loopt door de noodzakelijke lagen heen en levert één beperkt maar bruikbaar resultaat. Daardoor komt feedback eerder en kan de organisatie na iedere stap opnieuw bepalen of de volgende uitbreiding nog steeds de beste investering is.

Voor development betekent dit dat interfaces, data en gedrag vanaf het begin samen worden bekeken. Niet alles hoeft productierijp op maximale schaal, maar het stuk dat wordt opgeleverd moet wel eerlijk werken en onderhoudbaar zijn.

Kleine stappen zijn pas waardevol wanneer ze zelfstandig te begrijpen, te testen en zo nodig te stoppen zijn.

Ontkoppel uitrollen van activeren

Feature flags en compatibele wijzigingen kunnen helpen om software geleidelijk uit te rollen. Nieuwe code kan al aanwezig zijn terwijl een functie nog niet voor iedereen actief is. Een datamigratie kan in meerdere releases plaatsvinden zonder dat oude en nieuwe applicatieversies elkaar direct blokkeren.

Dat verkleint de omvang van een beslismoment. We hoeven niet alle technische verandering, gebruikersactivatie en organisatorische communicatie op exact hetzelfde tijdstip te laten plaatsvinden.

Maar deze technieken zijn geen gratis flexibiliteit. Onbeheerde feature flags worden permanente vertakkingen. Tijdelijke compatibiliteitslagen blijven bestaan als niemand het opruimen plant. Iedere extra route door het systeem vergroot de testlast.

De afspraak moet daarom niet alleen zijn hoe iets wordt aangezet, maar ook wanneer de tijdelijke constructie verdwijnt.

Houd een kleine technische horizon

Dat Later onzeker is, betekent niet dat architectuur alleen naar Now mag kijken. Sommige veranderingen vragen voorbereiding voordat een productitem bovenaan staat. Denk aan het afbouwen van een verouderde afhankelijkheid, het splitsen van een te sterk gekoppeld domein of het verbeteren van deploymentmogelijkheden.

Een kleine technische horizon helpt om zulke voorwaarden zichtbaar te maken. Niet als volledig ontworpen toekomstplatform, maar als antwoord op de vraag: welke eigenschappen moet het systeem behouden zodat meerdere waarschijnlijke richtingen nog mogelijk blijven?

Dat kan betekenen dat we een contract stabiel houden, meetbaarheid toevoegen of een duidelijke grens introduceren. Het kan ook betekenen dat we bewust niets abstraheren totdat een tweede concrete toepassing bestaat.

Flexibel plannen vraagt om expliciete grenzen

Software kan nooit iedere toekomstige prioriteit even gemakkelijk ondersteunen. Pogingen om dat wel te doen leveren meestal generieke constructies op die veel kosten en nog steeds niet aansluiten op de werkelijke verandering.

De technische opdracht is daarom niet om een systeem onbeperkt flexibel te maken. Het is om verandering lokaal te houden, kostbare beslissingen herkenbaar te maken en regelmatig werkende software op te leveren.

Dan kan een roadmap bewegen zonder dat de codebase bij iedere beweging opnieuw moet worden uitgevonden.

michael@schouman:~

MS_ personal shell v2026.15.1

Typ help voor beschikbare commando’s.