Backend Developer – SURF - Verloning opdracht
SURFOpdrachtomschrijving
Voor onze klant SURF zijn wij op zoek naar een Backend Developer.
Het team Digital Educational Resources van SURF exploiteert diensten die in het teken staan van het opslaan, distribueren, publiceren en vindbaar maken van digitale (open/FAIR) leermaterialen met als doel de kwaliteit van het onderwijs te verbeteren. Docenten en studenten kunnen makkelijk leermaterialen vinden en (her)gebruiken en onderwijsinstellingen kunnen nieuwe en bestaande leermaterialen (open/FAIR) delen.
Het team Digital Educational Resources van SURF exploiteert diensten die in het teken staan van het opslaan, distribueren, publiceren en vindbaar maken van digitale (open/FAIR) leermaterialen met als doel de kwaliteit van het onderwijs te verbeteren. Docenten en studenten kunnen makkelijk leermaterialen vinden en (her)gebruiken en onderwijsinstellingen kunnen nieuwe en bestaande leermaterialen (open/FAIR) delen.
Deze SURF-diensten zijn ontwikkeld door verschillende teams in verschillende stacks en met verschillende uitgangspunten, maar lijken desondanks sterk op elkaar of delen dezelfde functionaliteit. Ook is er een sterke behoefte om deze systemen meer en beter op elkaar aan te laten sluiten. Deze functionaliteit bestaat onder andere uit het harvesten, verrijken, categoriseren, distribueren, controleren, presenteren en kwalificeren van leermaterialen.
Om dit mogelijk te maken hebben we een platform ontwikkeld op basis van een microservice-gebaseerde architectuur. Hiermee bieden we herbruikbare services voor een brede groep applicaties, voor gebruik zowel binnen als buiten SURF. Communicatie tussen services onderling is event-based.
Een belangrijk initiatief dat aansluit op deze platformontwikkeling is SimuLearn, een landelijke voorziening waarin SURF, Npuls en DUTCH samenwerken aan het beschikbaar maken van XR-, VR-, AR- en 360°-leermaterialen voor onderwijs, zorg en bedrijfsleven. Binnen SimuLearn wordt gewerkt aan functionaliteit voor het vinden, delen en gebruiken van immersieve leerervaringen en de komende periode ligt de nadruk op het verder professionaliseren en toekomstbestendig maken van de bestaande oplossing.
Hierbij wordt toegewerkt naar een situatie waarin onderdelen van de huidige SimuLearn-oplossing worden geïntegreerd in of aansluiten op het Content Experience Platform (CXP). Jouw opdracht is gericht op SimuLearn. Je verdiept je in de bestaande codebase, je ontwikkelt nieuwe functionaliteit en draagt bij aan het verbeteren, vereenvoudigen en refactoren van bestaande oplossingen.
Daarbij zorg je dat technische keuzes, services en integraties aansluiten op de architectuur, standaarden en toekomstige richting van het CXP-platform. Je werkt hierbij samen met product owners, architecten, technisch productmanagers en ontwikkelaars uit zowel het projectteam van SimuLearn als CXP. Je zult dan ook in het team van SimuLearn meedraaien en samenwerken met het CXP team.
De technologie stack (in containers):
- Programmeertaal: Python (async-first)
- Web framework: FastAPI (async)
- De frontend wordt ontwikkeld in React
- Database & ORM: PostgreSQL met SQLAlchemy; Alembic-migraties
- Codekwaliteit: Denk hierbij aan Ruff (lint/format) en pyrefly (strict static typing), Pydantic v2 voor validatie, pytest voor unit tests
- Documentatie: onder andere Backstage
- Deployments in een Kubernetes-omgeving op ons eigen Surf Development Platform, met CI/CD-pipelines
Eisen
- Goed in staat jezelf in woord en geschrift uit te drukken in het Engels en in ieder geval in staat om Nederlands te lezen en te verstaan
- Professional practitioner van Scrum/Agile, begrijpt de onderliggende principes en past deze toe
- Staat open voor keuzes die door andere developers en techneuten zijn gemaakt: open voor integratie, samenwerking en consensus
- Ervaring met het ontwikkelen van open source software
- Ruime ervaring met het ontwikkelen van data-driven applicaties in Python (of een andere, moderne programmeertaal die zich hiervoor leent)
- Je hebt aan een microservices-gebaseerd systeem gewerkt, hebt er veel kennis van en begrijpt de mogelijkheden, maar ook uitdagingen ervan
- Gewend te werken met/aan enterprise-omgevingen en heeft een passie voor platform-engineering
- Hecht waarde aan goede documentatie en is ook in staat die op te leveren
- Kan samenwerken in een multidisciplinair team met gepassioneerde collega’s die gezamenlijk werken aan the greater good
- Kan uitleggen waarom security en privacy voor SURF geen marketingtermen zijn
- Bekend met de term DevOps of noemt zichzelf een DevOps’er
- Geautomatiseerd testen is geen overbodige luxe
- Ervaring met containerization (Kubernetes of soortgelijk)
- Bouwt graag systemen die voldoen aan de ISO 25010 kwaliteitseisen
Wensen
- Ervaring met event sourcing en/of Apache Kafka is een pré
- Affiniteit met het onderwijs is een pré
- Het is een pré als je ook in het onderwijs hebt gewerkt
Competenties
- Je bent nieuwsgierig, leergierig en kritisch
- Jij bent de persoon waar mensen naar verwezen worden als ze willen dat het goed gebeurt
- Je houdt van uitdagingen en kan je flexibel opstellen
Overige informatie
Het team Digital Educational Resources van SURF werkt aan diensten rondom digitale leermaterialen met als doel de kwaliteit van het onderwijs te verbeteren.
Een belangrijk initiatief dat aansluit op deze platformontwikkeling is SimuLearn, een landelijke voorziening waarin SURF, Npuls en DUTCH samenwerken aan het beschikbaar maken van XR-, VR-, AR- en 360°-leermaterialen voor onderwijs, zorg en bedrijfsleven.
Sollicitatie procedure
Vind een opdracht die bij je past
Bekijk het actuele overzicht van beschikbare opdrachten en ontdek wat aansluit bij jouw profiel en ambities. Heb je iets interessants gevonden? Klik dan door voor meer informatie en details over de opdracht.
Solliciteer direct
Klaar om te solliciteren? Met één klik stuur je jouw profiel naar de opdrachtgever of partner.
Reactie van de opdrachtgever
Na je sollicitatie neemt de opdrachtgever of partner contact met je op. Je hoort of je wordt uitgenodigd voor een gesprek, of dat je eventueel in aanmerking komt voor een andere opdracht.
Start met je opdracht
Ben je geselecteerd? Gefeliciteerd! Je kunt snel aan de slag en samen met de opdrachtgever duidelijke afspraken maken over de startdatum, voorwaarden en verwachtingen.