Ga naar hoofdinhoud

Waarom AI-agents meer moeite hebben met datasciencecode dan met software-engineeringcode

Begrijp waarom AI-codeeragents vaak veel capabeler aanvoelen in software-engineering dan in datasciencewerk.
Jason Hillary
Jason Hillary

Maak je gratis account aan

Oefen en volg je voortgang.

Ga verder met GoogleDoor verder te gaan, accepteer je ons Gebruiksvoorwaarden, onze Privacybeleid en dat je gegevens in de VS worden opgeslagen.

Ik analyseerde honderden GitHub-repositories om te begrijpen waarom AI-codeeragents vaak veel capabeler aanvoelen in software-engineering dan in datasciencewerk. Wat ik vond, suggereert dat dit niet alleen een toolingkloof is. Het weerspiegelt een dieper verschil in waar betekenis leeft in elk soort code.

Waar dit artikel over gaat

Als je een AI-codeeragent hebt gebruikt in een software-engineeringcodebase, heb je waarschijnlijk gezien hoe effectief die kan zijn. De agent navigeert door architectuur, volgt abstracties en voert wijzigingen door die verrassend goed passen bij de rest van het systeem.

Dan open je een datasciencenotebook, en de ervaring verandert vaak.

De agent kan nog steeds geldige code schrijven. Hij kan nog steeds instructies volgen. Maar vaak begrijpt hij niet volledig wat ertoe doet: waarom deze dataset, waarom deze filter, waarom dit tijdvenster, waarom deze output de richting van de analyse heeft veranderd. 

Hij behandelt het notebook als een softwareproject, en dat is het maar deels.

Ik wilde begrijpen waarom. Dus analyseerde ik honderden GitHub-repositories in datascience en software-engineering, waarbij ik entropie, referentiepatronen en koppelingsgedrag mat. 

Wat ik vond, verbaasde me, en ik denk dat het echte implicaties heeft voor iedereen die AI-agents bouwt of gebruikt in analytisch werk.

De entropie-inversie: datasciencecode is niet wat het lijkt

Wat ik daadwerkelijk heb gemeten

Ik mat Shannon-entropie op drie abstractieniveaus voor elke repository: tekenniveau, tokenniveau en AST-niveau. Elk vangt een andere dimensie van variatie in code.

Verdeling van code-entropie: vioolplots voor Data Science vs Software Engineering

Verdeling van code-entropie: vioolplots voor Data Science vs Software Engineering

Het patroon dat naar voren kwam, is wat ik een entropie-inversie noem.

Het oppervlak oogt complex, de structuur vaak niet

Op tekenniveau heeft datasciencecode de neiging hogere entropie te hebben dan software-engineeringcode. Dat is intuïtief logisch. Datasciencewerk zit vol met uiteenlopende kolomnamen, datasetlabels, ad-hocvariabelen en domeinspecifieke identifiers die de code rommelig en onregelmatig doen lijken.

Op tokenniveau liggen de twee domeinen veel dichter bij elkaar. Ze vertrouwen op veel van dezelfde syntactische bouwstenen.

Maar op AST-niveau, waar we naar structurele diversiteit kijken, draait het beeld om. 

Software-engineeringcode encodeert doorgaans veel meer variatie in structuur. Ze creëert meer onderscheidend gedrag via abstracties, interfaces, modules en interne logica. 

Datasciencecode daarentegen hergebruikt vaak een kleinere set bewerkingen in wisselende context: laden, filteren, groeperen, aggregeren, visualiseren, inspecteren, bijstellen.

Kort gezegd: datasciencecode oogt vaak complexer aan de oppervlakte, terwijl software-engineeringcode vaak meer complexiteit in de structuur draagt.

Dit is niet alleen een stilistisch verschil. Het wijst op een dieper verschil in hoe de twee soorten werk betekenis opslaan.

Indexicaal vs symbolisch: waar betekenis leeft

Twee verschillende soorten code

De entropie-inversie wordt begrijpelijker als je bedenkt wat elk type code daadwerkelijk doet.

In software-engineering wordt betekenis vaak gecomprimeerd in structuur. Functies, interfaces, modules, types en klassegrenzen doen een groot deel van het werk. Zodra die abstracties zijn vastgesteld, stabiliseren ze gedrag en verminderen ze toekomstige onzekerheid. 

Veel van de betekenis zit in de code zelf.

In data science blijft betekenis veel nauwer verbonden met externe context. Het hangt af van de dataset, de kolommen, de tussenresultaten, de aannames achter een transformatie en de zich ontwikkelende vraag die de analist probeert te beantwoorden. De code drukt niet alleen logica uit. Ze wijst naar een specifieke analytische situatie.

Dat verschil is een van de nuttigste manieren om te begrijpen waarom agents zich vaak zo anders gedragen in de twee domeinen.

Je ziet het aan waar de code naartoe “wijst”

Ik mat ook externe en interne referentiedichtheden per 100 regels code in beide groepen.

