Developer Regie op Berichten (ROB)

ZZP (of detachering)
Delen

Over de opdracht

Vacature Developer Regie op Berichten (ROB)

In het kort: Je gaat als C#/.NET developer het ROB-communicatieplatform herbouwen, domeinen modelleren, event-driven microservices ontwikkelen, testen automatiseren en zorgen voor kwaliteit, security en betrouwbare operatie in een multidisciplinair DevOps-team. Dit ga je doen Regie Op Berichten (ROB) is het multichannel communicatieplatform voor NS medewerkers in de operatie: machinisten, conducteurs, veiligheid en service. ROB helpt om gerichte en gepersonaliseerde berichten betrouwbaar via meerdere kanalen te versturen. Daarmee heeft jouw werk direct invloed op de dagelijkse operatie en op de dienstverlening aan reizigers. Je werkt mee aan de herbouw van ROB. Dat is geen gewone technische vervanging, maar een kans om een complex domein opnieuw helder te modelleren en stap voor stap te vertalen naar software die aantoonbaar voldoet aan de behoefte. Je werkt op het snijvlak van domein, architectuur en realisatie. Je werkt in een multidisciplinair DevOps-team en bent betrokken van het eerste domeingesprek tot en met productie, beheer en doorontwikkeling. Je neemt verantwoordelijkheid voor de kwaliteit van het platform. Domein begrijpen en modelleren – Je werkt samen met Product Owner, analyst, domeinexperts, operatie, architect en andere ontwikkelaars; – Je onderzoekt ambiguïteit voordat je een oplossing bouwt en helpt een gedeelde ubiquitous language vast te leggen; – Je helpt bepalen welke verantwoordelijkheid in welke bounded context hoort; – Je bewaakt dat één 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, deadlettering en replay; – Je gebruikt additive contractwijzigingen waar mogelijk en behandelt betekenisvolle wijzigingen als een nieuw contract of 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. Specificatie en testen als één ontwikkelproces Binnen ROB is een test niet alleen een controle achteraf, maar een vastlegging van de afspraak over het gewenste gedrag. – Je maakt samen met de product- en domeinexperts duidelijke, concrete en toetsbare specificaties; – Je vertaalt die specificaties naar BDD-scenario’s in begrijpelijke domeintaal, met Reqnroll waar passend; – Je werkt zowel happy paths als negatieve paden uit, waaronder validatie-, autorisatie-, bron-, opslag- en veiligheidsfouten; – Je schrijft eerst of gelijktijdig met de implementatie de tests die de gewenste werking aantonen; – Je zorgt dat een requirement terug te vinden is in een scenario, test, contract of architectuurcheck; – Je gebruikt architectuurtests, bijvoorbeeld met ArchUnitNET, om laagafhankelijkheden en bounded-contextisolatie af te dwingen; – Je analyseert niet alleen coverage, 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 security scans 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 het gedrag dat je oplevert; – Je denkt mee over betrouwbaarheid, retries, fallback, failover, zero-downtime deployments en rollback. Hier ga je werken Je gaat aan de slag binnen IT Operatie van NS. Daar ontwikkelen we digitale oplossingen voor collega’s op de trein, op het station en aan wal. ROB ondersteunt onder meer ReisRegie+, Disys, NSRA en het interne Berichtenportaal. Het team werkt hybride (50/50) op kantoor in Utrecht en vanuit huis. Dit zijn de eisen Minimaal HBO/WO werk- en-denkniveau; Minimaal 5 jaar ervaring als backend- of fullstack developer in C# en .NET in professionele softwareontwikkeling; Aantoonbare ervaring met domeinmodellering en Domain-Driven Design, of de overtuigende vaardigheid om dit in de praktijk toe te passen; Ervaring met clean architecture, hexagonal architecture, ports and adapters of een vergelijkbare vorm van expliciete laag- en verantwoordelijkheidscheiding; 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 manier van werken waarbij specificaties uitvoerbaar worden vastgelegd; 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. Pre’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 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 binnen architectuur-, code-, API-, security- en loggingstandaarden; Ervaring met Angular, Blazor, Kotlin of Jetpack Compose. Je brengt het volgende mee: – denkt vanuit de medewerker in de operatie en de waarde voor de reiziger; – kunt schakelen tussen domeingesprek, model, C#-code, test en productiegedrag; – maakt aannames zichtbaar en stelt gerichte vragen voordat je complexe functionaliteit bouwt; – voelt eigenaarschap voor kwaliteit, betrouwbaarheid en onderhoudbaarheid; – werkt graag samen met product, architectuur en operationele stakeholders; – geeft en ontvangt feedback en durft ontwerpkeuzes bespreekbaar te maken; – bent nieuwsgierig naar nieuwe ontwikkelingen, waaronder AI en agent-based oplossingen, en gebruikt die alleen waar ze aantoonbare waarde toevoegen; – werkt datagedreven aan productkwaliteit en operationele verbetering. Op NS kun je rekenen Werken bij NS betekent dat jij hét verschil kunt maken in de wereld van duurzame mobiliteit. Jij helpt mee om Nederland bereikbaar te houden, voor iedereen. Bij NS krijg je veel vrijheid. We beloven je dat geen dag hetzelfde is. De kernwaarden van NS zijn open en betrouwbaar. Wij gaan voor resultaat en willen vooruit.

