

In juni 2023 namen vier ACA-collega's deel aan de Foundations Day van het meerdaagse evenement van Domain-Driven Design Europe (DDD Europe). In het Meervaarttheater in Amsterdam woonden ze verschillende lezingen bij die een praktisch perspectief boden op DDD-concepten. Het volledige verslag staat hieronder.
Na een verfrissende koffie voor de vroege vogels en de welkomstwoorden van de organisatoren, volgde een vol programma van acht lezingen met live codering.
Deze blogpost biedt een beknopt overzicht van alle presentaties, gevolgd door een evaluatie op verschillende gebieden: inspiratie van de spreker, relevantie voor Domain-Driven Design (DDD), gebruikte analysetechnieken en technische bruikbaarheid van de informatie.

Beoordelingen
Domeinconcepten omzetten in code
Deze sessie werd geleid door Paul Rayner, een Australiër die in de Verenigde Staten woont. Hij gaf een gestructureerde en boeiende sessie met nieuwe inzichten in Domain-Driven Design en codering, met een sterke voorkeur voor Test-Driven Design. Hij verdiepte zich in het concept van uitgebreide garanties en demonstreerde dit stap voor stap in Ruby code met behulp van Event Storming.
Naarmate zijn verhaal vorderde en de complexiteit toenam, pakte hij vragen die voortkwamen uit Event Storming vakkundig aan met een Test-Driven aanpak. Zijn afsluitende boodschap was duidelijk: "Wees niet bang om code te refactoren als je start vanuit een fundamentele Test-Driven methode!".
Zelfs voor degenen met beperkte kennis van DDD was de logica in zijn redenering tijdens het live coderen gemakkelijk te volgen. Hoewel hij niet gepland staat als spreker voor de komende editie van DDD Europe, als je ooit de kans krijgt om een sessie van Paul Rayner bij te wonen, aarzel dan niet: het is een echte aanrader.
Scorekaart (1-5):
- Inspiratie: 3
- Relevantie voor DDD: 5
- Analysetechnieken: 4
- Technische bruikbaarheid: 4
Model Mitose: Een dynamisch patroon om met modelspanning om te gaan
Deze onderhoudende sessie werd gegeven door Julien Topçu en Josian Chevalier. Ze presenteerden een sessie binnen de context van de Mandalorian uit de Star Wars saga, waarin ze verschillende typische valkuilen in een ontwikkelproces demonstreerden. Het was een volledig gescripte sessie waarbij de live codering zogenaamd werd gedaan door een AI genaamd Chat3PO. Ze gebruikten echter wel een aantal interessante concepten zoals een Shared Kernel en een Anti-Corruption Layer.
Omdat het een scriptsessie was, werd er weinig tijd verspild aan het schrijven van code. Hierdoor konden ze gemakkelijk overschakelen naar domeinoverzichten, waardoor het verhaal coherent bleef.
Deze sessie is zeker een aanrader omdat het een interessante evolutie binnen een domein belicht. In de laatste vijf minuten gaven ze ook een goede samenvatting van de evolutie die ze doormaakten in hun scenario en verwezen ze naar het Hive Pattern waarin dit concept verder wordt uitgewerkt.
Scorekaart (1-5):
- Inspiratie: 5
- Relevantie voor DDD: 4
- Analysetechnieken: 4
- Technische bruikbaarheid: 3
TDD & DDD vanaf de basis - Chris Simon
Tijdens de sessie "TDD & DDD from the Ground Up" werden verschillende principes van Domain-Driven Design (DDD) belicht aan de hand van een live codeervoorbeeld van Test-Driven Development (TDD). De ervaren spreker, Chris Simon, deelde zijn uitgebreide kennis over dit onderwerp. Dankzij zijn grondige voorbereiding, diepgaande kennis van het onderwerp en aangename tempo was deze sessie geschikt voor een publiek van ontwikkelaars en analisten die de basisprincipes van TDD wilden verkennen.
Hoewel het TDD-gedeelte goed werd uitgevoerd, ontbrak er een duidelijk verband met DDD. Daardoor voelde de sessie meer aan als een TDD-demo, met slechts beperkte aandacht voor DDD-principes. Bovendien werd de kijkervaring negatief beïnvloed door de lage kwaliteit van de geprojecteerde code, in combinatie met de aanwezigheid van veel zonlicht in de zaal.
Voor degenen die een solide basis in Test-Driven Development willen leggen, was deze sessie zeker een aanrader. Als je echter meer geïnteresseerd bent in Domain-Driven Design, zijn er betere sessies beschikbaar die meer diepgang bieden.
Scorekaart (1-5):
- Inspiratie: 4
- Relevantie voor DDD: 2
- Analysetechnieken: 1
- Technische bruikbaarheid: 4
De school van Escher: Modelleren met functies
Tijdens "De Escherschool: Modelleren met functies" demonstreerde Einar Høst het concept van functiemodellering door middel van live codering in de functionele programmeertaal Elm. Het voorbeeld toonde talloze vectortransformaties om afbeeldingen te manipuleren.
De presentatie sprak ontwikkelaars zeker aan. Het was fascinerend om getuige te zijn van de indrukwekkende resultaten die bereikt kunnen worden met relatief eenvoudige vectortransformaties. Voor analisten had de sessie echter waarschijnlijk minder onmiddellijke waarde. Omdat de presentatie erg technisch was, misten we een duidelijke link naar Domain-Driven Design.
Ondanks de visueel verbluffende resultaten leek de sessie af te dwalen van de context van een DDD-conferentie.
Scorekaart (1-5):
- Inspiratie: 2
- Relevantie voor DDD: 1
- Analysetechnieken: 1
- Technische bruikbaarheid: 3
TDD: voorbij de intro deel één & twee
De tweedelige talk "TDD: Beyond the Intro" van Romeu Moura suggereerde een diepere duik in Test-Driven Development, en dat is precies wat we kregen. Moura begon met de basis van TDD, maar ging al snel verder dan de "red-green-refactor" cyclus. Hij zag TDD als een Socratische dialoog, een methode van redeneren met tests als "veldnotities". Zijn verhaal was diepgaand en duidelijk, hoewel het tempo soms wat laag lag, waardoor het een uitdaging was om volledig betrokken te blijven.
Ondanks de DDD-context van de conferentie besteedde Moura weinig tot geen aandacht aan Domain-Driven Design. De focus lag meer op de algemene principes van TDD en hoe die in de praktijk kunnen worden toegepast. De lezing bevatte ook een live codeersegment, waarbij Moura een eenvoudige fizzbuzz applicatie bouwde met behulp van TDD. Hoewel dit een nuttige illustratie was van de besproken principes, was het niet noodzakelijk essentieel om de lezing te begrijpen.
Over het algemeen was dit een waardevolle lezing voor mensen met een technische achtergrond die meer willen leren over TDD: diepgaand, duidelijk en praktisch toepasbaar. Ondanks de beperkte verwijzingen naar DDD, deed dit niets af aan de kwaliteit van de presentatie.
Link naar de video (deel twee)
Scorekaart (1-5):
- Inspiratie: 4
- Relevantie voor DDD: 1
- Analysetechnieken: 1
- Technische bruikbaarheid: 4
Refactoring naar een echt klein maar bruikbaar modeleiland
De spreker van deze sessie, Yves Lorphelin, is een ervaren software engineer met een passie voor Domain-Driven Design. Hij deelde zijn enthousiasme en expertise op een inspirerende manier. De lezing was helder en goed gestructureerd, met concrete voorbeelden en illustraties. Lorphelin beantwoordde vragen van het publiek met kennis en humor.
De lezing was duidelijk geworteld in de principes van Domain-Driven Design. Lorphelin liet zien hoe refactoring naar een klein modeleiland kan helpen om de complexiteit van een softwareproject te verminderen en de code beter te organiseren rond kerndomeinen.
Lorphelin besprak verschillende analysetechnieken die kunnen worden gebruikt om kerndomeinmodellen te identificeren. Deze technieken omvatten:
- Afgebakende contextanalyse: Identificeren van gebieden van de applicatie met hun eigen domeinlogica.
- Alomtegenwoordige taal: Het ontwikkelen van een gemeenschappelijke taal die door alle belanghebbenden wordt gedeeld.
- Event storming: Domeinlogica modelleren via gebeurtenissen.
De lezing was gericht op softwareontwikkelaars en architecten met een basiskennis van Domain-Driven Design. Lorphelin ging in op de technische details van refactoring naar een klein modeleiland, maar hij hield ook een abstract niveau aan om de lezing toegankelijk te houden voor een breed publiek.
Scorekaart (1-5):
- Inspiratie: 3
- Relevantie voor DDD: 3
- Analysetechnieken: 4
- Technische bruikbaarheid: 3
Leven in je eigen bubbel - Jacob Duijzer: Van legacy naar Domain Driven Design
In deze sessie legde agile coach Jacob Duijzer uit hoe hij legacy code heeft aangepakt voor een project binnen het landbouwdomein. Hij gaf diepere inzichten in het domein met behulp van de Domain Storytelling techniek. Hij schetste de nieuwe richtlijnen die van toepassing waren op het bestaande systeem, dat niet alleen complex en verouderd was, maar ook documentatie, unit tests en ervaren domeinexperts miste.
Jacob Duijzer liet zien hoe hij domeinexperts het domein liet uitleggen aan de hand van voorbeelden (bekend als 'specificeren aan de hand van voorbeelden'). Vervolgens legde hij uit wat 'de bubbelcontext' is en hoe deze kan worden gebruikt om nieuwe bedrijfsregels te implementeren zonder het bestaande systeem te beïnvloeden. Tot slot schetste hij de voor- en nadelen van een bubble context.
Scorekaart (1-5):
- Inspiratie: 3
- Relevantie voor DDD: 5
- Analysetechnieken: 4
- Technische bruikbaarheid: 3
Functionele domeinmodellering - Marco Emrich en Ferdinand Ade
Deze presentatie bracht een vleugje theater naar DDD 2023, met Marco (als de ontwikkelaar) en Ferdi (als de klant/Product Owner) in de hoofdrol. Het verhaal ontvouwde zich als volgt...
Ferdi, actief in de wijnsector, wilde een applicatie bouwen om zijn klanten de beste wijn aan te bevelen, afgestemd op hun smaak. Het was heerlijk om Ferdi hardop te zien nadenken over zijn verwachtingen. Marco probeerde dit meteen te vertalen in code met behulp van 'types'. Terwijl Ferdi stap voor stap beschreef hoe een 'proeverij' verloopt, codeerde Marco dit meteen in Ferdi's taal. Zo koos Marco in eerste instantie voor de term 'wijnselectie', om deze later te veranderen in 'wijnkelder'. Ferdi bleef immers verwijzen naar hun wijnkelder, niet naar hun selectie.
Ferdi keek voortdurend over Marco's schouder mee. Samen voegden ze elementen toe, verwijderden ze en hernoemden ze elementen. Alles wat onduidelijk was werd uitgesteld. Gaandeweg ontstond er een gedeelde taal tussen de ontwikkelaar en de klant.
Uit deze vermakelijke sessie hebben we geleerd dat het nuttig is om samen met de klant te modelleren met behulp van event storming of domain storytelling, hoewel de uitkomst abstract kan zijn. Functional Domain Modeling' kan de kers op de taart zijn. Het resultaat is expliciet, specifiek en biedt een solide startpunt voor implementatie.
Scorekaart (1-5):
- Inspiratie: 3
- Relevantie voor DDD: 3
- Analysetechnieken: 4
- Technische bruikbaarheid: 3
Conclusie
Na het bijwonen van de Foundations Day van DDD Europe 2023 keerden onze vier collega's huiswaarts met een schat aan nieuwe inzichten die ze in de praktijk zullen toepassen.
Het thema live coding bood ontwikkelaars een uitstekende gelegenheid om dieper inzicht te krijgen in DDD-principes. Daarnaast kwamen veel verwante technieken aan bod, zoals Test-Driven Development.
Niet elke sessie had een duidelijke link met DDD, wat een beetje een nadeel was voor analisten. Desondanks was de sfeer gedurende de dag bijzonder positief en inspirerend. Het Meervaart theater bleek de perfecte setting voor aanwezigen om te netwerken en ervaringen uit te wisselen voor en na de sessies.
What others have also read


