Development team aan het werk.

Developer Jeroen aan het woord: zo is het om te werken in een zelfsturende organisatie

Bij Netvlies werken geen managers. Dat betekent: jezelf inschrijven op projecten, je persoonlijke doelen bepalen en veel vrijheid en eigen verantwoordelijkheid. Het betekent ook dat er geen manager bepaalt waar we ons met het webapplicatie team komende maanden op focussen, met welke technieken we werken en hoe we dit aanpakken. Als team bepalen we dit zelf. Dat stelt ons in staat om aan innovatieve projecten te werken en ons te verdiepen in moderne technieken, zoals API First, Kubernetes of Real-Time Applications, die ervoor zorgen dat we kwalitatief hoogwaardige oplossingen kunnen bieden voor onze klanten. In dit blog vertel ik graag meer over de manier waarop we samenwerken en welke voordelen dit heeft. 

Voorheen werkten we op discipline niveau met elkaar samen. Per discipline maakten we afspraken over technische oplossingen en standaardisaties. Maar als je een website bouwt, heb je vaak andere technische oplossingen nodig dan voor een webapplicatie. Mede daarom werken we sinds 2018 op celniveau met elkaar samen. Een multidisciplinaire groep vakspecialisten werkt aan de ontwikkeling en verdere professionalisering van bijvoorbeeld de realisatie van webapplicaties of websites. We werken samen vanuit marktvraag en innovatie in plaats van discipline. We kunnen meer standaardiseren, waardoor we niet voor elk project opnieuw een technische basis moeten wegzetten. Het zorgt voor meer focus en er blijft meer tijd over voor de technieken en innovaties van morgen. 

Samenwerken in cellen. Hoe werkt dit precies?

Met de verschillende disciplines - waaronder frontend, backend, interactie ontwerp en design - werken we aan gezamenlijke doelstellingen, bijvoorbeeld voor standaardisaties of toepassing en beheersing van een nieuwe techniek. Zo hebben we onze Symfony project builder aangepast om naadloos met Kubernetes te kunnen werken. Verderop in de blog lees je hier meer over. Ook zijn we aan de slag gegaan met GraphQL om dit in te kunnen inzetten naast REST. Afhankelijk van de meerwaarde voor de cel krijg je uren om hiermee aan de slag te gaan en je bepaalt zelf of je dit wilt oppakken. Heb je een tof idee en kun je de meerwaarde hiervan onderbouwen? Dan krijg je de benodigde uren om dit te realiseren. Je kunt dit zien als losse projecten die naast klantprojecten lopen.  Ook voor klantprojecten geldt: je bepaalt zelf aan welke projecten je werkt door jezelf in te schrijven voor een project. Zo krijg je de kans te werken aan projecten die je echt leuk of uitdagend vindt. We werken voor een diverse groep klanten, van advocatenkantoren tot zorginstellingen en van wereldmarktleider in hoefijzers tot aardappeltelers. Steeds vaker denken we op strategisch vlak met de klant mee en bouwen we zowel de corporate website als bedrijfsondersteunende webapplicaties en zijn we het vaste marketingbureau van onze klanten. De business, markt en doelgroepen van onze klanten goed kennen is belangrijk, zeker bij een maatwerkapplicatie. Domeinkennis is hierbij onmisbaar. Doordat we al onze projecten Scrummen is de klant regelmatig aanwezig op kantoor om ons van deze domeinkennis te voorzien. 

"teamwork via het scrum planning model"

Updates, upgrades en service

We hebben een aantal afspraken met elkaar, en de klant, gemaakt om ook na de realisatie de kwaliteit en veiligheid te waarborgen. Zo verkopen we security updates en minor upgrades standaard mee in onze projecten via een onderhoudscontract. Je hebt dus periodiek voldoende uren om dit uit te voeren. Je krijgt meer inzicht in hoe de webapplicatie draait en kunt proactief onderhoud plegen aan de hand van de laatste ontwikkelingen en inzichten, zodat je altijd met moderne code werkt en de nieuwste componenten en bibliotheken kunt gebruiken. Voor nazorg en service werken we met eerste- en tweedelijns service. De eerstelijns ondersteuning wordt opgepakt op basis van afspraken uit de Service Level Agreements. De tweedelijns wordt opgepakt door domeinexperts die betrokken waren bij de realisatie. Zo blijf je betrokken bij je eigen projecten. Als je je project goed kent kun je dit snel oppakken. En dat is extra fijn voor de klant. 

Standaardisaties zorgen voor focus en kwaliteit