Externe en interne referentiedichtheden met statistische significantie

Externe en interne referentiedichtheden met statistische significantie

Het onderscheid is duidelijk. Datasciencecode verwijst vaker naar buiten: naar datasets, tabellen, kolommen, tijdelijke objecten en toestanden die buiten de code zelf bestaan. 

Software-engineeringcode is intern meer zelf-referentieel. Ze bouwt vaker betekenis op door te verwijzen naar functies, klassen, modules en abstracties die elders in de codebase zijn gedefinieerd.

Datacode wijst naar buiten. Softwarecode wijst naar binnen.

Dat is belangrijk voor agents. In het ene geval zit veel van de relevante context in de codebase. In het andere zit veel ervan in de omringende analytische toestand.

Waarom dit abstractie anders laat werken

Het koppelingsprobleem in notebooks

Een van de interessantere bevindingen had te maken met koppeling. Werkstromen in notebook-stijl vertoonden veel hechtere koppeling per 100 regels code dan software-engineeringcodebases.

Dat is niet per se slecht ontwerp. Het weerspiegelt iets fundamenteels aan verkennende analyse: de vraag zelf is vaak nog in beweging. Je test aannames, volgt opmerkelijke resultaten, controleert randgevallen en verandert van richting naarmate je leert.

In die setting loont abstractie vaak niet op dezelfde manier als in software-engineering. Voortijdige structuur kan de optionaliteit verminderen voordat je begrijpt wat ertoe doet. Hechtere koppeling is vaak een gevolg van exploratie, niet simpelweg van slechte engineering.

De rol van comments en state

Er is ook een belangrijk verschil in hoe de twee domeinen zichzelf uitleggen.

In software-engineering legt code zichzelf vaak uit via structuur. Types, interfaces en abstracties dragen een groot deel van de betekenis, en comments zijn meestal secundair.

In data science dragen comments, outputs en state vaak een deel van de betekenis. Een aantekening als “uitschieters boven het 99e percentiel verwijderd, bevestigd dat dit de hoofdcategorie niet beïnvloedt” is niet alleen extra documentatie. 

Het legt een analytische beslissing vast die mogelijk niet uit de code alleen te herleiden is. Een tabel of plot halverwege het notebook kan verklaren waarom het volgende deel van de analyse überhaupt bestaat.

Dit is belangrijk voor agents. Een agent die comments, inline resultaten en een evoluerende state in een notebook negeert, mist een deel van de analyse. In een software-engineeringcodebase is die informatie vaak aanvullend. In datasciencewerk vaak niet.

Wat dit betekent voor AI-agents

Agents passen standaard goed bij één domein

De praktische implicatie is deze: agents werken het best wanneer hun tools aansluiten op waar de betekenis leeft.

In software-engineering navigeert een effectieve agent door architectuur. Hij volgt de callgraph, respecteert interfaces en houdt wijzigingen consistent in een codebase. Dat werkt omdat veel van de betekenis in de structuur is gecodeerd.

In data science moet een effectieve agent meer doen dan code navigeren. Hij moet begrijpen wat de data daadwerkelijk bevat, state over stappen heen volgen, de herkomst van variabelen traceren en redeneren over waarom een transformatie of filter meerdere stappen eerder is toegepast.

Een agent gebouwd voor software-engineering zal niet automatisch goed overdragen naar datasciencewerk. Het probleem is niet alleen syntax. De onderliggende informatiestructuur is anders.

Waarom werkstromen in notebook-stijl blijven bestaan

Dit helpt ook iets te verklaren dat engineers vaak verbaast: waarom notebooks zo centraal blijven ondanks hun duidelijke beperkingen.

Het antwoord is dat notebooks de betekenis dicht bij de data houden terwijl de analytische vraag nog in ontwikkeling is. Een notebook is niet gewoon een slecht gestructureerde Pythonmodule. Het is een ander artefact, gemaakt voor een andere fase van het werk. Het houdt code, outputs en beslissingen dicht bij elkaar terwijl de analyse nog vorm krijgt.

Daarom kan een notebook intuïtief aanvoelen voor de analist die in de context heeft geleefd, en ongemakkelijk voor een agent die alleen de code ziet.

Een notebook refactoren naar schone, modulaire code voordat de analytische vraag is uitgekristalliseerd, is vaak geen verbetering. Het kan de logica scheiden van de context die haar in de eerste plaats betekenis gaf.

De kans: de productiekloof dichten

De echte kans voor AI-agents in data science is niet simpelweg kopiëren wat al werkt in software-engineering. Het is helpen de productiekloof te dichten: de afstand tussen een inzicht dat in exploratie is gevonden en een reproduceerbare, implementeerbare workflow.

Die kloof bestaat omdat notebooks analytische context behouden ten koste van structurele netheid. Een agent die zowel de analytische context als de structurele vereisten van productiesystemen kan begrijpen, kan die kloof helpen overbruggen zonder de menselijke analist te dwingen te vroeg de verkenningsmodus te verlaten.

