<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Software Ontwikkelen on dotkarl</title><link>https://www.karlvanheijster.com/tags/software-ontwikkelen/</link><description>Recent content in Software Ontwikkelen on dotkarl</description><generator>Hugo</generator><language>nl-NL</language><lastBuildDate>Fri, 23 Oct 2026 08:06:01 +0200</lastBuildDate><atom:link href="https://www.karlvanheijster.com/tags/software-ontwikkelen/index.xml" rel="self" type="application/rss+xml"/><item><title>Pairing en theoriebouwen</title><link>https://www.karlvanheijster.com/blog/26/10/pairing-en-theoriebouwen/</link><pubDate>Fri, 23 Oct 2026 08:02:45 +0200</pubDate><guid>https://www.karlvanheijster.com/blog/26/10/pairing-en-theoriebouwen/</guid><description>Waarom zou je aan &lt;em>pair programming&lt;/em> doen? Dan doen twee mensen het werk van één, dat is toch vreselijk inefficiënt! &amp;ndash; Die zienswijze veronderstelt dat het doel van programmeren is om een werkend programma te produceren. Maar een werkend programma maakt nog geen goede software. Goede software is &lt;em>soft&lt;/em>: eenvoudig aan te passen naar veranderende eisen en wensen.</description></item><item><title>Theoriebouwen (een schets)</title><link>https://www.karlvanheijster.com/blog/26/10/theoriebouwen-een-schets/</link><pubDate>Fri, 16 Oct 2026 07:55:37 +0200</pubDate><guid>https://www.karlvanheijster.com/blog/26/10/theoriebouwen-een-schets/</guid><description>Wat is programmeren? Een voor de hand liggend antwoord is: een programma schrijven. Wie tekst oplevert die door een compiler kan worden omgezet naar machine-instructies, die kunnen worden uitgevoerd om een bepaald doel te bereiken &amp;ndash; die programmeert. Programmeren wordt in deze schets gekenmerkt door het opgeleverde eindproduct: het programma.</description></item><item><title>Uitrollen, vlak voor de demo</title><link>https://www.karlvanheijster.com/blog/26/04/uitrollen-vlak-voor-de-demo/</link><pubDate>Fri, 10 Apr 2026 08:05:41 +0200</pubDate><guid>https://www.karlvanheijster.com/blog/26/04/uitrollen-vlak-voor-de-demo/</guid><description>&amp;ldquo;Ik vind dat we niet meer uit moeten rollen vlak voor een demo,&amp;rdquo; zei een collega, &amp;ldquo;dat vond ik nogal spannend.&amp;rdquo; Liever had hij zichzelf nog wat extra tijd gegeven om zekerheid te krijgen dat de wijziging niet onbedoeld dingen stuk had gemaakt. Ik begrijp het sentiment van waaruit deze opmerking ontspringt. Maar het is in mijn beleving de verkeerde diagnose van de situatie.</description></item><item><title>Borrelpraat #2</title><link>https://www.karlvanheijster.com/blog/25/10/borrelpraat-2/</link><pubDate>Fri, 10 Oct 2025 08:47:35 +0200</pubDate><guid>https://www.karlvanheijster.com/blog/25/10/borrelpraat-2/</guid><description>Hij dronk cola, ik een biertje &amp;ndash; maar verder zitten we op één lijn. Het duurde niet lang voordat het over de zoekindex ging &amp;ndash; altijd die verdomde zoekindex. &amp;ldquo;Dat is al vanaf het begin een pijnpunt,&amp;rdquo; bekende ik. &amp;ldquo;En ik ben zelf onderdeel van het probleem geweest.&amp;rdquo;</description></item><item><title>Zoek en gij zult vinden</title><link>https://www.karlvanheijster.com/blog/25/09/zoek-en-gij-zult-vinden/</link><pubDate>Fri, 05 Sep 2025 07:37:40 +0200</pubDate><guid>https://www.karlvanheijster.com/blog/25/09/zoek-en-gij-zult-vinden/</guid><description>Soms duurt het ruim vier jaar voordat je eraan toekomt &amp;ndash; maar: &lt;em>dotkarl&lt;/em> kent nu eindelijk de mogelijkheid om blogs te doorzoeken. &lt;em>Woohoo!&lt;/em></description></item><item><title>Gaan we snel genoeg?</title><link>https://www.karlvanheijster.com/blog/25/08/gaan-we-snel-genoeg/</link><pubDate>Fri, 01 Aug 2025 08:06:44 +0200</pubDate><guid>https://www.karlvanheijster.com/blog/25/08/gaan-we-snel-genoeg/</guid><description>Sinds kort ben ik in van team gewisseld. Sinds die wissel mag ik mezelf met recht &lt;em>full stack developer&lt;/em> noemen. Ik ben verantwoordelijk voor de back-end, de front-end &amp;ndash; de database, de infrastructuur, security &amp;ndash; de requirementsanalyse, de tests&amp;hellip; Je kunt je voorstellen: het kan even duren voordat een (ogenschijnlijk) eenvoudige feature afgerond is. Af en toe maakt een knagend schuldgevoel zich dan ook meester van me: &lt;em>gaan we snel genoeg?&lt;/em></description></item><item><title>Feature branches belemmeren een beter begrip van koppeling</title><link>https://www.karlvanheijster.com/blog/25/05/feature-branches-belemmeren-een-beter-begrip-van-koppeling/</link><pubDate>Fri, 09 May 2025 07:51:17 +0200</pubDate><guid>https://www.karlvanheijster.com/blog/25/05/feature-branches-belemmeren-een-beter-begrip-van-koppeling/</guid><description>Laatst brak een kleine wijziging aan de back-end &amp;ndash; die we zo snel mogelijk richting de testomgeving hadden gebracht &amp;ndash; functionaliteit aan de front-end. Voor mijn collega was het een ideale gelegenheid om zijn &lt;em>bias&lt;/em> voor Gitflow bevestigd te zien. &amp;ldquo;Dit zou nooit gebeurd zijn als we van &lt;em>feature branches&lt;/em> gebruik hadden gemaakt!&amp;rdquo; concludeerde hij. &amp;ndash; En niet onterecht, want het apart houden van de wijziging in kwestie zou de functionaliteit op testomgeving inderdaad intact hebben gehouden.</description></item><item><title>Wie is er bang voor adapterfuncties?</title><link>https://www.karlvanheijster.com/blog/25/04/wie-is-er-bang-voor-adapterfuncties/</link><pubDate>Fri, 04 Apr 2025 08:11:54 +0200</pubDate><guid>https://www.karlvanheijster.com/blog/25/04/wie-is-er-bang-voor-adapterfuncties/</guid><description>Adapters zijn een bekend ontwerppatroon in de softwareontwikkeling. Toch kwam deze oplossingsrichting niet onmiddellijk bij me op toen ik een stuk code in onze zoekindex begon te refactoren (om van de oorspronkelijke schrijver nog maar te zwijgen!). In plaats daarvan gaven onze eerste pogingen er blijk van koste wat kost te willen blijven werken met de &amp;ldquo;standaard&amp;rdquo;-functies. &amp;ndash; Waarom?</description></item><item><title>Het ontologische argument</title><link>https://www.karlvanheijster.com/blog/25/03/het-ontologische-argument/</link><pubDate>Fri, 21 Mar 2025 08:15:52 +0100</pubDate><guid>https://www.karlvanheijster.com/blog/25/03/het-ontologische-argument/</guid><description>Onlangs pairde ik met een nieuwe collega. We hadden een refactortaak opgepakt om wat ondoorgrondelijke code rondom onze zoekindex te versimpelen. Ergens halverwege die refactorslag zei hij iets wat mijn aandacht trok.</description></item><item><title>Een kleine stap voor de code...</title><link>https://www.karlvanheijster.com/blog/25/02/een-kleine-stap-voor-de-code/</link><pubDate>Fri, 21 Feb 2025 08:14:20 +0100</pubDate><guid>https://www.karlvanheijster.com/blog/25/02/een-kleine-stap-voor-de-code/</guid><description>Toen een collega van me laatst vastliep op het omschrijven van wat authenticatielogica, sprong ik graag bij. Ik wist immers wat de juiste weg voorwaarts was: heel veel heel kleine stapjes. Maar zo simpel bleek het toch niet te zijn&amp;hellip;</description></item><item><title>Drielagencargocult</title><link>https://www.karlvanheijster.com/blog/25/01/drielagencargocult/</link><pubDate>Fri, 17 Jan 2025 08:23:02 +0100</pubDate><guid>https://www.karlvanheijster.com/blog/25/01/drielagencargocult/</guid><description>Goede abstracties worden niet &lt;em>bedacht&lt;/em>. Goede abstracties worden &lt;em>ontdekt&lt;/em>. Ze vinden pas het levenslicht als reactie op een concrete vraag van de codebase. Softwareontwikkeling is in wezen een empirische aangelegenheid.</description></item><item><title>Waar zit de fout?</title><link>https://www.karlvanheijster.com/blog/24/11/waar-zit-de-fout/</link><pubDate>Fri, 22 Nov 2024 07:55:22 +0100</pubDate><guid>https://www.karlvanheijster.com/blog/24/11/waar-zit-de-fout/</guid><description>Mijn collega bracht een argument in dat vaak wordt genoemd als ik mensen vertel over testen via de voordeur: maar door de code direct aan te roepen, geven mijn tests onmiddellijk feedback over &lt;em>waar&lt;/em> de fout zit. Als &lt;em>deze&lt;/em> tests beginnen te falen, dan weet ik zeker dat &lt;em>daar&lt;/em> de fout zit. En dat scheelt tijd in het debuggen van de code. &amp;ndash; Maar dat laat de volgende vraag onverlet: is een unittest (waarbij &amp;ldquo;unit&amp;rdquo; wordt opgevat als &amp;ldquo;eenheid van code&amp;rdquo;) het beste middel om erachter te komen waar de fout zit?</description></item><item><title>De wet van Postel</title><link>https://www.karlvanheijster.com/blog/24/11/de-wet-van-postel/</link><pubDate>Fri, 15 Nov 2024 08:09:28 +0100</pubDate><guid>https://www.karlvanheijster.com/blog/24/11/de-wet-van-postel/</guid><description>Het is niet de verantwoordelijkheid van de aanroepende partij om de input van een functie te schiften opdat er valide waarden worden meegegeven. Een functie moet zo eerlijk mogelijk zijn in wat het accepteert &amp;ndash; maar daar waar er speelruimte bestaat is het de verantwoordelijkheid &lt;em>van de functie zelf&lt;/em> om de inputs te valideren.</description></item><item><title>Ik loste het op met een monad</title><link>https://www.karlvanheijster.com/blog/24/10/ik-loste-het-op-met-een-monad/</link><pubDate>Fri, 11 Oct 2024 08:34:29 +0200</pubDate><guid>https://www.karlvanheijster.com/blog/24/10/ik-loste-het-op-met-een-monad/</guid><description>Een soort van &lt;em>monad&lt;/em>. Denk ik.</description></item><item><title>Bind, Map en Match</title><link>https://www.karlvanheijster.com/blog/24/09/bind-map-en-match/</link><pubDate>Fri, 27 Sep 2024 08:22:09 +0200</pubDate><guid>https://www.karlvanheijster.com/blog/24/09/bind-map-en-match/</guid><description>Ik schrijf al twee jaar op dit blog over functioneel programmeren in C#, dus je zou denken dat ik de basis inmiddels wel een beetje zou moeten beheersen &amp;ndash; en toch overkomt het me nog regelmatig dat ik uitroep: och, zit het &lt;em>zo&lt;/em>! Zo had ik onlangs &amp;ndash; na een hoop gepiel (en een beetje hulp van Scott Wlaschin) &amp;ndash; een openbaring met betrekking tot de &lt;code>Map&lt;/code>- en &lt;code>Bind&lt;/code>-functies.</description></item><item><title>Gedrag versus structuur</title><link>https://www.karlvanheijster.com/blog/24/09/gedrag-versus-structuur/</link><pubDate>Fri, 13 Sep 2024 08:30:22 +0200</pubDate><guid>https://www.karlvanheijster.com/blog/24/09/gedrag-versus-structuur/</guid><description>Een systeem dat niet precies doet wat het moet doen, maar wel eenvoudig aan te passen is, is meer waard dan een systeem dat precies doet wat het moet doen maar slechts met grote moeite gewijzigd kan worden. Want het gedrag van een systeem &lt;em>zal&lt;/em> veranderen, hoe dan ook. De wereld verandert, en daarmee de wensen van onze gebruikers en stakeholders. Het is onze taak als softwareontwikkelaars om daarop voorbereid te zijn, en een systeem te ontwikkelen dat daarop voorbereid is.</description></item><item><title>Refactoring als communicatiemiddel</title><link>https://www.karlvanheijster.com/blog/24/08/refactoring-als-communicatiemiddel/</link><pubDate>Fri, 30 Aug 2024 09:29:37 +0200</pubDate><guid>https://www.karlvanheijster.com/blog/24/08/refactoring-als-communicatiemiddel/</guid><description>We refactoren niet alleen om het makkelijker te maken de code te wijzigen, we refactoren ook om de code zo helder mogelijk te laten communiceren. En code die helder communiceert is op zijn beurt weer makkelijker om te wijzigen.</description></item><item><title>Fragment (uit een discussie over AI coding assistants en privacy)</title><link>https://www.karlvanheijster.com/blog/24/08/fragment-uit-een-discussie-over-ai-coding-assistants-en-privacy/</link><pubDate>Fri, 09 Aug 2024 09:34:17 +0200</pubDate><guid>https://www.karlvanheijster.com/blog/24/08/fragment-uit-een-discussie-over-ai-coding-assistants-en-privacy/</guid><description>&lt;em>Hij, apodictisch: &amp;ldquo;Als we onze code delen met AI coding assistants, zodat zij daarop kunnen trainen, dan geven we onze concurrenten toegang tot onze code, en daarmee een marktvoordeel.&amp;rdquo; &amp;ndash; Ik, grijnzend: &amp;ldquo;Ben ik heel cynisch als ik suggereer dat we onze concurrenten in dat geval misschien juist een&lt;/em> nadeel &lt;em>bezorgen?&amp;rdquo;&lt;/em></description></item><item><title>Grote refactorslagen ondermijnen vertrouwen</title><link>https://www.karlvanheijster.com/blog/24/07/grote-refactorslagen-ondermijnen-vertrouwen/</link><pubDate>Fri, 19 Jul 2024 07:55:35 +0200</pubDate><guid>https://www.karlvanheijster.com/blog/24/07/grote-refactorslagen-ondermijnen-vertrouwen/</guid><description>Wat een stakeholder betreft is een grote refactorslag een enorme kostenpost zonder aantoonbaar resultaat. Een team dat erop staat niet verder te kunnen werken zonder eerst een hele tijd heel veel geld uit te geven &amp;ndash; nota bene zonder daar iets voor terug te geven! &amp;ndash;, ondermijnt het vertrouwen dat de stakeholder hen daarmee geeft.</description></item><item><title>Functioneel denken: een praktijkvoorbeeld</title><link>https://www.karlvanheijster.com/blog/24/05/functioneel-denken-een-praktijkvoorbeeld/</link><pubDate>Fri, 31 May 2024 06:15:29 +0200</pubDate><guid>https://www.karlvanheijster.com/blog/24/05/functioneel-denken-een-praktijkvoorbeeld/</guid><description>Onlangs hielp ik een collega een moeilijk volgbare berg code te reduceren tot enkele eenvoudig leesbare regels. Door onze oorspronkelijke, imperatieve redeneertrant van ons af te werpen, en deze te vervangen door een declaratieve stijl, reduceerden we het netelige origineel tot een elegante functionele oplossing. &amp;ndash; Het was een schoolvoorbeeld van de kracht van functioneel denken.</description></item></channel></rss>