Functie
Backend developer – Regie Op Berichten (ROB)
Je werkt mee aan de herbouw van ROB, een multichannel communicatieplatform voor medewerkers in de operatie. Het platform verstuurt gerichte en gepersonaliseerde berichten via meerdere kanalen. Jouw werk heeft daarmee direct invloed op de dagelijkse operatie en de dienstverlening aan reizigers.
Je werkt op het snijvlak van domein, architectuur en realisatie. In een multidisciplinair DevOps-team ben je betrokken vanaf het eerste domeingesprek tot en met productie, beheer en doorontwikkeling. Je neemt verantwoordelijkheid voor de kwaliteit van het platform.
Wat ga je doen?
Domein begrijpen en modelleren
Je werkt samen met de Product Owner, analisten, domeinexperts, operatie, architecten en andere ontwikkelaars.
Je onderzoekt onduidelijkheden voordat je een oplossing bouwt en helpt een gedeelde domeintaal vast te leggen.
Je helpt bepalen welke verantwoordelijkheid bij welke bounded context hoort en bewaakt dat elke context eigenaar blijft van zijn eigen gedrag, data en betekenis.
Je bouwt services volgens clean en hexagonal architecture.
Je bouwt event-driven microservices die onafhankelijk te testen, uit te rollen en terug te draaien zijn.
Backend en integratie
Je ontwikkelt backendservices in C#/.NET.
Je ontwerpt REST API’s volgens HTTP-semantiek en resourcegerichte principes.
Je ontwerpt en implementeert domeinevents op Azure Service Bus.
Je verwerkt berichten idempotent en denkt mee over outbox, retries, dead-lettering en replay.
Je gebruikt waar mogelijk uitbreidbare contractwijzigingen en behandelt betekenisvolle wijzigingen als een nieuw contract of een nieuwe contractversie.
Je werkt met Azure SQL, Cosmos DB, Redis en Blob Storage als infrastructuuradapters.
Je bouwt kanaaladapters voor onder meer Azure Communication Services en Firebase.
Specificaties en testen
Je maakt samen met product- en domeinexperts duidelijke, concrete en toetsbare specificaties.
Je vertaalt specificaties naar BDD-scenario’s in begrijpelijke domeintaal, met Reqnroll waar passend.
Je werkt zowel de gewenste werking als negatieve scenario’s uit, waaronder validatie-, autorisatie-, bron-, opslag- en veiligheidsfouten.
Je schrijft tests vóór of tegelijk met de implementatie om de gewenste werking aan te tonen.
Je zorgt dat requirements terug te vinden zijn in scenario’s, tests, contracten of architectuurchecks.
Je gebruikt architectuurtests, bijvoorbeeld met ArchUnitNET, om laagafhankelijkheden en de isolatie van bounded contexts te bewaken.
Je beoordeelt niet alleen testcoverage, maar ook de kwaliteit van tests.
Je maakt operationele eisen, zoals latency, auditability, observability en herstelbaarheid, testbaar.
Kwaliteit, security en operability
Je werkt met code reviews, statische kwaliteitschecks, dependency scanning en securityscans in CI/CD.
Je ontwerpt vanuit least privilege, security-by-design en privacy-by-design.
Je gebruikt voor Azure-resources waar mogelijk Managed Identity via Workload Identity en Microsoft Entra RBAC.
Je maakt metrics, logs, traces, auditrecords, health checks en alerts onderdeel van de oplossingen die je oplevert.
Je denkt mee over betrouwbaarheid, retries, fallback, failover, zero-downtime deployments en rollback.
Wat breng je mee?
Minimaal hbo- of wo-werk- en denkniveau.
Minimaal vijf jaar ervaring als backend- of fullstackdeveloper met C# en .NET in professionele softwareontwikkeling.
Aantoonbare ervaring met domeinmodellering en Domain-Driven Design, of het vermogen om dit overtuigend in de praktijk toe te passen.
Ervaring met clean architecture, hexagonal architecture, ports and adapters of een vergelijkbare aanpak voor expliciete scheiding van lagen en verantwoordelijkheden.
Ervaring met het ontwerpen en bouwen van microservices of andere zelfstandig deploybare services.
Ervaring met REST API’s, integratiecontracten en versiebeheer van API- en eventcontracten.
Ervaring met geautomatiseerd testen op meerdere niveaus, waaronder unit-, integratie-, contract- en acceptatietests.
Ervaring met BDD, specification-by-example of een vergelijkbare aanpak waarbij specificaties uitvoerbaar worden vastgelegd.
Ervaring met werken in een DevOps-team en met CI/CD-pijplijnen.
Uitstekende mondelinge en schriftelijke beheersing van het Nederlands.
Pré’s
Ervaring met Azure en cloud-native backendontwikkeling.
Ervaring met Azure Service Bus, event-driven integratie, outbox, idempotentie en dead-letterafhandeling.
Ervaring met Azure SQL, Cosmos DB, Redis en Blob Storage.
Ervaring met ASP.NET Core, Entity Framework Core en dependency injection.
Ervaring met Reqnroll, SpecFlow, Gherkin, Playwright, Testcontainers, WireMock, contract testing, ArchUnitNET of vergelijkbare tooling.
Ervaring met Bicep, Terraform of andere vormen van infrastructure-as-code.
Ervaring met Kubernetes/AKS, observability, Datadog, tracing, SLO’s, loadtesten en resilience testing.
Ervaring met Microsoft Entra ID, OAuth2/OIDC, scopes, app roles en Managed Identity/Workload Identity.
Ervaring met privacy-by-design, audit trails, retentie en dataminimalisatie.
Ervaring met werken volgens architectuur-, code-, API-, security- en loggingstandaarden.
Ervaring met Angular, Blazor, Kotlin of Jetpack Compose.
Hoe werk je?
Je denkt vanuit de medewerker in de operatie en de waarde voor de reiziger.
Je schakelt gemakkelijk tussen domeingesprek, model, C#-code, test en productiegedrag.
Je maakt aannames zichtbaar en stelt gerichte vragen voordat je complexe functionaliteit bouwt.
Je voelt eigenaarschap voor kwaliteit, betrouwbaarheid en onderhoudbaarheid.
Je werkt graag samen met product, architectuur en operationele stakeholders.
Je geeft en ontvangt feedback en maakt ontwerpkeuzes bespreekbaar.
Je bent nieuwsgierig naar nieuwe ontwikkelingen, waaronder AI en agent-based oplossingen, en zet die in wanneer ze aantoonbare waarde toevoegen.
Je werkt datagedreven aan productkwaliteit en operationele verbetering.
Eisen
- Je beschikt over minimaal HBO/WO werk-en-denkniveau
- Je beschikt over minimaal 5 jaar ervaring als backend- of fullstack developer in C# en .NET in professionele softwareontwikkeling
- Je beschikt over aantoonbare ervaring met domeinmodellering en Domain-Driven Design, of de overtuigende vaardigheid om dit in de praktijk toe te passen
- Je beschikt over ervaring met clean architecture, hexagonal architecture, ports and adapters of een vergelijkbare vorm van expliciete laag- en verantwoordelijkheidscheiding
- Je beschikt over ervaring met het ontwerpen en bouwen van microservices of andere zelfstandig deploybare services
- Je beschikt over ervaring met REST API's, integratiecontracten en versiebeheer van API- en eventcontracten
- Je beschikt over ervaring met geautomatiseerd testen op meerdere niveaus, waaronder unit-, integratie-, contract- en acceptatietests
- Je beschikt over ervaring met BDD, specification-by-example of een vergelijkbare manier van werken waarbij specificaties uitvoerbaar worden vastgelegd
- Je beschikt over ervaring met werken in een DevOps-team en met CI/CD-pijplijnen
- Je hebt een uitstekende beheersing (zowel mondeling als schriftelijk) van de Nederlandse taal
- Je hebt de werkwijze en voorwaarden van NS Inhuurdesk middels onderstaande link gelezen en gaat hiermee akkoord. https://www.werkenbijns.nl/werkwijze-en-voorwaarden
Gunningscriteria
- Je beschikt over ervaring met Azure en cloud-native backendontwikkeling
- Je beschikt over ervaring met Azure Service Bus, event-driven integratie, outbox, idempotentie en dead-letterafhandeling
- Je beschikt over ervaring met Azure SQL, Cosmos DB, Redis en Blob Storage
- Je beschikt over ervaring met ASP.NET Core, Entity Framework Core en dependency injection
- Je beschikt over ervaring met Reqnroll, Spec
- Flow, Gherkin, Playwright, Testcontainers, Wire
- Mock, contract testing, Arch
- Unit
- NET of vergelijkbare tooling
- Je beschikt over ervaring met Bicep, Terraform of andere infrastructure-as-code
- Je beschikt over ervaring met Kubernetes/AKS, observability, Datadog, tracing, SLO's, loadtesten en resilience testing
- Je beschikt over ervaring met Microsoft Entra ID, OAuth2/OIDC, scopes, app roles en Managed Identity/Workload Identity
- Je beschikt over ervaring met privacy-by-design, audit trails, retentie en dataminimalisatie
- Je beschikt over ervaring met werken binnen architectuur-, code-, API-, security- en loggingstandaarden
- Je beschikt over ervaring met Angular, Blazor, Kotlin of Jetpack Compose
Extra informatie
Interview Datum
Vanaf maandag 2 november in Utrecht
Je sollicitatie dient uiterlijk 27 oktober 2026 om 13:30 uur door ons te zijn ingediend, voorzien van een motivatie (waarin wordt toegelicht hoe aan de eisen en gunningscriteria wordt voldaan) en twee referenties. Wij ontvangen je gegevens graag minimaal één werkdag vóór de sluitingsdatum.