Eisen

LET OP: Het is voor onze opdrachtgever noodzakelijk dat je aan al de gestelde functie-eisen kunt voldoen. Dit moet overtuigend blijken uit je CV. Alleen dan is reageren op deze opdracht zinvol.

– 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 gaat akkoord met een achtergrondonderzoek na gunning (VOG, geheimhoudingsverklaring, integriteitsverklaring en vragenlijst). De documenten t.b.v. dit onderzoek dienen vóór aanvang van de opdracht te zijn ingestuurd zodat er tijdig gescreend kan worden. – Je gaat akkoord met het afsluiten van de benodigde beroeps- en bedrijfsaansprakelijkheidsverzekering. Meer informatie over de hoogte van de te verzekeren bedragen is te vinden in de voorbeeldcontracten onder ‘mijn instellingen’. – Je bent in de afgelopen twee jaar niet in dienst geweest bij NS middels een arbeidscontract voor bepaalde of onbepaalde tijd.

Wensen

LET OP: Op basis van de wensen van onze opdrachtgever wordt bepaald of je eventueel wordt uitgenodigd voor een selectiegesprek. Het is dus noodzakelijk dat je ook op de wensen een sterke match hebt.

– Je beschikt over ervaring met Azure en cloud-native backendontwikkeling. (10 Punten) – Je beschikt over ervaring met Azure Service Bus, event-driven integratie, outbox, idempotentie en dead-letterafhandeling. (10 Punten) – Je beschikt over ervaring met Azure SQL, Cosmos DB, Redis en Blob Storage. (10 Punten) – Je beschikt over ervaring met ASP.NET Core, Entity Framework Core en dependency injection. (10 Punten) – Je beschikt over ervaring met Reqnroll, SpecFlow, Gherkin, Playwright, Testcontainers, WireMock, contract testing, ArchUnitNET of vergelijkbare tooling. (10 Punten) – Je beschikt over ervaring met Bicep, Terraform of andere infrastructure-as-code. (10 Punten) – Je beschikt over ervaring met Kubernetes/AKS, observability, Datadog, tracing, SLO’s, loadtesten en resilience testing. (10 Punten) – Je beschikt over ervaring met Microsoft Entra ID, OAuth2/OIDC, scopes, app roles en Managed Identity/Workload Identity. (10 Punten) – Je beschikt over ervaring met privacy-by-design, audit trails, retentie en dataminimalisatie. (10 Punten) – Je beschikt over ervaring met werken binnen architectuur-, code-, API-, security- en loggingstandaarden. (10 Punten) – Je beschikt over ervaring met Angular, Blazor, Kotlin of Jetpack Compose. (10 Punten) – 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 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 binnen architectuur-, code-, API-, security- en loggingstandaarden. – Ervaring met Angular, Blazor, Kotlin of Jetpack Compose. Competenties – denkt vanuit de medewerker in de operatie en de waarde voor de reiziger; – kunt schakelen tussen domeingesprek, model, C#-code, test en productiegedrag; – maakt aannames zichtbaar en stelt gerichte vragen voordat je complexe functionaliteit bouwt; – voelt eigenaarschap voor kwaliteit, betrouwbaarheid en onderhoudbaarheid; – werkt graag samen met product, architectuur en operationele stakeholders; – geeft en ontvangt feedback en durft ontwerpkeuzes bespreekbaar te maken; – bent nieuwsgierig naar nieuwe ontwikkelingen, waaronder AI en agent-based oplossingen, en gebruikt die alleen waar ze aantoonbare waarde toevoegen; – werkt datagedreven aan productkwaliteit en operationele verbetering.

