{"id":633,"date":"2026-06-01T14:19:58","date_gmt":"2026-06-01T14:19:58","guid":{"rendered":"https:\/\/altijdinbeta.nl\/?p=633"},"modified":"2026-09-16T14:23:28","modified_gmt":"2026-09-16T14:23:28","slug":"vijf-jaar-werk-in-zeven-maanden-ai-op-een-17-jaar-oude-codebase","status":"publish","type":"post","link":"https:\/\/altijdinbeta.nl\/?p=633","title":{"rendered":"Vijf jaar werk in zeven maanden: AI op een 17 jaar oude codebase"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Als programmeur kun je er niet omheen: AI. In mijn dagelijks werk open ik de afgelopen maanden amper meer een code editor maar gebruik ik Claude Code. En ook voor mijn werk aan JufMelis is AI een game changer. De codebase is 17 jaar oud en de laatste jaren stond hij eigenlijk stil. Er was te veel saai werk dat nog moest gebeuren: oude frameworks updaten, testdekking omhoog, CI fatsoenlijk neerzetten. Daar kwam ik in m&#8217;n eentje gewoon niet aan toe.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Met Claude erbij lukt het wel. Ik was benieuwd hoeveel werk ik nou eigenlijk verzet heb vergeleken met de jaren ervoor, dus heb ik Claude het laten uitrekenen uit <code>git log<\/code>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"2400\" height=\"1000\" src=\"https:\/\/altijdinbeta.nl\/wp-content\/uploads\/2026\/05\/commits-per-month.png\" alt=\"JufMelis commits per maand van mei 2021 tot mei 2026, duidelijke stijging vanaf oktober 2025\" class=\"wp-image-632\" srcset=\"https:\/\/cdn.shortpixel.ai\/stsp\/to_webp,q_lossy,ret_img\/https:\/\/altijdinbeta.nl\/wp-content\/uploads\/2026\/05\/commits-per-month.png 2400w, https:\/\/cdn.shortpixel.ai\/stsp\/to_webp,q_lossy,ret_img\/https:\/\/altijdinbeta.nl\/wp-content\/uploads\/2026\/05\/commits-per-month-300x125.png 300w, https:\/\/cdn.shortpixel.ai\/stsp\/to_webp,q_lossy,ret_img\/https:\/\/altijdinbeta.nl\/wp-content\/uploads\/2026\/05\/commits-per-month-1024x427.png 1024w, https:\/\/cdn.shortpixel.ai\/stsp\/to_webp,q_lossy,ret_img\/https:\/\/altijdinbeta.nl\/wp-content\/uploads\/2026\/05\/commits-per-month-768x320.png 768w, https:\/\/cdn.shortpixel.ai\/stsp\/to_webp,q_lossy,ret_img\/https:\/\/altijdinbeta.nl\/wp-content\/uploads\/2026\/05\/commits-per-month-1536x640.png 1536w, https:\/\/cdn.shortpixel.ai\/stsp\/to_webp,q_lossy,ret_img\/https:\/\/altijdinbeta.nl\/wp-content\/uploads\/2026\/05\/commits-per-month-2048x853.png 2048w, https:\/\/cdn.shortpixel.ai\/stsp\/to_webp,q_lossy,ret_img\/https:\/\/altijdinbeta.nl\/wp-content\/uploads\/2026\/05\/commits-per-month-850x354.png 850w\" sizes=\"(max-width: 2400px) 100vw, 2400px\" \/><figcaption class=\"wp-element-caption\">Commits per maand. Grijs = handmatig, oranje = met Claude Code (vanaf okt 2025).<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">De cijfers<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>5 jaar voor Claude (mei 2021 &#8211; september 2025): 781 commits, gemiddeld 15 per maand<\/li>\n\n\n\n<li>7 maanden met Claude (oktober 2025 &#8211; nu): 527 commits, gemiddeld 75 per maand<\/li>\n\n\n\n<li>100 PRs gemerged en 90 GitHub-issues opgelost in dat venster<\/li>\n\n\n\n<li>Alleen al in april: 132 commits in \u00e9\u00e9n maand, bijna 4x heel 2024<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">In 7 maanden ongeveer 67% van wat ik in 5 jaar voor elkaar had gekregen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wat ik gedaan heb<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Het is niet zo dat ik nieuwe features aan het stampen ben. Wat ik vooral doe is wegwerken van de &#8220;ooit nog eens&#8221;-lijst:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>3-tier Azure DevOps CI: snelle PR-pipeline, volledige release-suite met Dusk en coverage, en een losse Dusk-pipeline voor post-deploy smoke<\/li>\n\n\n\n<li>GitHub Actions als backup-pipeline (4 jobs parallel) voor als de Azure-minuten op zijn<\/li>\n\n\n\n<li>PHP 8.0 naar 8.2, met composer platform-pin zodat ik niet per ongeluk dependencies binnenhaal die op productie omvallen<\/li>\n\n\n\n<li>Laravel 8 naar 9 naar 10 naar 11<\/li>\n\n\n\n<li>PHPStan baseline van 475 naar 318<\/li>\n\n\n\n<li>Nachtelijk coverage-rapport (zit nu op build #879)<\/li>\n\n\n\n<li>fail2ban-jails en log-channel fixes na een vuln-scanner DoS-incident<\/li>\n\n\n\n<li>Canary + prod deploy-pipelines<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Voor dit soort werk was ik normaal een halve zaterdag StackOverflow aan het uitpluizen. YAML-frutsen, Apache-config, coverage tooling werkend krijgen. Nu zeg ik wat ik wil, Claude komt met een voorstel, ik review.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hoe ik werk<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Twee dingen zijn essentieel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Git worktrees.<\/strong> Elke serieuze taak gaat in een eigen worktree. Claude kan daar werken zonder dat het in mijn hoofdfolder belandt. Ik kan tegelijk zelf in een andere worktree zitten, of een tweede agent aan iets anders zetten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>GitHub-issues als loop.<\/strong> Elke wijziging hangt aan een issue. Issue open, Claude pakt &#8216;m op, PR met fix en test, ik review, merge. Klinkt vanzelfsprekend, maar het maakt het ook makkelijk om achteraf op te zoeken waarom iets gebeurd is.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wat het echt anders maakt<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">De aantallen zijn leuk, maar wat het echt anders maakt is dat ik weer dingen oppak waar ik me al jaren niet aan durfde te wagen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Een CI-pipeline opzetten kostte mij normaal een dag uitzoekwerk. Een PR van Claude reviewen kost me twintig minuten. Het werk wordt gedaan, ik kan controleren of het klopt, en het is af.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voor een codebase van 17 jaar die ik in m&#8217;n eentje onderhoud naast m&#8217;n werk is dat een wereld van verschil.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Als programmeur kun je er niet omheen: AI. In mijn dagelijks werk open ik de&#8230;<\/p>\n","protected":false},"author":1,"featured_media":632,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"episode_type":"","audio_file":"","transcript_file":"","podmotor_file_id":"","podmotor_episode_id":"","cover_image":"","cover_image_id":"","duration":"","filesize":"","filesize_raw":"","date_recorded":"","explicit":"","block":"","itunes_episode_number":"","itunes_title":"","itunes_season_number":"","itunes_episode_type":"","footnotes":""},"categories":[1,11,3],"tags":[],"class_list":["post-633","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-algemeen","category-jufmelis","category-software"],"_links":{"self":[{"href":"https:\/\/altijdinbeta.nl\/index.php?rest_route=\/wp\/v2\/posts\/633","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/altijdinbeta.nl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/altijdinbeta.nl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/altijdinbeta.nl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/altijdinbeta.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=633"}],"version-history":[{"count":4,"href":"https:\/\/altijdinbeta.nl\/index.php?rest_route=\/wp\/v2\/posts\/633\/revisions"}],"predecessor-version":[{"id":1452,"href":"https:\/\/altijdinbeta.nl\/index.php?rest_route=\/wp\/v2\/posts\/633\/revisions\/1452"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/altijdinbeta.nl\/index.php?rest_route=\/wp\/v2\/media\/632"}],"wp:attachment":[{"href":"https:\/\/altijdinbeta.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=633"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/altijdinbeta.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=633"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/altijdinbeta.nl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=633"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}