Bij de ontwikkeling van software kunnen aannames ernstige gevolgen hebben en we moeten altijd op onze hoede zijn. In deze blogpost bespreken we hoe je omgaat met aannames bij het ontwikkelen van software. Stel je voor... je rijdt naar een bepaalde plaats Een plek waar je al 5 jaar lang elke dag naartoe rijdt, dezelfde route neemt, langs dezelfde verlaten straat rijdt, waar je nog nooit een andere auto hebt gezien. Langzamerhand begin je je vertrouwd te voelen met deze route en ga je ervan uit dat je zoals altijd de enige auto op deze weg zult zijn. Maar op een gegeven moment duikt er een auto vlak voor je op... er was al die tijd al een zijstraat, maar je had hem nooit opgemerkt, of misschien was je hem helemaal vergeten. Je trapt op de rem en komt gelukkig net op tijd tot stilstand. Aannames werden je bijna fataal. Gelukkig zijn de veronderstellingen die we in ons werk maken nooit zo gevaarlijk voor ons leven als de veronderstellingen die we in het verkeer maken. Toch kunnen veronderstellingen ernstige gevolgen hebben en moeten we altijd op onze hoede zijn. Stel je voor... je maakt websites Je laatste klant is op zoek naar een nieuwe site voor zijn bejaardentehuis omdat zijn huidige site verouderd en niet zo fancy is. Dus u bouwt een fancy nieuwe website in de veronderstelling dat fancy betekent: modern ontwerp, sociale functies, dynamische inhoud. De site is niet het succes dat hij had verwacht ... vreemd ... je hebt precies gebouwd wat je klant wil. Maar heeft u gebouwd wat de bezoekers van de site willen? De gemiddelde gebruiker is tussen de 50 - 65 jaar oud, op zoek naar een nieuw huis voor hun vader en moeder. Ze zijn geen digital natives en voelen zich misschien niet thuis op een mooie, dynamische website vol twitterfeeds en sociale knoppen. Het enige wat ze willen is een goede indruk krijgen van het bejaardentehuis en gerustgesteld worden over het feit dat er goed voor hun ouders zal worden gezorgd. Hoe meer ervaring je krijgt, hoe harder je moet oppassen geen aannames te doen en dubbel te checken met je klant EN de doelgroep . Een ander bekend gevaar van ervaring is " de vloek van de kennis ". Hoewel het klinkt als de volgende Pirates of the Caribbean sequel, is de vloek van kennis een cognitieve bias die bijna iedereen met expertkennis in een specifieke sector overheerst. Het betekent dat beter geïnformeerde partijen het extreem moeilijk vinden om over problemen na te denken vanuit het perspectief van minder goed geïnformeerde partijen. Je kunt je afvragen waarom economen er niet altijd in slagen om de juiste beursvoorspellingen te doen. Iedereen die wat geld over heeft, kan aandelen kopen. Je hoeft geen expert te zijn of zelfs maar verstand te hebben van economie. En dat is de belangrijkste reden waarom economen er vaak naast zitten. Omdat ze expertkennis hebben, kunnen ze niet voorbij deze expertise kijken en kunnen ze zich moeilijk voorstellen hoe minder geïnformeerde mensen zullen reageren op veranderingen in de markt. Hetzelfde geldt voor IT. Daarom moeten we altijd een oogje in het zeil houden en blijven we in de huid kruipen van onze klanten. Inzicht krijgen in hun ervaring en standpunt is de sleutel tot het creëren van de perfecte oplossing voor de eindgebruiker. Dus hoe pakken we aannames aan ...? Ik zou graag zeggen "Eenvoudig" en je een prachtige oneliner geven ... maar zoals gewoonlijk ... is eenvoudig nooit het juiste antwoord. Om de drang om over te schakelen op de automatische piloot en de vloek van de kennis te laten werken, hebben we een methodologie ontwikkeld op basis van verschillende Agile-principes die ons dwingt om onze eindgebruiker te betrekken bij elke fase van het project, te beginnen wanneer onze klanten nadenken over een project, maar de oplossing nog niet hebben gedefinieerd. En eindigt... nou eigenlijk nooit. De eindgebruiker zal nieuwe inzichten opdoen door met uw oplossing te werken, wat kan leiden tot nieuwe verbeteringen. In de watervalmethode wordt aan het begin van een project een analyse gemaakt door een business analist. Soms wordt de gebruiker betrokken bij deze voorafgaande analyse, maar dit is niet altijd het geval. Dan maakt een conclaaf van ontwikkelaars iets in eenzaamheid en na de witte rook ... begint het gebruikersacceptatietesten (UAT) . Het moet pijnlijk voor ze zijn om zich na deze tests te realiseren dat het product dat ze zorgvuldig hebben gemaakt niet de oplossing is die de gebruikers ervan verwachtten. Het is te laat om ingrijpende veranderingen door te voeren zonder dat daar veel meer tijd en budget voor nodig is. Met een Agile projectmethodologie kom je een heel eind. Door elke 2 tot 3 weken testbare versies uit te brengen, kunnen gebruikers geleidelijk functionaliteit testen en hun feedback geven tijdens de ontwikkeling van het project. Deze aanpak houdt rekening met de inzichten van de gebruiker, die tijdens het project zijn opgedaan, en garandeert een betere match tussen de behoeften van de gebruiker en de oplossing die je voor hun behoeften creëert. Agile beoefenaars zijn voorstander van 'continuous deployment'; een praktijk waarbij nieuw ontwikkelde functies onmiddellijk worden uitgerold naar een productieomgeving in plaats van in batches om de 2 tot 3 weken. Dit stelt ons in staat om het systeem (en in essentie de aannames) in het wild te valideren, waardevolle feedback van echte gebruikers te krijgen en gerichte experimenten uit te voeren om te valideren welke aanpak het beste werkt. Door onze methodologie te combineren met constante betrokkenheid van gebruikers, elimineer je de ergste aanname in IT: we weten hoe de werknemers hun werk doen en wat ze nodig hebben ... het gevaar van ervaring! Elimineren we altijd aannames? Laat me het iets ingewikkelder maken: Nogmaals... stel je voor: je gaat al 10 jaar naar dezelfde supermarkt, het is vrij veilig om aan te nemen dat de cornflakes nog steeds in hetzelfde gangpad liggen, zelfs op hetzelfde schap als gisteren. Als je niet meer zou aannemen waar de cornflakes liggen... dan zou je enorm veel tijd verliezen door de hele winkel door te lopen. Niet één keer, maar steeds opnieuw. Hetzelfde geldt voor ons werk. Als we ons werk zouden doen zonder te vertrouwen op onze ervaring, zouden we geen inschattingen kunnen maken over budget en tijd. Elke schatting is gebaseerd op aannames. Hoe meer ervaring je hebt, hoe nauwkeuriger deze aannames worden. Maar leiden ze ook tot goede en betrouwbare schattingen? Niet noodzakelijk ... Terug naar mijn metafoor ... We nemen elke dag dezelfde weg naar het werk. Op basis van ervaring kan ik inschatten dat ik er 30 minuten over zal doen om naar mijn werk te rijden. Maar wat als ze files aankondigen op de radio en ik de aankondiging niet heb gehoord ... dan is mijn schatting niet juist. Bij ACA Group gebruiken we een aantal belangrijke werkwijzen bij het maken van schattingen. Ten eerste is het een teamsport. We maken nooit schattingen in ons eentje en hoewel schatten een serieuze zaak is, doen we het terwijl we een spelletje spelen: Planningspoker. Laat me je dit uitleggen; planning poker is gebaseerd op het principe dat we beter kunnen inschatten in een groep. Dus we lezen het verhaal (stuk functionaliteit) hardop voor, iedereen pakt een kaart (die een indicatie geeft van de complexiteit) en legt deze open op tafel. Als iedereen een kaart heeft gekozen, worden ze allemaal tegelijk omgedraaid. Als er verschillende getallen worden getoond, ontstaat er een discussie over het waarom en hoe. Veronderstellingen die de basis vormen voor iemands schatting komen naar boven en worden besproken en gevalideerd. Er volgt nog een schattingsronde en het proces gaat door tot er consensus is bereikt. Het eindresultaat: een betere schatting en een grondig begrip van de aannames die aan de schatting ten grondslag liggen. Deze expliciete aannames zijn er om gevalideerd te worden door onze belanghebbenden; een geweldig eerste hulpmiddel om ons begrip van de scope te valideren.Dus elimineren we altijd aannames? Nou, dat zou bijna onmogelijk zijn, maar door aannames expliciet te maken elimineren we een hoop verspilling. Wil je meer weten over deze Agile Estimation? Bekijk dan dit boek van Mike Cohn . Hé, dit is een tegenstrijdigheid... Hoe zit het dan met die aannames? Moeten we ze proberen te vermijden? Of moeten we erop vertrouwen? Als je ervan uitgaat dat je alles weet... zul je nooit meer verbazing ervaren. Zoals Aristoteles al zei: "Het was hun verwondering, verbazing, die de mensen ertoe bracht om te filosoferen". Welnu, een proces dat de gemaakte veronderstellingen valideert door middel van goed uitgevoerde experimenten en snelle feedback heeft bewezen geweldige resultaten op te leveren. Dus in essentie zal het goed beheren van je aannames prachtige dingen opleveren. Wees je er wel van bewust dat de vloek van kennis om de hoek loert, wachtend op een onbewaakt moment om het over te nemen. Geïnteresseerd in deelname aan ons team? Wil je een van onze teamleden ontmoeten? Geïnteresseerd om deel uit te maken van ons team? We zijn altijd op zoek naar nieuwe gemotiveerde professionals om het ACA-team te versterken! {% module_block module "widget_3ad3ade5-e860-4db4-8d00-d7df4f7343a4" %}{% module_attribute "buttons" is_json="true" %}{% raw %}[{"appearance":{"link_color":"light","primary_color":"primary","secondary_color":"primary","tertiary_color":"light","tertiary_icon_accent_color":"dark","tertiary_text_color":"dark","variant":"primary"},"content":{"arrow":"right","icon":{"alt":null,"height":null,"loading":"disabled","size_type":null,"src":"","width":null},"tertiary_icon":{"alt":null,"height":null,"loading":"disabled","size_type":null,"src":"","width":null},"text":"View career opportunities"},"target":{"link":{"no_follow":false,"open_in_new_tab":false,"rel":"","sponsored":false,"url":{"content_id":229022099665,"href":"https://25145356.hs-sites-eu1.com/en/jobs","href_with_scheme":null,"type":"CONTENT"},"user_generated_content":false}},"type":"normal"}]{% endraw %}{% end_module_attribute %}{% module_attribute "child_css" is_json="true" %}{% raw %}{}{% endraw %}{% end_module_attribute %}{% module_attribute "css" is_json="true" %}{% raw %}{}{% endraw %}{% end_module_attribute %}{% module_attribute "definition_id" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "field_types" is_json="true" %}{% raw %}{"buttons":"group","styles":"group"}{% endraw %}{% end_module_attribute %}{% module_attribute "isJsModule" is_json="true" %}{% raw %}true{% endraw %}{% end_module_attribute %}{% module_attribute "label" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "module_id" is_json="true" %}{% raw %}201493994716{% endraw %}{% end_module_attribute %}{% module_attribute "path" is_json="true" %}{% raw %}"@projects/aca-group-project/aca-group-app/components/modules/ButtonGroup"{% endraw %}{% end_module_attribute %}{% module_attribute "schema_version" is_json="true" %}{% raw %}2{% endraw %}{% end_module_attribute %}{% module_attribute "smart_objects" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "smart_type" is_json="true" %}{% raw %}"NOT_SMART"{% endraw %}{% end_module_attribute %}{% module_attribute "tag" is_json="true" %}{% raw %}"module"{% endraw %}{% end_module_attribute %}{% module_attribute "type" is_json="true" %}{% raw %}"module"{% endraw %}{% end_module_attribute %}{% module_attribute "wrap_field_tag" is_json="true" %}{% raw %}"div"{% endraw %}{% end_module_attribute %}{% end_module_block %}
Lees verder