Overige informatie

Optie tot verlenging: Ja, maximaal 1 jaar Gespreksdatum: vanaf maandag 2 november in Utrecht

Procedure

De sluitingsdatum van deze opdracht is de harde deadline van onze opdrachtgever.

  • Om je krachtig voor te kunnen dragen hebben wij minimaal één werkdag nodig om samen met jou alle bescheiden in orde te maken.
  • Wanneer je interesse hebt in deze opdracht en overtuigd bent van een sterke match, reageer dan direct!
  • Naast een actueel en op de opdracht gericht CV zullen wij altijd vragen om een bondige persoonlijke motivatiebrief (inclusief een toelichting per functie-eis en -wens) en een indicatief uurtarief/maandloon.

Op basis van deze informatie kunnen wij voor je aan de slag! We nemen contact met je op om alle verdere details goed door te nemen en duidelijke afspraken met je te maken voor we je daadwerkelijk voorstellen.

Reageer nu op

Developer Regie op Berichten (ROB)

Let op: Gewenste contractvorm voor deze opdracht is ZZP (of detachering)


Wij staan voor je klaar!

(ma - vr 09:00 - 17:00)

Vraag over de opdracht? Wij ontvangen graag je vraag per mail via [email protected]

Bureau/partner?

Je kunt dan alleen voorstellen na aanmelding en toelating als partner via onderstaande pagina.

Hulp met je stukken?

Leer hier hoe je een goede motivatiebrief schrijft (als ZZP-er) in het publieke domein!

Leer hier hoe je je CV herschrijft naar de opdracht (als ZZP-er) in het publieke domein!

Leer hier hoe je je competenties verwerkt in je CV, motivatiebrief en gesprek!

Veelgestelde vragen

Kan ik werken via Detachering en/of als ZZP-er?

Bij OverheidZZP vind je opdrachten die via verschillende contractvormen kunnen worden uitgevoerd, waaronder ZZP en detachering. Per opdracht wordt beoordeeld welke contractvorm(en) passend zijn, afhankelijk van de aard van de werkzaamheden, de organisatorische inbedding en de wijze waarop de opdracht feitelijk wordt uitgevoerd. Je herkent de voorkeur of uitgangspunten voor een opdracht aan het label bovenaan de vacature: ZZP (of detachering) of Detachering. Staat bij een opdracht uitsluitend ‘Detachering’? Dan is op basis van de kenmerken van die specifieke opdracht gekozen voor uitvoering via detachering. Dit betekent niet dat bepaalde groepen opdrachtnemers op voorhand worden uitgesloten, maar dat de opdracht zich gelet op de beoogde uitvoering niet leent voor alle contractvormen. Lees hier meer over de uitvoeringsvoorwaarde arbeidsrelatie en detachering.

Hoe helpen jullie mij met mijn CV, motivatie en het gesprek?

Wij kennen de meeste opdrachtgevers goed en weten waar zij op letten in een selectieproces. Die ervaring gebruiken we bij elke aanbieding: we toetsen je CV en geven gerichte tips over je CV, motivatie, (concurrerend) uurtarief en presentatie. Ook wanneer je op gesprek mag helpen wij je met de voorbereiding. Zo vergroten we samen je slagingskans!

Wat kost jullie dienstverlening?

Reageren is altijd vrijblijvend. Na je reactie nemen we eerst contact met je op. Pas als jij akkoord bent met de voorwaarden, dragen we je voor. Wij werken met een eerlijke, marktconforme marge bovenop jouw uurtarief/salaris, die verwerkt zit in het tarief richting de opdrachtgever. Jouw uurtarief/salaris stemmen we altijd samen af.

Ik voldoe niet aan alle eisen/wensen, is het het waard om toch te reageren?