Doordat we werken in kleinere teams kunnen we sneller en daadkrachtiger keuzes maken. Het is makkelijker om draagvlak te creëren en we blijven niet eindeloos overleggen. Nu kunnen we oplossingen en standaardisaties per cel meer toespitsen op het type product en klant. En dat is ook precies wat we met de webapplicatie cel gedaan hebben.  Een project builder zorgt ervoor dat aan het begin van een project automatisch een projectvariant, bijv. een project met een admin omgeving en een API, uitgerold kan worden op basis van de laatste versies van Symfony en bibliotheken. Een goede basis helpt ons bij het standaardiseren van oplossingen en zorgen dat developers op eenzelfde manier werken. We houden zoveel mogelijk de communitystandaarden aan en proberen niet steeds opnieuw het wiel uit te vinden. Nieuwe medewerkers kunnen zich hierdoor snel aanpassen.  Daarnaast is security een vast onderdeel van onze projecten. We analyseren code op potentiële problemen en monitoren proactief. Zo lossen we issues vaak al op voordat de klant deze meldt. Code review is ook een vast onderdeel van onze werkwijze. Net als automatisch testen, zowel functioneel als unit testing. Een goede testdekking is in onze ogen een onmisbare basis voor veilige doorontwikkeling, service en upgrades. Persoonlijk vind ik het erg fijn dat we de ruimte krijgen om de vertaalslag te maken van klantspecifieke oplossingen naar generieke herbruikbare oplossingen, bibliotheken of standaarden. De project builder is hier een goed voorbeeld van. Andere voorbeelden zijn:

  • een library en Symfony bundle (incl. dashboard) voor het verzenden van SMS (bijv. voor 2-FA of notificaties);
  • een generieke tool/interface voor het geautomatiseerd opschonen van grote hoeveelheden vervuilde data;
  • een abstraction layer voor het eenvoudig opbouwen van complexe PDF-bestanden;
  • een bibliotheek voor het automatisch genereren van documentatie en UML diagrammen op basis van je code en annotaties;
  • en een standaard voor integratie van bijv. AzureAD via 3rd party libraries.

We zetten deze zaken in verschillende projecten in en kunnen dit steeds verder finetunen. En dat komt de kwaliteit en standaardisatie ten goede.

Technieken en innovaties van morgen

Technieken en innovaties kunnen we nu meer toespitsen naar ontwikkelingen in de markt en de behoeften van de klant van nu en morgen. Door onze aanpak kunnen we beter inspelen op trends en ontwikkelingen in specifieke markten, technieken en disciplines. Zo is de API First aanpak erg waardevol als je een webapplicatie bouwt. De aanpak zorgt voor een nog sterkere scheiding van business logica en representatie door gebruik te maken van een frontend framework, in ons geval Vue.js, die (secure) communiceert met een API. Aan de achterkant kan hierdoor meer focus gelegd worden op de business logica van de klant, terwijl aan de voorkant meer focus gelegd kan worden op het bieden van een mooie, app-like responsive ervaring. Bijkomend voordeel van deze sterkere scheiding tussen front- en backend is dat je niet in elkaars werk zit en je kunt doorwerken zonder op de andere discipline te moeten wachten. Ook is het mogelijk in een dergelijke opzet meerdere frontends of apps te voeden via één API. Tijdens het ontwikkelproces werken we steeds meer met Kubernetes om omgevingen op te tuigen. Kubernetes organiseert containers op basis van een gestandaardiseerde configuratie in je project (via de project builder) en neemt veel werk uit handen. Bij uitbreidingen is de time-to-market korter. Upgrades rol je eenvoudig uit, zonder server upgrade of tussenkomst van een hostingpartij of DevOPs Engineer. Ook het opschalen van resources op piekmomenten is met deze oplossing snel te realiseren. Naast bovenstaande ontwikkelingen gaan we ons de komende tijd richten op Real-Time Applications, waarbij de interface wordt geupdate zonder refresh van de pagina (zogenaamde live-updates) als content wordt gewijzigd. De eerste stap is implementatie van het relatief nieuwe Mercure protocol, wat deze communicatie faciliteert en efficiënter met resources en mogelijke fouten omgaat dan gangbare technieken. Ook doen we steeds meer met Machine learning om onze klanten veel werk uit handen te nemen, bijvoorbeeld door voorspellingen te laten doen of zaken te laten classificeren. En dit is slechts een greep uit de nieuwe technieken en ontwikkelingen waar we ons komende tijd mee bezig houden.

Ben je na het lezen van mijn verhaal enthousiast over werken bij Netvlies? Bekijk onze blogs en video’s over werken bij Netvlies en vacatures. En wie weet tot snel.