Categorie archieven: short

Een LLM is geen mentor

Daar moet je mij voor hebben! 🚀

In de tijd van “vibe programming” lijkt het alsof kennis en ervaring er inmiddels al niet meer toe doen. Maar de eerste bedrijven beginnen hier alweer van terug te komen.🌦️

In de ruim 5 jaar dat ik Flutter en Dart programmeer en de ruim 25 jaar dat ik Java applicaties bouw, heb ik het meeste geleerd door te doen en bijbehorende afwegingen te maken. Ik ontwerp hierdoor vandaag wezenlijk betere code en testen dan een paar jaar geleden, en probeer die ervaring dagelijks uit te dragen. Dit is ervaring die niet in korte tijd uit YouTube of blog posts te halen is, en ook niet wat de huidige generatie LLMs bijdraagt.

💡 Het ontwerpen van kwalitatief goede software is nog steeds een ambacht dat we niet volledig aan computers over kunnen laten. En er blijkt juist meer menselijke kennis nodig om de code van LLMs in goede banen te leiden. Reden te meer om te investeren in de opbouw van menselijke kennis en ervaring.

Als freelancer ben ik ook hiervoor in te huren. Bijvoorbeeld om een onafhankelijk oordeel te vormen over de bestaande code, om ontwikkelaars te begeleiden in een (voor hen) nieuwe technologie als Flutter, of gewoon om te helpen de “rommel” die inmiddels ontstaan is op te ruimen.

Door samenwerking kunnen interessante oplossingen ontstaan

En serieus geld worden bespaard!💰

⚽️ Een tijdje geleden heb ik voor een bedrijf in Eindhoven een app met een achterliggende backend gemaakt om tientallen verschillende soorten metingen aan professionele voetbalvelden te verzamelen en visualiseren.

Het project begon als vervanger van een bestaand dashboard dat door een derde partij in licentie was gemaakt en (tegen hoge kosten) werd beheerd, maar al snel ontdekten we samen met een betrokken UX ontwerper dat er betere visualisaties te maken waren dan eindeloze grafieken met vele onleesbare lijnen. 🚀

In slechts enkele man-maanden heb ik in mijn eentje zowel de backend als de app gerealiseerd, waarvan het eigendom weer volledig bij mijn opdrachtgever lag. Zo maakten we een serieuze stap voorwaarts, terwijl de kosten hiervoor binnen afzienbare tijd werden terugverdiend.⏳

✨En als ik bedenk welk verschil de recente opkomst van AI tools maakt, dan had het vandaag de dag met dezelfde investering nog een grotere stap kunnen zijn.

Vibe Coding

Mijn stapjes naar de toekomst van software ontwikkeling

🏆 Al jaren sta ik voor kwaliteit en onderhoudbaarheid van code. Dat heeft mijn manier van werken als programmeur en architect gevormd. Hierin brengt het samenwerken met AI de laatste tijd een nieuwe (maar erg leerzame) wending.

Ik ervaar LLMs als Claude Sonnet als een extreem productieve junior collega met verschrikkelijk veel kennis: In minuten komt er code uit waar ik zelf tot dagen aan zou werken, en gaat het regelmatig ondanks mijn (poging tot) sturing fout op structuur, consistentie en overzicht.

💡Dit wijzigde mijn manier van werken van evolutionaire “code-first” op basis van TDD en groeiend inzicht, naar “architecture-first” om de LLM voldoende vangrails mee te geven.

Na de eerste “productieve” stap door de LLM volgt mijn exploratie van de gekozen oplossing, en een intensieve interactie om in steeds meer detail de code weer in goede banen te leiden.

Net als bij het samenwerken met mensen komt hier een behoorlijke dosis nieuwsgierigheid en geduld bij kijken. Ik kan mij goed voorstellen dat “Vibe Coders” hier de grootste uitdaging in gaan hebben, en juist daar de ongelukken door zullen gebeuren. 💣

Wat gebeurt er met software outsourcing?

Is AI de doodsteek voor offshoring?☠️

Mijn eerste ervaringen met het outsourcen van software ontwikkeling naar India is meer dan 25 jaar geleden. Eerst in Mumbai, en daarna heb ik Bangalore van grote stad to metropool uit zien groeien. De management droom was telkens dat de kosten van arbeid lager zouden zijn, en later volgde het argument dat er daar nog capaciteit voorhanden was.🚀

Een vanaf het begin terugkerend probleem waren de cultuurverschillen die aanleiding gaven tot misverstanden over specificaties en wensen: Je krijgt wat je vraagt, en als je niet voldoende aandacht aan de vraag besteedt dan krijg je nog steeds wat je vraagt. Een gevolg was dat bedrijven de hulp langzamerhand cultureel ook dichter bij huis gingen zoeken, zoals in Oost-Europa. Maar de totale vraag bleef groeien, zo ook de outsourcing. 📈

💣 Met de huidige groei van AI code generatie tools, worden individuele (ervaren) ontwikkelaars vele malen productiever, en lijkt de capaciteit bottleneck door goedkope AI opgelost te gaan worden. Dit zou wel eens het einde kunnen betekenen van de historische behoefte aan die extra capaciteit tegen lage kosten.

Onlangs las ik dat de huizenmarkt in Bangalore vorig jaar al een klap heeft gehad door krimp van IT bedrijven. Ik maak mij hierdoor zorgen over de toekomst voor mijn vrienden in India.

Een herkenbaar patroon

🍀 Is dit het verschil dat AI werkelijk maakt?

De keren dat ik in hyper-performant teams heb mogen werken blijven me bij als een bijzondere ervaring. Het voelde telkens als heel intens en productief, en het bracht me daarnaast ook veel plezier en voldoening. 🚀

Het is mij opgevallen dat die teams allemaal een zelfde dagritme hadden:

  1. De ochtend start met frisse nieuwe ideeën en (hierdoor) intense discussie.
  2. Er valt vrij snel een beslissing over “wat we uit gaan proberen”.
  3. Dit uitproberen is een focus activiteit waarbij alle afleiding wordt genegeerd.
  4. Al ruim voor de middag staat de basis van de oplossing.
  5. De rest van de dag wordt besteedt aan refactoring en oplossen van alle ontdekte losse eindjes.
  6. Aan het einde van de dag is de code helemaal klaar voor de volgende iteratie.

Nu ik experimenteer met AI code generatie, begin ik dit zelfde patroon te ontdekken: Ik gebruik AI om interactief een sprong te maken, waarna een heleboel samenwerking volgt om “de schade weer op te ruimen”.🤖

💡Eigenlijk ligt dit helemaal niet zo ver van wat ik hierboven beschreef, behalve dat er minder mensen bij betrokken zijn, en de eerste sprong minder doorlooptijd vergt. De cycli zijn dan ook regelmatig korter dan een dag.