Hoe voeg je een nieuwe functie toe aan een platform dat elke dag door honderdduizenden gebruikers wordt gebruikt, zonder dat er iets omvalt? En hoe houd je een event-sourced systeem begrijpelijk door middel van DDD voor de collega die na jou komt?
Bij Awareways bouw je mee aan Wave, het platform waarmee organisaties hun medewerkers helpen veiliger met informatie te werken. Je werkt in een klein team van engineers, back-end, front-end, data, delivery en design. We breiden het team uit omdat we nieuwe functionaliteit sneller bij onze klanten willen krijgen.
Jouw opdracht in één zin: zorgen dat nieuwe functionaliteit in Wave sneller en betrouwbaar bij gebruikers komt.
Over een jaar ben je eigenaar van een deel van het domein van Wave. Je levert features van start-to-end binnen de sprint: van technisch ontwerp tot release, met tests en zonder verrassingen in productie.
Over Awareways
Awareways helpt organisaties veiliger te werken met informatie. We combineren cybersecurity, psychologie, leren en creatieve communicatie. In ons product Wave zijn training, communicatie, simulaties en meten geïntegreerd. Zo verbinden we kennis met oefenen in de praktijk en inzicht in gedrag.
We bouwen geen maatwerk per klant, maar één product dat steeds beter wordt en zo steeds meer klanten succesvol maakt. Klantcontact is daarvoor essentieel. Wat we leren van klanten en gebruikers, vertalen we naar verbeteringen die breed inzetbaar zijn.
Deze rol valt binnen onze Productdivisie, binnen het team Software Development. Jij zit in Build, het deel dat Wave bouwt en onderhoudt. Je directe teamgenoten zijn de Domain Expert Back-end, een Back-end engineer, de Domain Expert Front-end, een Front-end Engineer en een Data Scientist. Je rapporteert aan de Product Delivery Engineer, die het team leidt en de roadmap en planning maakt. Je belangrijkste samenwerkingspartner is de Domain Expert Back-end: die bewaakt de kwaliteit van de back-end en is je eerste sparringpartner. Over de technische visie, architectuur, technische standaarden en security heeft de Head of Technology het laatste woord.
Wat ga je doen?
- Nieuwe functionaliteit die gewoon werkt. Je pakt features op uit de sprint, van technisch ontwerp tot release. Je werkt in PHP en Symfony, met event sourcing en CQRS: een nieuwe functie modelleer je als commands, events en projecties. Met de front-end engineers stem je de API af op de Vue.js-front end.
- Specs die haalbaar zijn voordat er gebouwd wordt. Voor de sprintplanning bespreek je specs met de Product Delivery Engineer. Je ziet waar iets eenvoudiger kan en geeft inschattingen waarop de planning kan bouwen.
- Een platform dat stabiel blijft terwijl het groeit. Je schrijft tests, let op performance en ruimt technical debtop waar je die tegenkomt. Wordt een projectie traag, dan pak je dat structureel aan, in overleg met de Domain Expert Back-end.
- Oplossingen voor problemen die klanten raken. De Support Engineer en Solutions Engineers van Technical Support & Solutions zoeken uit waar een melding vandaan komt. Zit de oorzaak in de back-end, dan bouw en test jij de oplossing en gaat die terug op het ticket. Dit werk is minder zichtbaar dan een nieuwe feature, maar klanten merken het direct.
- Code die anderen begrijpen. Je reviewt code van collega’s en laat je eigen werk reviewen. Je legt keuzes zo vast dat een nieuwe collega het event model begrijpt zonder jou te vragen.
- Releases die veilig in productie komen. Je werkt mee aan het uitrollen en monitoren van wat je bouwt. Gaat er na een release iets mis, dan help je het snel te vinden en op te lossen, ook als het niet jouw code was.
- Heb je ervaring met een andere techniek? Deel je ervaring met je teamgenoten of maak er een POC van. We zijn altijd op zoek naar slimmer, sneller of beter en we leren graag van jouw ervaring.
Waar ben je niet direct verantwoordelijk voor? (maar jouw input is zeker welkom)
- Wat er gebouwd wordt en in welke volgorde. Dat bepaalt de Product Delivery Engineer, met de Head of Product voor de productvisie. Jij geeft input op haalbaarheid en inschattingen.
- De architectuur en technische standaarden van Wave. Daar heeft de Head of Technology het laatste woord. Jij signaleert waar het schuurt en doet voorstellen.
- Klantcontact en het uitzoeken van meldingen. Dat doen Client Support en Technical Support & Solutions. Jij bouwt de oplossing als de oorzaak in de back-end zit.
- Het ontwerp van schermen en gebruikersflows. Dat doet de Product Designer. Jij denkt mee over wat technisch slim is.
Een dag als Back-end Engineer
Je begint om 9:00 uur met de sprint planning van Software Development. Een Solutions Engineer heeft gisteren een ticket doorgezet: bij een grote klant laadt het overzicht met trainingsresultaten traag. Je neemt het op je, naast de feature waar je deze sprint aan werkt: trainingen automatisch toewijzen aan nieuwe medewerkers.
Je begint met wat onderzoek voor het ticket en vraagt om meer context. In de tussentijd schrijf je de eerste commands en events voor die feature. De Domain Expert Back-end kijkt mee en vraagt of één van je events niet eigenlijk twee gebeurtenissen beschrijft. Dat klopt, dus je splitst het.
Om half één lunch je met collega’s uit alle teams.
’s Middags duik je in het ticket. De query uit de projectie is inderdaad traag voor klanten met heel veel regels, en bij deze klant gaat dat mis. Een snelle fix kan vandaag nog, maar haalt het probleem niet weg. De structurele oplossing kost twee dagen, en die tijd gaat van je feature af. Je legt beide opties voor aan de Product Delivery Engineer. Jullie kiezen: vandaag de snelle fix, de nieuwe projectie in de volgende sprint.
Aan het einde van de dag staat de fix in de testomgeving. De Solutions Engineer test hem en zet het ticket klaar voor release. Dan meldt de Data Scientist zich: die wil de nieuwe toewijzingsevents gebruiken voor een rapportage. Daar houd je morgen rekening mee bij je feature.
Wie zoeken we?
Je bent een back-end engineer met een paar jaar ervaring in PHP en Symfony. Je wilt werken aan één product dat je door en door leert kennen, en je schrijft code die over twee jaar nog te begrijpen is.
Je brengt mee:
- Denken in het domein. Je vertaalt wat er in de praktijk gebeurt naar een helder model: wat gebeurt er, wie doet het en wat moet het systeem onthouden. Je neemt de tijd om commands, events en projecties goed neer te zetten.
- Eigenaarschap tot in productie. Done is echt done. Een feature is pas klaar als het werkt voor de gebruikers. Gaat er iets mis, dan los je het eerst op en vraag je pas daarna wiens code het was.
- Pragmatisch kiezen. Je weegt een snelle oplossing af tegen een structurele en legt uit wat elke keuze kost. Je bouwt niet meer dan nodig is.
- Behulpzaamheid én kritisch vermogen. Je vraagt door om de behoefte achter een verzoek of ticket te begrijpen. Je stelt prioriteiten en durft onderbouwd nee of ‘later’ te zeggen. Daarbij kijk je steeds wat waarde toevoegt voor meer klanten.
- Overzicht en zorgvuldigheid. Je plant je eigen werk en houdt overzicht wanneer meerdere mensen een beroep op je doen, bijvoorbeeld een feature en een dringend ticket tegelijk. Je hebt oog voor kwaliteit en privacy: Wave verwerkt gegevens van medewerkers van onze klanten.
- Goede beheersing van Engels. Je communiceert helder in het Engels met je teamgenoten, in gesprek en op schrift. Nederlands is een pré.
Vereist
- Minimaal drie jaar professionele ervaring als back-end developer, met code die in productie draait. Je komt in een klein team en pakt vanaf het begin zelfstandig features op.
- Werkervaring met PHP en Symfony, omdat de back-end van Wave daarop gebouwd is.
Pré
- Ervaring met event sourcing en CQRS. Ken je de concepten, dan leer je onze toepassing bij ons.
- Ervaring met Domain-Driven Design, coding standards en principles (zoals Clean Code).
- Nederlands, omdat een groot deel van onze organisatie en klanten Nederlandstalig is.
- Ervaring met geautomatiseerd testen, bijvoorbeeld met PHPUnit.
Een informatica-opleiding is geen vereiste: wat je gebouwd hebt, telt zwaarder dan je diploma. Kennis van cybersecurity of security awareness ook niet, maar interesse is belangrijk.
Waarom deze rol bij Awareways?
Wat je bouwt, komt bij al onze klanten terecht. We maken geen maatwerk, dus een verbetering die jij deze sprint oplevert, werkt kort daarna voor elke organisatie die Wave gebruikt.
Je werkt in een klein team met korte lijnen naar Product, Support en de Head of Technology. Wave draait op een architectuur die je niet overal tegenkomt: event sourcing en CQRS in Symfony. Heb je daar nog weinig mee gewerkt, dan krijg je hier de ruimte om het goed te leren.
Wat wij bieden
- Ruimte om te groeien. Een functie met echte verantwoordelijkheid in een missiegedreven organisatie, met ruimte om je professioneel en persoonlijk te ontwikkelen.
- Persoonlijke ontwikkeling. We starten met een extern assessment en bespreken je groei op vaste momenten.
- Werkplek. Een fijn kantoor in Utrecht, met de mogelijkheid om hybride te werken en focusdagen thuis.
- Apparatuur. Je krijgt een laptop en telefoon. De meeste collega’s werken op een MacBook, maar heb je een sterke voorkeur voor iets anders, dan kan dat ook.
- Mobiliteit. We vergoeden je reiskosten. Kom je van buiten Utrecht, dan kun je een Swapfiets krijgen om van Utrecht Centraal naar kantoor te fietsen.
- Samen op kantoor. We lunchen elke dag samen, op vrijdag met kroketten, en we vieren successen met een borrel.
- Strategische off-site. Jaarlijks gaan we een paar dagen weg om aan de toekomst van Awareways te werken, met ook ruimte voor een drankje en karaoke.
- Salaris. €4.000 tot €5.200 bruto per maand (op basis van 40 uur), afhankelijk van je ervaring, vaardigheden en opleiding.
- Uren. 32 tot 40 uur per week.
- Vrije tijd. 25 vakantiedagen.
- Voor later. Een goede pensioenregeling met de mogelijkheid om voordelig extra in te leggen.
- Groei mee. Na een jaar kun je deelnemen aan ons Stock Appreciation Rights-programma.
Binnen Awareways vinden we diversiteit belangrijk en blijven we werken aan een organisatie waar iedereen zich thuis voelt. We zijn daarom op zoek naar mensen (x/v/m) met een diversiteit aan achtergronden en ervaringen.
Interesse?
We vragen geen motivatiebrief. Beschrijf in maximaal 300 woorden een keer dat je een bestaand systeem hebt aangepast zonder dat gebruikers er last van hadden. Wat was het probleem, welke afweging maakte je en wat zou je achteraf anders doen?
We nemen contact met je op en maken graag kennis bij een kop koffie.
Planning van de procedure
- Eerste gesprek: kennismaking
- Tussendoor: Technische opdracht
- Tweede gesprek: Technisch, over je opdracht met de Domain Expert Back-end en de Head of Technology.
- Professioneel Assessment
- Contractaanbod