We denken allemaal weleens: zou het niet handig zijn als ik hier een tooltje voor had? Geen uitgebreid softwarepakket, maar een handig hulpmiddeltje dat je zelf ‘quick and dirty’ in elkaar zet en na gebruik weer weggooit. Een gekke gedachte? Toch niet. Welkom in de wereld van ‘malleable apps’. Of beter gezegd: wegwerp-apps.
Stel, een nieuwe collega moet worden ingewerkt en komt langs om twee uur lang over een technisch onderwerp te worden bijgepraat. Of je wordt geïnterviewd en wilt beslagen ten ijs komen en zeker weten dat alle relevante onderwerpen per se aan de orde komen. Zou het dan niet handig zijn om in een paar minuten een appje in elkaar te zetten zodat je een checklist kunt maken en afvinken, terwijl je aan de hand van een klok in het appje in de gaten houdt of je niet te veel tijd besteedt aan één onderwerp waardoor voor andere onderwerpen te weinig tijd overblijft?
Dit is niet iets waarvoor je naar de it-afdeling gaat. Als je collega daar je niet gewoon de deur wijst, levert dit al gauw een maandenlang software-development-traject op, compleet met formele iam-procedures en integratie in de Oracle-database-omgeving van de organisatie. En eerlijk gezegd is het appje ook niet belangrijk genoeg voor al dat werk.
Dan maar zelf met een low- of no-code-tool aan de slag gaan? Dat is een mogelijkheid, maar hoezeer de aanbieders van dit soort tools ook proberen om hun tooling als intuïtief en makkelijk voor eindgebruikers te positioneren, in de praktijk blijkt er vaak sprake te zijn van een stevige leercurve.
Het kan ook anders: met ai-tools als ChatGPT. Leg die tool uit welke functionaliteit nodig is en Chat-GPT komt direct met de hiervoor benodigde code. Het legt desgewenst uit hoe die code is te ‘draaien’. Dat ChatGPT in staat is code te maken, wisten we al. Maar het mooie is: jij beschrijft in gewone-mensen-taal wat nodig is en de ai-engine maakt de code in een mum van tijd.
Evolutie
De wereld van softwareontwikkeling heeft een lange weg afgelegd, van de complexe coding door professionele ontwikkelaars tot de opkomst van low- en no-code-platforms. De evolutie leidde tot een democratisering van softwareontwikkeling, waardoor een breder publiek zonder diepgaande technische kennis toch applicaties kan creëren en aanpassen. Een nieuwe ontwikkeling zijn ‘malleable apps’. We kunnen het ook wegwerp-apps noemen. Deze hebben de potentie om de volgende grote stap te zijn in de democratisering van softwareontwikkeling.
Malleable apps zijn mini-applicaties, ontworpen om gemakkelijk aangepast en hergebruikt te worden door de eindgebruiker zelf. In tegenstelling tot traditionele apps, die vaak een vaste structuur en opbouw hebben, zijn malleable apps flexibel en zijn ze snel aan te passen aan specifieke behoeften. Deze apps worden gekenmerkt door hun wegwerp-natuur: ze kunnen snel worden gecreëerd, gebruikt voor een specifiek doel, en vervolgens aangepast of weggegooid zodra ze niet meer nodig zijn. Het feitelijke ‘schrijven’ van de app gebeurt via een ai-tool, zoals ChatGPT of Mistral’s Mistral 7B of Mixtral 8X7B.
Exclusiviteit
Traditioneel werd softwareontwikkeling gezien als het domein van fulltime-professionals met jarenlange opleiding en ervaring in complexe programmeertalen. Deze exclusiviteit leidde tot een kloof tussen degenen die de vaardigheden hadden om software te creëren en degenen die dat niet hadden. De opkomst van low- en no-code-platforms heeft deze kloof aanzienlijk verkleind. Deze tools stellen gebruikers in staat om applicaties te bouwen door gebruik te maken van visuele interfaces met minimale of zelfs helemaal geen coding. Hierdoor is zonder uitgebreide programmeerkennis toch effectieve softwareoplossingen te ontwikkelen.
Malleable apps brengen die basisprincipes van low-code en no-code nog een stap verder. Terwijl low- en no-code-platforms gebruikers in staat stellen om apps te bouwen, bieden malleable apps een nog hogere mate van flexibiliteit en gebruiksgemak. Ze zijn ontworpen om snel en intuïtief aangepast te worden, wat ze ideaal maakt voor een snel veranderende omgeving waar de behoeften constant evolueren. De functionaliteit kan simpelweg in de vorm van geschreven of gesproken tekst worden ingegeven. Het ‘runnen’ van de app zal veelal lokaal in de eigen browser gebeuren. Het kan ook als app op een smartphone. De ai-tool legt haarfijn uit hoe de code als kant-en-klare app op een telefoon is te plaatsen. Er komt bij het maken noch bij het ‘runnen’ van de app dus geen it-afdeling of softwareontwikkelaar kijken. Doet de eerste versie van de app niet precies wat we voor ogen hadden, dan geven we – wederom in de vorm van tekst – aan wat er moet worden aangepast – en de ai-tool doet de rest.
Kenmerken
Kenmerken van malleable apps zijn:
- Eenvoudige taken
Malleable apps zijn niet bedoeld voor complexe taken met integratie in ERP- of financieel systemen. Ze zijn vooral bedoeld voor het ondersteunen van kleine, persoonlijke taken.
- Flexibiliteit
Malleable apps kunnen gemakkelijk worden aangepast, uitgebreid of geherconfigureerd zonder de noodzaak voor diepgaande technische kennis.
- Gebruikersgericht ontwerp
Deze apps zijn ontworpen door de eindgebruiker zelf, waardoor ze direct aansluiten bij een specifieke taak of actie die de eindgebruiker zelf heeft gekozen.
- Snelheid
Malleable apps zijn in de regel in een paar minuten klaar.
- Goed voor eenmalig of meermalig gebruik
Net als wegwerpproducten kunnen deze apps worden weggegooid of aangepast zodra ze hun doel hebben gediend, zonder significante investeringen in tijd of middelen.
Beveiliging
Dat is allemaal heel mooi, maar hoe zit het met de beveiliging? Of de privacy? Passen malleable apps wel in de enterprise-architectuur? Het antwoord op deze vragen is eenvoudig: malleable apps zijn persoonlijke mini-apps. Noem het bring-your-own-app. Ze zijn bedoeld om kleine taken te verrichten. Of irritaties weg te nemen. Zoals een uitgebreid gesprek met iemand voeren, om aan het einde tot de ontdekking te komen dat de helft van de relevante onderwerpen niet aan de orde zijn gekomen.
Een malleable app kan in dit voorbeeld de kleine, maar belangrijke taak vervullen om een klok met de beschikbare tijd goed in beeld te houden, met daarbij een lijstje met de onderwerpen die je wilt bespreken. Elk topic dat besproken is, is in de app af te vinken. Wil je bij nader inzien wat aantekeningen kunnen maken? Pas het appje dan aan door ChatGPT of Mixtral te vragen even een tekstboxje in de app op te nemen. Die aantekeningen weer bewaren? Vraag Mistral 7B dan om een opslagfunctie compleet met ‘save’-button toe te voegen zodat alles als een klein tekstbestandje in een persoonlijk directory is op te slaan. In dit bestandje tevens datum en tijd opnemen? Geen probleem, de ai-engine past de code binnen een paar seconden aan.
Meer weten? Bekijk de volgende video waarin Geoffrey Litt, die veel onderzoek doet naar malleable apps, laat zien hoe hij zeer snel een persoonlijke wegwerp-app maakt.
De observaties in dit artikel sluiten goed aan bij wat ik momenteel zie gebeuren in de wereld van software development. Het gebruik van genAI voor het genereren van code is echt in een stroomversnelling geraakt. Het feit dat het nu mogelijk is om via een opdracht in natuurlijke taal softwarecode te laten genereren, biedt meer mensen de mogelijkheid om zelf toepassingen te bouwen, wat natuurlijk een geweldige ontwikkeling is! Ik denk dat het in te nabije toekomst zeker mogelijk gaat worden om op die manier even snel een persoonlijke ‘wegwerp-app’ te maken voor een specifieke taak.
Echt interessant wordt het als deze vorm van software development zich verder gaat ontwikkelen naar professionele software die binnen in een afdeling of bedrijfsbreed wordt ingezet. Een uitdaging daarbij is wel dat de complexiteit van de onderliggende code voor professionele toepassingen veel hoger is dan van wegwerp-apps. De vraag is of LLM’s in staat zullen zijn om bestaande complexe code te (her)schrijven op basis van natuurlijke taal. Daaruit volgt dan ook meteen de vraag of onze natuurlijke taal wel nauwkeurig genoeg is om complexere opdrachten van gebruikers door genAI om te laten zetten in effectieve – en veilige! – code.
Uiteindelijk gaat het erom welke prompt je ingeeft. Misschien is prompt engineering wel het nieuwe programmeren, zoals Nabil Alouani stelt in dit artikel op Medium: (https://towardsdatascience.com/prompt-engineering-could-be-the-hottest-programming-language-of-2024-heres-why-a9ccf4ba8d49). Voorlopig denk ik dat low-code/visuele modellen een essentiële tussenstap kan zijn tussen natuurlijke taal en professionele softwarecode. Niet-technische mensen kunnen dan met behulp van natuurlijke taal softwaretoepassingen (of delen ervan) genereren die vervolgens in een visueel model (dus zonder code) wordt weergeven en zo ook makkelijk te ‘lezen’ en aan te passen is. Op die manier krijg je het beste van twee werelden.