ACA doet veel projecten. In het laatste kwartaal van 2017 deden we een vrij klein project voor een klant in de financiële sector. De deadline voor het project was eind november en onze klant werd eind september ongerust. We hadden er echter alle vertrouwen in dat we de klus op tijd konden klaren en besloten een experiment uit te proberen. We brachten het team samen in één kamer en begonnen met mob-programmering . Maffia wat? We hadden een artikel gelezen waarin het concept van mob programming werd uitgelegd. In het kort komt mob programming erop neer dat het hele team samen in één ruimte zit en aan één user story tegelijk werkt. Eén persoon is de 'bestuurder' en doet het coderen voor een bepaalde tijd. Als die tijd voorbij is, gaat het toetsenbord over naar een ander teamlid. We probeerden het experiment met de volgende opzet: Ons team was relatief klein en had slechts 4 teamleden. Omdat het project waaraan we werkten relatief klein was, konden we maar 4 mensen aannemen. De user stories die we behandelden waren slechts een deel van het project. Omdat dit een experiment was, wilden we niet dat het project - zo klein als het was - volledig zou worden overspoeld. Daarom kozen we één specifieke epic en implementeerden we die user stories in de mob. We werkten niet op dezelfde computer. We hadden elk een aparte laptop en checkten onze code in op een centraal versiebeheersysteem in plaats van het toetsenbord te verwisselen. Dit was niet echt een keuze die we maakten, gewoon iets dat gebeurde. We wisselden elke 20 minuten. Het artikel waarnaar we verwezen heeft het over 12, maar we vonden dat te kort en besloten om in plaats daarvan 20 minuten te nemen. Klaar, af, af! We brachten meer dan een week door in een vergaderruimte waar we om de beurt onze laptops konden aansluiten op één groot scherm. De eerste dag van het experiment ontwierpen we. Urenlang stonden we achter het whiteboard om te beslissen over de architectuur van de component die we gingen bouwen. Op dezelfde dag begon onze groep met de implementatie van het eerste verhaal. We gingen er echt vandoor! We vlogen door de user story en riepen naar onze klantproxy als sommige vereisten niet duidelijk waren. Tegen het einde van de dag waren we uitgeput. Ons experiment was nog maar net begonnen en het was al zo intens. De volgende dagen gingen we verder met het implementeren van de user stories. In minder dan een week hadden we werkende software die we aan onze klant konden laten zien. Hoewel het nog niet perfect was en niet alle vereisten dekte, was onze software al na 3 dagen in staat om een volledige, gelukkige path flow uit te voeren. Twee dagen later implementeerden we verbeteringen en uitzonderingsgevallen die via andere user stories waren besproken. Er was nog maar een week verstreken sinds onze klant zich zorgen begon te maken en we hadden al zoveel geïmplementeerd dat we hem konden laten zien. De laatste hand leggen Tegen het einde van het project moesten we alleen nog wat technische zaken regelen. Een daarvan was het agnostisch maken van onze nieuw gebouwde softwareomgeving. Als we deze user story hadden afgewerkt met pair programming, zou één paar alle technische details van de software kennen. Met pair programming hoefden we het niet aan de rest van het team te laten zien. Het team wist het al. Omdat we laptops gebruikten in plaats van toetsenborden, had iedereen de setup op zijn eigen machine gedaan. Iedereen kende de commando's en de configuratie. Het was kennis delen op zijn best! Andere technische aspecten waren het correct configureren van onze software. Dit bleek een saaie taak te zijn voor de meeste navigators. Op dit punt besloten we dat het maffia-experiment ver genoeg was gegaan. We hadden het gevoel dat het niet de bedoeling was om dit soort taken met 4 mensen tegelijk te doen. Tenminste, dat is onze mening. Vlak voordat de groep uiteenviel, planden we een evaluatiebijeenkomst. We waren enthousiast en wilden dit opnieuw doen, misschien zelfs op grotere schaal. Onze ervaring met mob-programmering Het resultaat van ons experiment was erg positief. We ervoeren kennisdeling op verschillende niveaus. Alle betrokkenen kenden de volledige functionaliteit van de applicatie en we kenden allemaal de details van de implementatie. We waren in staat om snel een nieuw teamlid te integreren wanneer dat nodig was, terwijl we toch op een constante snelheid bleven werken. We hadden al gezegd dat we erg enthousiast waren voor, tijdens en na het experiment. Dit had een positieve invloed op onze teamgeest. We waren allemaal meer betrokken bij het project. Het nadeel was dat we mob-programmeren als vermoeiender ervoeren. We voelden ons uitgeput na een dag samenzijn, zij het op een goede manier! Volgende stappen Andere collega's zagen ons in onze vergaderruimte programmeren op een groot scherm. Er ontstonden gesprekken over het experiment. Onze opwinding werkte aanstekelijk: mensen waren meteen geïnteresseerd. We begonnen te praten over meer experimenten. Misschien zouden we mob-programmering kunnen doen in verschillende teams op verschillende projecten. En zo begint het... Heb jij ooit al eens mob-programmering geprobeerd? Of sta je te popelen om het te proberen? Laten we tips of trucs uitwisselen! We horen graag van je !
Lees verder