De eisen die bij een opdracht staan vermeld zijn knock-out criteria: je moet hier 100% aantoonbaar aan voldoen om in aanmerking te komen. Wensen zijn geen harde vereisten, maar het is wel aanbevolen om aan zoveel mogelijk wensen te voldoen om kansrijk te zijn in de selectie. Reageer alleen als je zeker weet dat je aan alle eisen en de meest essentiële wensen voldoet.

Hoe kan ik mijn documenten het beste aanleveren om de kans van slagen te vergroten?

Reageer via de website met je CV, een Motivatie en een Toelichting op de eisen en wensen. Gebruik je motivatiebrief voor een heldere onderbouwing van jouw match. Beschrijf steeds per eis/wens kort hoe je hieraan voldoet. Dit maakt de aansluiting op de opdracht direct inzichtelijk en helpt de opdrachtgever in het begrijpen van jouw aanbieding.

Wat zijn zakelijke voordelen via OverheidZZP?

Als zelfstandige regel je alles zelf. Je verzekeringen, je pensioen, je administratie en je ontwikkeling. Dat kost tijd en het is niet altijd duidelijk waar je moet beginnen. Daarom werken wij samen met partijen die wij zelf goed vinden. Partners die de zelfstandige begrijpen en waar je als professional op kunt bouwen. Ontvang zo ook bij enkele partners een korting via OverheidZZP!

Wij kennen de meeste opdrachtgevers goed en weten waar zij op letten in een selectieproces. Die ervaring gebruiken we bij elke aanbieding: we toetsen je CV en geven gerichte tips over je CV, motivatie, (concurrerend) uurtarief en presentatie. Ook wanneer je op gesprek mag helpen wij je met de voorbereiding. Zo vergroten we samen je slagingskans!

Reageren is altijd vrijblijvend (no cure no pay) en nog niet definitief. Na jouw reactie nemen we altijd eerst contact met je op, en pas als jij helemaal akkoord bent met de financiële en praktische uitgangspunten dragen wij je formeel voor bij de opdrachtgever. We werken met een eerlijke, marktconforme fee bovenop jouw uurtarief, verwerkt in het tarief richting de opdrachtgever. Samen stemmen we altijd af welk uurtarief jij wilt ontvangen en verkennen we of de opdracht goed aansluit bij jouw ambities en kwaliteiten.

Bij OverheidZZP vind je opdrachten die via verschillende contractvormen kunnen worden uitgevoerd, waaronder ZZP en detachering. Per opdracht wordt beoordeeld welke contractvorm(en) passend zijn, afhankelijk van de aard van de werkzaamheden, de organisatorische inbedding en de wijze waarop de opdracht feitelijk wordt uitgevoerd. Je herkent de voorkeur of uitgangspunten voor een opdracht aan het label bovenaan de vacature: ZZP (of detachering) of Detachering . Staat bij een opdracht uitsluitend ‘Detachering’? Dan is op basis van de kenmerken van die specifieke opdracht gekozen voor uitvoering via detachering. Dit betekent niet dat bepaalde groepen opdrachtnemers op voorhand worden uitgesloten, maar dat de opdracht zich gelet op de beoogde uitvoering niet leent voor alle contractvormen. Lees hier meer over de uitvoeringsvoorwaarde arbeidsrelatie en detachering.

De eisen die bij een opdracht staan vermeld zijn knock-out criteria: je moet hier 100% aantoonbaar aan voldoen om in aanmerking te komen. Wensen zijn geen harde vereisten, maar het is wel aanbevolen om aan zoveel mogelijk wensen te voldoen om kansrijk te zijn in de selectie. Reageer alleen als je zeker weet dat je aan alle eisen en de meest essentiële wensen voldoet.

Gebruik de eerste pagina van je CV of een deel van je motivatiebrief voor een heldere onderbouwing van jouw match. Neem alle eisen en wensen uit de opdracht over en beschrijf steeds kort hoe je hieraan voldoet. Dit maakt de aansluiting op de opdracht direct inzichtelijk en helpt de opdrachtgever in het begrijpen van jouw aanbieding. Je kunt hiervoor dit format gebruiken.

Relevante opdrachten

Interesse, en overtuigd van een sterke match?

Mogen wij je helpen met zoeken?

Wij helpen je graag met het vinden van een passende opdracht in het publieke domein! Interim of detachering? Neem contact met ons op dan gaan wij vrijblijvend persoonlijk voor je op zoek!