Dat is een moeilijker probleem dan navigeren door een codebase. Maar het is ook het belangrijkere.

Belangrijkste inzichten

Samengevat suggereren de analyses over de bestudeerde repositories het volgende:

  • Datasciencecode heeft vaak hogere entropie aan de oppervlakte, terwijl software-engineeringcode vaak hogere structurele entropie heeft.
  • Datasciencecode verwijst vaker naar externe state, zoals datasets, kolommen, tabellen en tussenresultaten, terwijl software-engineeringcode intern meer zelf-referentieel is.
  • Werkstromen in notebook-stijl vertonen de neiging tot hechtere koppeling, wat vaak een gevolg is van exploratie in plaats van simpelweg slechte praktijk.
  • Comments, outputs en een evoluerende state maken deel uit van de semantische inhoud van datasciencewerk, niet slechts perifere details.
  • Agents die geoptimaliseerd zijn voor software-engineeringcontexten zullen in data science vaak onderpresteren, tenzij ze zijn ontworpen om over data, outputs en context te redeneren naast de codestructuur.

Conclusie

Toen ik met deze analyse begon, verwachtte ik te ontdekken dat datasciencecode simpelweg minder goed gestructureerd was dan software-engineeringcode. In plaats daarvan bleek dat ze om goede redenen anders is gestructureerd, waarbij betekenis vaak op een andere plek leeft.

Dat heeft praktische consequenties voor iedereen die AI-agents bouwt of beoordeelt voor analytisch werk. De echte vraag is niet of een agent correcte Python kan schrijven. Het is of hij begrijpt wat de data is, waarom de analyse de vorm heeft die ze heeft, en welke beslissingen onderweg zijn genomen die niet zichtbaar zijn in alleen de code.

Datasciencecode is geen onvolwassen software-engineering. Het is een heel andere optimalisatie: meer afhankelijk van externe state, minder leunend op duurzame interne structuur tijdens exploratie, en evenzeer gevormd door context als door code.

Als je dat eenmaal ziet, stoppen notebooks met eruitzien als mislukte softwareprojecten en beginnen ze meer te lijken op wat ze echt zijn: werkvlakken om te redeneren over veranderende data.

Ik zet deze analyse voort met een groter dataset van 1.000 of meer repositories en extra metrics. Als je dieper wilt ingaan op hoe AI-agents worden gebouwd om met data in context te werken (inclusief persistente uitvoeringsarchitecturen die datastate over sessies heen behouden), is DataCamp’s AI agent fundamentals track een solide startpunt.

FAQs

Wat is code-entropie, en waarom is het belangrijk voor AI-agents?

Shannon-entropie, toegepast op code, is een manier om variatie of onvoorspelbaarheid op een bepaald abstractieniveau te meten. Hogere entropie op structureel niveau kan erop wijzen dat code een breder scala aan intern gedrag uitdrukt. Voor AI-agents zijn deze patronen belangrijk omdat ze bepalen welk soort context de agent moet begrijpen.

Wat is het verschil tussen indexicale en symbolische code?

Het onderscheid is een handige vuistregel. Software-engineeringcode draagt vaak meer van zijn betekenis intern via functies, interfaces en abstracties. Datasciencecode is vaker sterker afhankelijk van externe context, zoals datasets, kolommen, outputs en de zich ontwikkelende staat van de analyse.

Betekent dit dat datasciencecode van lagere kwaliteit is dan software-engineeringcode?

Nee. Het punt is niet dat de één beter is dan de ander. Ze zijn geoptimaliseerd voor verschillende doelen. Verkennende data science geeft vaak prioriteit aan snelheid van iteratie en het behoud van context, terwijl software-engineering meestal prioriteit geeft aan structuur, hergebruik en onderhoudbaarheid.

Waarom voelen AI-codeeragents vaak minder effectief aan in datascience-notebooks?

Omdat veel huidige agents zijn geoptimaliseerd om door codestructuur te navigeren. In data science zit een groot deel van de betekenis buiten de code zelf, in datastate, outputs, comments en analytische beslissingen. Als een agent niet over die context kan redeneren, mist hij een deel van de taak.

Hoe zou een AI-agent die native is voor data science eruitzien?

Hij zou niet alleen broncodebewustzijn, maar ook bewustzijn van datastate, outputs en variabele herkomst moeten behouden. Hij zou comments en tussenresultaten als betekenisvolle context moeten behandelen en helpen om verkennend werk om te zetten in reproduceerbare productie-workflows.

Jason Hillary

Auteur

Jason Hillary

Jason Hillary heeft Zerve mede opgericht omdat hij zag hoeveel frictie het werken met data vertraagde. Met een PhD in Engineering van de University of Limerick heeft hij jaren besteed aan het bouwen van AI-systemen die daadwerkelijk in productie werken, niet alleen in theorie. Voordat hij Zerve startte, werkte Jason in de data- en AI-wereld, met als focus technisch werk minder pijnlijk en productiever maken.

Onderwerpen

Gerelateerd