OutSystems: een katalysator voor bedrijfsinnovatie In het snelle zakelijke landschap van vandaag de dag moeten organisaties innovatieve oplossingen omarmen om voorop te blijven lopen. Er zijn veel strategische technologische trends die cruciale bedrijfsprioriteiten aanpakken, zoals digitale immuniteit, composability, AI, platform engineering, Low-Code en duurzaamheid. OutSystems , het toonaangevende Low-Code ontwikkelplatform , is een game-changer geworden in het ondersteunen van organisaties om deze trends efficiënt en duurzaam te implementeren. OutSystems verbetert cyberbeveiliging Omdat organisaties steeds meer vertrouwen op digitale systemen, vormen cyberbedreigingen een aanzienlijk risico. Daarnaast speelt de digitale interactie met klanten, medewerkers en partners een vitale rol in het welzijn van een bedrijf. De immuniteit en veerkracht van een organisatie is nu net zo sterk en stabiel als de digitale kernsystemen. Elke onbeschikbaarheid kan leiden tot een slechte gebruikerservaring, inkomstenverlies, veiligheidsproblemen en meer. OutSystems biedt een robuust en veilig platform dat helpt bij het opbouwen van digitale immuunsystemen die bescherming bieden tegen evoluerende cyberbeveiligingsuitdagingen. Met geavanceerde detectie van bedreigingen, continue monitoring, veilige codeerpraktijken en AI-code-scanning zorgt OutSystems ervoor dat applicaties veerkrachtig en beschermd zijn. Bovendien dekt het platform de meeste beveiligingsaspecten voor projectteams, zodat zij zich kunnen richten op het leveren van hoge waarde aan eindklanten, terwijl best practices door het platform worden aanbevolen door middel van codeanalyse met behulp van ingebouwde patronen. OutSystems vereenvoudigt het beheer van cloud-native infrastructuur Cloud-native architectuur is een essentieel onderdeel geworden voor moderne applicatieontwikkeling. Het OutSystems Developer Cloud Platform stelt teams in staat om eenvoudig cloud-native applicaties te maken en in te zetten, waarbij gebruik wordt gemaakt van de schaalbaarheid en flexibiliteit van cloud-infrastructuur via Kubernetes . Het stelt bedrijven in staat om: Het gebruik van resources te optimaliseren Applicatieruntimes automatisch schalen Operationele kosten verlagen Duurzame praktijken toe te passen (serverless computing, automatisch schalen, ...) Dit alles zonder de noodzaak om vooraf te investeren in infrastructuur of de diepgaande technische kennis die nodig is om het te bedienen en de typische lasten die daarmee gepaard gaan. OutSystems: toegangspoort tot AI en automatisering AI en hyperautomatisering zijn essentiële zakelijke hulpmiddelen geworden voor hulp bij het maken van content, virtuele assistenten, snellere codering, documentanalyse en nog veel meer. OutSystems stelt professionele ontwikkelaars in staat productiever te zijn door AI in te bouwen in de gehele levenscyclus van applicaties. Ontwikkelaars profiteren van AI-ondersteunde ontwikkeling, query's in natuurlijke taal en zelfs generatieve AI. Als je eenmaal klaar bent met je ontwikkeling, is het transporteren van een app naar de test- of productieomgeving slechts een kwestie van een paar klikken. Het platform automatiseert het proces in hoge mate en voert zelfs alle noodzakelijke validaties en afhankelijkheidscontroles uit om onbreekbare implementaties te garanderen. OutSystems integreert naadloos met AI-mogelijkheden van grote cloudproviders zoals Amazon, Azure (OpenAI) en Google, waardoor projectteams gebruik kunnen maken van generatieve AI, machine learning, natuurlijke taalverwerking en computervisie . Door geavanceerde technologieën toegankelijker te maken, versnelt OutSystems digitale transformatie en creëert het duurzame concurrentievoordelen. OutSystems maakt samengestelde architectuur voor flexibiliteit mogelijk Composable architectuur en business apps, gekenmerkt door modulaire componenten, maken snelle aanpassing aan veranderende bedrijfsbehoeften mogelijk. OutSystems omarmt deze trend door een cloud-native Low-Code platform te bieden dat dit type architectuur gebruikt en ondersteunt. Het stelt teams in staat om eenvoudig samenstelbare technische en zakelijke componenten te bouwen. Met de visuele modelleerbenadering van Low-Code, een uitgebreide bibliotheek van aanpasbare vooraf gebouwde componenten en een microservice-gebaseerd applicatieleveringsmodel, bevordert OutSystems hoge herbruikbaarheid en flexibiliteit. Deze samengestelde aanpak stelt organisaties in staat om: Snel te reageren op veranderende bedrijfsbehoeften Te experimenteren met nieuwe ideeën Duurzame, schaalbare en veerkrachtige oplossingen te creëren OutSystems maakt de creatie van bedrijfsapps mogelijk die eenvoudig kunnen worden geïntegreerd, vervangen of uitgebreid, en ondersteunt bedrijven op hun reis naar combineerbaarheid en flexibiliteit. OutSystems vergemakkelijkt self-service en nauwe samenwerking Platform engineering, dat de nadruk legt op samenwerking tussen ontwikkelings- en operationele teams, zorgt voor efficiëntie en schaalbaarheid. OutSystems biedt een gecentraliseerd Low-Code platform dat dit concept in de kern omarmt door voortdurend te worden uitgebreid met nieuwe functies, tools en versnellers. Bovendien faciliteert het platform de gehele levenscyclus van applicatieontwikkeling tot aan operations . Inclusief functies zoals Versiebeheer Geautomatiseerde implementatie Continue integratie en levering (CI/CD) Registratie Bewaking Organisaties in staat stellen om agile DevOps-praktijken toe te passen. Met OutSystems kunnen cross-functionele teams naadloos samenwerken, waardoor een snellere time-to-market en een betere softwarekwaliteit mogelijk worden. Door platform engineering principes te ondersteunen, helpt OutSystems organisaties om duurzame softwarelevering en operationele uitmuntendheid te bereiken. OutSystems stimuleert duurzaamheid in IT OutSystems leidt de weg in het stimuleren van duurzaamheid in IT door middel van zijn groene IT Low-Code applicatie-ontwikkelplatform en strategische initiatieven. Door energie-efficiënte ontwikkeling mogelijk te maken , het beheer van de levenscyclus van applicaties te stroomlijnen , gebruik te maken van een cloud-native infrastructuur en herbruikbaarheid te bevorderen, stelt OutSystems een voorbeeld voor de branche. Organisaties kunnen papierloze processen ontwikkelen, taken automatiseren, legacy-systemen moderniseren en IT-landschappen vereenvoudigen met behulp van OutSystems 3 tot 4 keer sneller, waardoor de totale kosten en ecologische voetafdruk afnemen. Door OutSystems te omarmen, kunnen bedrijven hun IT-activiteiten afstemmen op een groenere toekomst, bijdragen aan duurzaamheid en bouwen aan een veerkrachtigere planeet. Inpakken In het tijdperk van digitale transformatie en duurzaamheid is OutSystems een krachtige bondgenoot voor organisaties, die essentiële bedrijfsinnovaties levert, zoals ... High-performance Low-Code ontwikkeling Cloud-native architectuur AI en automatisering Robuuste beveiligingsmaatregelen Samenwerkende DevOps-praktijken Neem de OutSystems-reis om je aan te passen aan IT-trends, uitzonderlijke resultaten te leveren en bij te dragen aan een duurzame en veerkrachtige toekomst. Sta je te popelen om met OutSystems te beginnen? Laat ons helpen
Lees verderWant to dive deeper into this topic?
Get in touch with our experts today. They are happy to help!

Want to dive deeper into this topic?
Get in touch with our experts today. They are happy to help!

Want to dive deeper into this topic?
Get in touch with our experts today. They are happy to help!

Want to dive deeper into this topic?
Get in touch with our experts today. They are happy to help!


