NL Design System
ICTU werkt aan een betere digitale overheid, voor en samen met andere overheidsorganisaties. Voor het project NL Design System zijn we op zoek naar een Developer.
Met de NL Design System aanpak verzamelen we richtlijnen, componenten en voorbeelden om robuuste websites en webapplicaties voor de overheid te bouwen. Dat doet het kernteam samen met een actieve community van specialisten van diverse overheidsorganisaties.
De componenten en richtlijnen van NL Design System zijn open source beschikbaar op GitHub en Figma, zodat iedereen ze kan gebruiken voor een begrijpelijke, gebruiksvriendelijke én toegankelijke online dienstverlening.
Gewenst profiel
De kandidaat:
- Heeft ervaring met het toepassen van herbruikbare componenten uit Design Systems of Component Libraries.
- Is pragmatisch en kan werk opdelen in kleine stappen en fases.
- Kan zonder code-duplicatie onderdelen hergebruiken, zodat verbeteringen zowel in de bestaande projecten als de nieuwe projecten kunnen worden gebruikt.
- Heeft ervaring met het werken aan projecten waarbij rekening is gehouden met toegankelijkheid volgens de succescriteria van WCAG.
- Bijvoorbeeld met landmark roles, document order, semantische HTML, tabellen, formulieren, links en buttons, video, autocomplete, details/summary, custom elements, role, live regions, aria-labelledby, aria-describedby, aria-required, aria-invalid, aria-controls, aria-haspopup, aria-hidden, aria-current, aria-pressed, aria-sort, aria-activedescendant en aria-selected.
- Heeft uitgebreide ervaring met het zelfstandig opzetten van nieuwe front-end projecten en build-scripts.
- Heeft ervaring met het beheren van gebruikers, secrets en access tokens in een GitHub organisatie en weet hoe dit op een veilige onderhoudbare manier kan worden aangepakt.
- Heeft ervaring met Terraform of OpenTofu.
- De kandidaat vindt het leuk om een stabiele ontwikkelervaring te verzorgen voor de verschillende teams in de community die bijdragen aan het NL Design System.
- Heeft oog voor detail en werkt toe naar een consistente codebase.
- Kan, waar nodig, goed switchen tussen verschillende taken om snel drempels weg te nemen
- Heeft uitgebreide ervaring met CSS. Bijvoorbeeld met layouts met Grid en Flexbox, CSS logical properties, CSS custom properties, CSS variables, calc() voor fluid font sizes, container queries.
- Heeft uitgebreide ervaring met ECMAScript. Bijvoorbeeld met: ES Modules, import(), URL, async/await, Map, Set, map/filter/reduce, nullish coalescing, class, import.meta, Promises, Object entries, destructuring.
- Heeft ervaring met npm packages gebruiken, monorepositories en npm packages publiceren.
- Heeft ervaring met progressive enhancement.
- Heeft ervaring met het maken van Web Components en kan daarbij een goede afweging maken om Shadow DOM of Light DOM gebruiken.
- Heeft ervaring met TypeScript, JSX en kan met renderToString() van React HTML-pagina’s genereren van webpagina’s die zelf geen React gebruiken in de browser.
- Heeft ervaring met unit tests en end-to-end tests voor front-end code. Bijvoorbeeld met Jest, Vitest, Cypress of Playwright.
- Beschikt over goede mondelinge en schriftelijke communicatieve vaardigheden.
- Werkt zelfstandig en bewaakt de eigen voortgang als onderdeel van de scrum planning.
- Is accuraat, werkt gedisciplineerd en is in staat om de veelheid en diversiteit aan werkzaamheden te ordenen en te prioriteren en stemt hierover af met de Product Manager.
- Heeft ervaring met open source werken en vindt het vanzelfsprekend om alles (inclusief het proces) open en transparant te delen.
Concrete werkzaamheden
- Advies geven aan het NL Design System kernteam over het gebruik van npm, GitHub infrastructuur en handige build scripts.
- Werkzaamheden rondom het up-to-date houden van de NL Design System repositories.
- Updaten naar nieuwe versies van Node.js, Storybook, webpack en vite, Stencils, React, Angular, Vue.js en GitHub actions.
- Bijdragen aan verbeterde regressietests voor bestaande componenten.
- Infrastructure-as-code beheren via Terraform.
- DevOps infrastructuur beheren via GitHub Actions
- Kwaliteit en onderhoudbaarheid verhogen van bijdragen uit de community, via Continuous Intergration (CI) automatisering.
- Betrouwbare releases van packages van het kernteam en community automatiseren met Continuous Delivery (CD), volgens semantic versioning.
- Documentatie publiceren over het releaseproces.
- Documentatie publiceren over gebruik van de libraries en updaten naar een nieuwe versie.
- Verbeteren en onderhouden van de infrastructuur waarmee verschillende overheden hun diverse huisstijlen als NL Design System thema beheren en publiceren.
- In afstemming met andere professionals uit het NL Design System Kernteam en de Community componenten en templates verder brengen richting Candidate en Hall of Fame door:
- input helpen verzamelen uit eerdere implementaties
- anatomie helpen vastleggen
- semantiek helpen bepalen
- testcases opstellen voor het gebruik
- acceptatiecriteria vertalen naar stories en specs
- acceptatiecriteria vertalen naar implementatie in code
- documentatie schrijven van gebruik door developers
- In overleg met Product Manager, danwel opdrachtgever worden acceptatiecriteria voor opleveringen opgesteld;
- In overleg met professionals uit het NL Design System Kernteam activiteiten uitvoeren voor valideren en uitbreiden van NL Design System door middel van:
- Een keer in de 2 weken op dinsdag: Sprint planningen.
- Indien nodig: Refinements in een privé Slack Huddle van het kernteam.
- Indien nodig: reviewen van pull requests van andere experts uit het project om vroegtijdig feedback te geven vanuit eigen expertise.
- Voortgang delen in het privé Slack kanaal van het kernteam en de NL Design System Heartbeat.
- Publieke Huddles om een nieuwe aanpak voor de NL Design System architectuur of Definition of Done te bepalen.
|