AIToday Live

S06E27 - Hé AI, maak jij mijn code even? Een praktijkcase.

April 01, 2024 Aigency by Info Support Season 6 Episode 27
AIToday Live
S06E27 - Hé AI, maak jij mijn code even? Een praktijkcase.
Show Notes Transcript

In deze aflevering van AIToday Live, duikt het thema zich in de vernieuwende wereld van AI-gestuurde code vertaling, met een focus op de mogelijkheden van generatieve AI in programmeren. Van het transformeren van low-code platformen naar moderne programmeringstalen tot de rol van AI in het verfijnen van automatiseringstests, ontdek hoe deze technologieën het landschap van softwareontwikkeling veranderen.

Een specifiek project, waarbij code vertaling met behulp van AI aanzienlijke efficiencyverbeteringen laat zien, wordt onder de loep genomen. Luisteraars krijgen inzicht in de uitdagingen en oplossingen bij de implementatie van AI in het ontwikkelproces, de impact op productiviteit, en de voordelen van geautomatiseerde testgeneratie.

Met onze podcast AIToday Live zijn we genomineerd voor de Belgian Podcast Awards ! 🏆🤩 Belgisch? Ja, een Belgische award, want er is een speciale categorie voor Nederlandse podcasts: Prijs van Oranje.

Wil je ons steunen? 🙏❤️ Stem op ons!

Aigency
Aigency ontwerpt en ontwikkelt waardevolle, robuuste en betrouwbare Machine Learning-modellen.

Info Support
Info Support is de specialist in maatwerk software en leidend in kunstmatige intelligentie (AI).

Disclaimer: This post contains affiliate links. If you make a purchase, I may receive a commission at no extra cost to you.

Wil je toegang tot exclusieve toegang voor onze luisteraars? Schrijf je in voor de nieuwsbrief 'AI versterkt de Mens'

Contact AIToday Live


We zijn altijd op zoek naar nieuwe gasten die over AI willen spreken.

1
00:00:00,000 --> 00:00:07,000
Hoi, leuk dat je weer luistert naar een nieuwe aflevering van AIToday Live.

2
00:00:07,000 --> 00:00:11,000
Vandaag geen gast, we doen het helemaal zelf.

3
00:00:11,000 --> 00:00:14,000
Ik denk dat we een buitengewoon interessant onderwerp hebben.

4
00:00:14,000 --> 00:00:16,000
Best wel vernieuwend.

5
00:00:16,000 --> 00:00:18,000
Mijn naam Joop Snijder, CTO bij Aigency.

6
00:00:18,000 --> 00:00:22,000
Mijn naam Niels Naglé, Area Lead D3I bij Info Support.

7
00:00:22,000 --> 00:00:26,000
Ja Niels, we gaan het vandaag hebben over generatieve AI.

8
00:00:26,000 --> 00:00:31,000
Generatieve AI is natuurlijk hot, dus we blijven erover praten.

9
00:00:31,000 --> 00:00:36,000
Maar ik denk dat we dat vandaag eens even gaan doen op een speciaal onderwerp.

10
00:00:36,000 --> 00:00:44,000
En dat gaat over vertalen, maar vertalen van code, programmeercode.

11
00:00:44,000 --> 00:00:48,000
We hebben best wel heel veel gehad over het omzetten van teksten.

12
00:00:48,000 --> 00:00:53,000
Dus als je prompts hebt, dat die wordt omgezet van vraag naar antwoord.

13
00:00:53,000 --> 00:00:58,000
Of we hebben het natuurlijk heel vaak gehad over als je een heel artikel hebt, daar een samenvatting van maken.

14
00:00:58,000 --> 00:01:02,000
Daar zijn heel veel voorbeelden van.

15
00:01:02,000 --> 00:01:07,000
En ik denk dat ook steeds veel mensen het al vaker gebruiken, ook omzetten naar plaatjes.

16
00:01:07,000 --> 00:01:10,000
Dus ja, de vertaling van het één naar het volgende.

17
00:01:10,000 --> 00:01:11,000
Ja toch?

18
00:01:11,000 --> 00:01:12,000
Ja.

19
00:01:12,000 --> 00:01:18,000
En op het gebied van het schrijven van code kan dat namelijk ook heel erg helpen.

20
00:01:18,000 --> 00:01:27,000
En ik denk dat heel veel, nou heel veel, dat mensen die code schrijven of zelfs beginnen met het schrijven van code,

21
00:01:27,000 --> 00:01:34,000
nu hebben gemerkt dat als je modellen gebruikt zoals ChatGPT, maar dat kan ook met Google Gemini en met Anthropic,

22
00:01:34,000 --> 00:01:37,000
dat je kan vragen om code te schrijven.

23
00:01:37,000 --> 00:01:41,000
Dus dan ga je van prompt naar code.

24
00:01:41,000 --> 00:01:45,000
En die code, daarvan hoop je dan zeg maar dat die werkt.

25
00:01:45,000 --> 00:01:49,000
En die kopieer je dan naar een omgeving waarin je dat kan runnen.

26
00:01:49,000 --> 00:01:53,000
En als die dat niet doet, ga je terug en vraag je het nogmaals.

27
00:01:53,000 --> 00:01:59,000
En op deze manier zijn er best heel wat mensen die op deze manier programmeren nu.

28
00:01:59,000 --> 00:02:01,000
Of leren programmeren op deze manier.

29
00:02:01,000 --> 00:02:02,000
Ja.

30
00:02:02,000 --> 00:02:09,000
Maar er is nog een andere, denk ik een hele krachtige case, waar we het nog nooit over hebben gehad,

31
00:02:09,000 --> 00:02:11,000
die wij zelf in de praktijk ook hebben toegepast.

32
00:02:11,000 --> 00:02:16,000
En dat is wat nou als jij best wel oude code hebt,

33
00:02:16,000 --> 00:02:21,000
of code die nu zeg maar in een bepaalde taal is,

34
00:02:21,000 --> 00:02:26,000
maar die wil je naar een andere taal, van programmeertaal naar een andere programmeertaal zou willen hebben.

35
00:02:26,000 --> 00:02:32,000
Of dat je op een low-code platform zit, waar eigenlijk is dat…

36
00:02:32,000 --> 00:02:34,000
Limieten bereikt worden.

37
00:02:34,000 --> 00:02:36,000
Ja, waar limieten bereikt worden.

38
00:02:36,000 --> 00:02:39,000
Je wilt daarvan af, om welke reden dan ook.

39
00:02:39,000 --> 00:02:42,000
En je wilt dan ook naar volledige code.

40
00:02:42,000 --> 00:02:44,000
En dat is iets wat wij gedaan hebben.

41
00:02:44,000 --> 00:02:47,000
Goede ervaringen mee.

42
00:02:47,000 --> 00:02:49,000
En daar gaan we het vandaag over hebben.

43
00:02:49,000 --> 00:02:50,000
Zeker.

44
00:02:50,000 --> 00:02:51,000
Ja.

45
00:02:51,000 --> 00:02:53,000
Zal ik beginnen?

46
00:02:53,000 --> 00:02:54,000
Ja.

47
00:02:54,000 --> 00:03:04,000
Kijk, de case die we vandaag gaan bespreken, is die van low-code naar een moderne stack.

48
00:03:04,000 --> 00:03:07,000
En dat is toch even voor mensen die luisteren en niet weten wat low-code is.

49
00:03:07,000 --> 00:03:13,000
Low-code, wat je daar doet, is dat je visueel programmeert.

50
00:03:13,000 --> 00:03:18,000
Dus je hebt blokjes die een… Hoe zeg je dat eigenlijk?

51
00:03:18,000 --> 00:03:21,000
User interface bij elkaar klikken.

52
00:03:21,000 --> 00:03:24,000
Ja, maar die voeren dan eigenlijk taken uit.

53
00:03:24,000 --> 00:03:26,000
Het zijn kleine taken, het kunnen grotere taken zijn.

54
00:03:26,000 --> 00:03:28,000
En dat klik je in elkaar.

55
00:03:28,000 --> 00:03:30,000
Dat zijn een soort van Lego blokjes.

56
00:03:30,000 --> 00:03:34,000
Dus je hoeft daar niet of nauwelijks te programmeren.

57
00:03:34,000 --> 00:03:38,000
En kan je uiteindelijk toch een applicatie in elkaar krijgen.

58
00:03:38,000 --> 00:03:43,000
En dat kan een web-applicatie zijn, dat kan eigenlijk van alles en nog wat kan dat zijn.

59
00:03:43,000 --> 00:03:50,000
In dit geval wilden ze van die low-code af.

60
00:03:50,000 --> 00:03:56,000
En dat moest naar een volledige programmeertaal.

61
00:03:56,000 --> 00:04:00,000
Zowel qua… Dit waren webformulieren.

62
00:04:00,000 --> 00:04:02,000
Dus dan moest…

63
00:04:02,000 --> 00:04:07,000
De backend, de frontend moest allemaal omgezet gaan worden inderdaad.

64
00:04:07,000 --> 00:04:10,000
Zodat eigenlijk van het hoge abstractieniveau afgestapt wordt.

65
00:04:10,000 --> 00:04:16,000
Zodat je meer controle, meer flexibiliteit hebt om je eigen code aan te passen en te kunnen muteren.

66
00:04:16,000 --> 00:04:19,000
Iets wat in low-code platformen niet mogelijk is.

67
00:04:19,000 --> 00:04:22,000
Omdat daar is het Lego blokje, gewoon het Lego blokje.

68
00:04:22,000 --> 00:04:26,000
Pas je niet goed, dan heb je pech, dan heb je een ander Lego blokje nodig.

69
00:04:26,000 --> 00:04:28,000
Dus dat betekent ook dat je dingen veel beter kan testen.

70
00:04:28,000 --> 00:04:31,000
Dat alles haalbaarder wordt.

71
00:04:31,000 --> 00:04:35,000
Er waren legio redenen om dit te doen.

72
00:04:35,000 --> 00:04:40,000
En dat omzetten.

73
00:04:40,000 --> 00:04:42,000
We hebben het nu in deze case over low-code.

74
00:04:42,000 --> 00:04:45,000
Maar dat kan ook verouderde code zijn.

75
00:04:45,000 --> 00:04:49,000
Dus dat je van verouderde technologie naar nieuwe technologie wil.

76
00:04:49,000 --> 00:04:52,000
We hebben natuurlijk nog oude mainframe Cobol.

77
00:04:52,000 --> 00:04:53,000
Ik wou dat zeggen.

78
00:04:53,000 --> 00:04:55,000
Kennis loopt af bij veel mensen.

79
00:04:55,000 --> 00:04:56,000
Precies.

80
00:04:56,000 --> 00:05:01,000
En zeker systemen die ergens tussen de 10 en 15 jaar in productie staan.

81
00:05:01,000 --> 00:05:05,000
Daar is een soort van houtrot ontstaan.

82
00:05:05,000 --> 00:05:09,000
Dus daar werd je niet alleen de technologie verouderd.

83
00:05:09,000 --> 00:05:11,000
De manier waarop je dingen hebt aangepakt.

84
00:05:11,000 --> 00:05:13,000
Kennis is verdwenen.

85
00:05:13,000 --> 00:05:16,000
Niet alles is vaak even goed gedocumenteerd.

86
00:05:16,000 --> 00:05:20,000
Ze weten ook niet meer exact wat er nou in productie staat.

87
00:05:20,000 --> 00:05:26,000
Dus dat zijn allemaal startpunten voor hetzelfde verhaal wat ik vandaag dan vertel.

88
00:05:26,000 --> 00:05:38,000
Wat je dan wil doen is dat je die code in dit geval wil gaan omzetten naar nieuwe.

89
00:05:38,000 --> 00:05:44,000
Dat zou je kunnen doen door te zeggen van hier heb je een stuk programmeercode.

90
00:05:44,000 --> 00:05:47,000
Vertaal die voor mij.

91
00:05:47,000 --> 00:05:49,000
Dat zou mooi zijn toch?

92
00:05:49,000 --> 00:05:50,000
Als dat in een keer werkt zeker.

93
00:05:50,000 --> 00:05:51,000
Ja, dat doet het niet.

94
00:05:51,000 --> 00:05:52,000
Jammer.

95
00:05:52,000 --> 00:05:55,000
Voor een deel is dat logisch.

96
00:05:55,000 --> 00:05:58,000
Want dit zijn vaak hele grote bestanden.

97
00:05:58,000 --> 00:06:04,000
Je moet je bedenken dat één zo'n formulier best wel kon bestaan uit 50.000 regels.

98
00:06:04,000 --> 00:06:07,000
Dat zijn nog veel meer woorden.

99
00:06:07,000 --> 00:06:11,000
Dus de context die ChatGPT aan kan.

100
00:06:11,000 --> 00:06:14,000
Dat geheugen als je het zo zou mogen uitdrukken.

101
00:06:14,000 --> 00:06:19,000
Dat is niet groot genoeg om dat bestand überhaupt te bevatten.

102
00:06:19,000 --> 00:06:27,000
Ik geloof dat Gemini of zo straks met een 1 miljoen context aan tokens komt.

103
00:06:27,000 --> 00:06:29,000
Dus daar zou het in passen.

104
00:06:29,000 --> 00:06:31,000
Maar dan gaat het nog niet werken.

105
00:06:31,000 --> 00:06:35,000
Want wat je doet is dat het een veel te grote taak is om te zeggen van.

106
00:06:35,000 --> 00:06:40,000
Hier heb je een hele berg code waar van alles in zit.

107
00:06:40,000 --> 00:06:42,000
Aan bedrijfsregels.

108
00:06:42,000 --> 00:06:46,000
Als je dit hebt moet je dat gaan doen.

109
00:06:46,000 --> 00:06:49,000
Er zaten allerlei routingsdingen in.

110
00:06:49,000 --> 00:06:53,000
In sommige gevallen moest het naar het ene mailadres.

111
00:06:53,000 --> 00:06:54,000
Dan naar het andere mailadres.

112
00:06:54,000 --> 00:07:00,000
Je kan je voorstellen dat als wij dat zelf zouden moeten doen.

113
00:07:00,000 --> 00:07:01,000
Wat zou je dan doen?

114
00:07:01,000 --> 00:07:03,000
Kleine stukjes knippen.

115
00:07:03,000 --> 00:07:11,000
Dus als je dit in een heel groot, 1 megaprompt zou willen oplossen.

116
00:07:11,000 --> 00:07:12,000
Dan word het niet.

117
00:07:12,000 --> 00:07:15,000
Dan krijg je slechte code, slechte kwaliteit.

118
00:07:15,000 --> 00:07:17,000
Je krijgt 1 brei.

119
00:07:17,000 --> 00:07:22,000
En dan uiteindelijk heb je iets waar je nog zoveel tijd, geld en energie in moet stoppen.

120
00:07:22,000 --> 00:07:24,000
Dan had je het beter gewoon handmatig kunnen doen.

121
00:07:24,000 --> 00:07:26,000
Het zou een beetje zonde zijn.

122
00:07:26,000 --> 00:07:29,000
Dus wij hebben daar ook naar gekeken naar opknippen.

123
00:07:29,000 --> 00:07:32,000
Opknippen, kleine stukjes.

124
00:07:32,000 --> 00:07:40,000
En heel gericht kijken van welk deel kunnen we oplossen met programmeren.

125
00:07:40,000 --> 00:07:41,000
Scripting.

126
00:07:41,000 --> 00:07:43,000
Dat is gewoon ouderwets.

127
00:07:43,000 --> 00:07:45,000
Dat klinkt oud.

128
00:07:45,000 --> 00:07:48,000
Traditioneel zou ik moeten zeggen.

129
00:07:48,000 --> 00:07:50,000
Traditioneel software engineering.

130
00:07:50,000 --> 00:07:52,000
Regels toepassen.

131
00:07:52,000 --> 00:07:54,000
Als dit, dan dat.

132
00:07:55,000 --> 00:08:01,000
Daarnaast hebben we ook nog gekeken van welk deel wil je handmatig blijven doen.

133
00:08:01,000 --> 00:08:04,000
Dus je kan heel veel door de AI laten doen.

134
00:08:04,000 --> 00:08:09,000
Maar er blijft ook best wel heel veel over wat je handiger, handmatig kan doen.

135
00:08:09,000 --> 00:08:13,000
En een van de voorbeelden is dat er bijvoorbeeld bestanden uitkwamen.

136
00:08:13,000 --> 00:08:16,000
En die moeten dan in een bepaalde structuur worden gezet.

137
00:08:16,000 --> 00:08:19,000
Daar zou je de AI voor kunnen gebruiken.

138
00:08:19,000 --> 00:08:24,000
Maar dat zou zoveel tijd en geld kosten om dat te bouwen.

139
00:08:24,000 --> 00:08:29,000
Terwijl als je dat zelf even in een soort van workflow sleept.

140
00:08:29,000 --> 00:08:31,000
Dat is dat je iets eventjes op dezelfde plek zet.

141
00:08:31,000 --> 00:08:35,000
Dan hebben we het over een taak van 30 seconden.

142
00:08:35,000 --> 00:08:39,000
Dus laten we nou een taak van 30 seconden niet uitprogrammeren.

143
00:08:39,000 --> 00:08:41,000
Kans op fouten laag testen.

144
00:08:41,000 --> 00:08:44,000
Die je er bovenop moet zetten om te kijken of het goed blijft gaan.

145
00:08:44,000 --> 00:08:48,000
Er zit veel meer omheen om dat goed te reproduceren en testbaar te houden.

146
00:08:48,000 --> 00:08:50,000
Ja, daar zeg je wel iets heel goeds.

147
00:08:50,000 --> 00:08:55,000
Want wat je natuurlijk wel wil is als je iets van oud naar nieuw omzet.

148
00:08:55,000 --> 00:08:59,000
Dat je ook zeker weet dat nieuw doet wat oud deed.

149
00:08:59,000 --> 00:09:05,000
Dus wat je met de AI kan doen is ook testen laten maken.

150
00:09:05,000 --> 00:09:06,000
Dus dat hebben we ook gedaan.

151
00:09:06,000 --> 00:09:11,000
Dus we hebben testen laten maken die we geautomatiseerd konden draaien op oud.

152
00:09:11,000 --> 00:09:17,000
Nadat alles is omgezet moeten we dus diezelfde teksten kunnen we testen.

153
00:09:17,000 --> 00:09:20,000
Testen kunnen we houden tegen nieuw.

154
00:09:20,000 --> 00:09:27,000
En die moeten dus hetzelfde doen, hetzelfde reageren functioneel als oud.

155
00:09:27,000 --> 00:09:32,000
En daarmee bewijs je dat oud en nieuw, eigenlijk moet ik het andersom zeggen,

156
00:09:32,000 --> 00:09:34,000
dat nieuw hetzelfde doet als oud.

157
00:09:34,000 --> 00:09:38,000
En wat ook nog mogelijk is, en dat is echt heel cool,

158
00:09:38,000 --> 00:09:43,000
omdat je juist, dus je kan dingen van het een naar het ander omzetten, transformeren.

159
00:09:43,000 --> 00:09:44,000
Daar hebben we het constant over.

160
00:09:44,000 --> 00:09:49,000
We kunnen ook van code naar functionele documentatie.

161
00:09:49,000 --> 00:09:53,000
En het is niet de functionele documentatie exact,

162
00:09:53,000 --> 00:09:57,000
dat als je dat heel goed vanaf het begin zou beschrijven,

163
00:09:57,000 --> 00:10:04,000
maar wel op een niveau dat het dus voor niet-programmeurs goed leesbaar is,

164
00:10:04,000 --> 00:10:07,000
wat is de functionaliteit die wordt uitgevoerd.

165
00:10:07,000 --> 00:10:11,000
En wat we dus ook zagen, is als je dat laat zien,

166
00:10:11,000 --> 00:10:15,000
dat mensen zeiden van, "Hé, ja, maar dat is raar, dat klopt niet."

167
00:10:15,000 --> 00:10:19,000
Jawel, want zo staat het nu in productie, zo werkt het nu.

168
00:10:19,000 --> 00:10:23,000
Dus we vonden ook nog eens een keer functionele fouten.

169
00:10:23,000 --> 00:10:28,000
Het is niet alleen maar van het een naar het ander,

170
00:10:28,000 --> 00:10:30,000
maar je krijgt er ook nog eens heel veel bij.

171
00:10:30,000 --> 00:10:33,000
Dus je krijgt geautomatiseerde testen erbij, je krijgt documentatie erbij,

172
00:10:33,000 --> 00:10:36,000
waardoor je veel beter inzichten hebt in,

173
00:10:36,000 --> 00:10:40,000
wat doet dat systeem nou eigenlijk en hoe is dat gegroeid in al die jaren.

174
00:10:40,000 --> 00:10:43,000
Ja, want er zijn altijd wijzigingen over tijd inderdaad,

175
00:10:43,000 --> 00:10:45,000
die zich niet meer hebben gevat in de documentatie,

176
00:10:45,000 --> 00:10:48,000
maar wel in de implementatie en dat komt dan boven tafel.

177
00:10:48,000 --> 00:10:51,000
Iets wat we natuurlijk vaak zien als we software aan het bouwen zijn

178
00:10:51,000 --> 00:10:54,000
en aan het ombouwen zijn, dat je dat terugziet.

179
00:10:54,000 --> 00:10:55,000
Maar hiermee zou je dus kunnen versnellen,

180
00:10:55,000 --> 00:10:59,000
door eigenlijk al gewoon die generatie te doen van het oude systeem,

181
00:10:59,000 --> 00:11:03,000
functionele beschrijving, en op de achtergrond dus de nieuwe al te kunnen bouwen

182
00:11:03,000 --> 00:11:07,000
en de specificaties al te kunnen laten valideren door de gebruikers.

183
00:11:07,000 --> 00:11:10,000
Dus eigenlijk kan je hier ook een parallelle stroom gaan opzetten.

184
00:11:10,000 --> 00:11:17,000
Ja, als je bedoelt dat je die validatie dan op papier laat uitvoeren,

185
00:11:17,000 --> 00:11:21,000
je hebt dan nieuw en opnieuw ga je dan de functionele wijzigingen doen.

186
00:11:21,000 --> 00:11:24,000
Want dat vind ik zelf een hele belangrijke.

187
00:11:24,000 --> 00:11:26,000
Ook hier in het traject werd er ook wel over gesproken van,

188
00:11:26,000 --> 00:11:28,000
ja, maar kunnen we dat dan niet direct aanpassen?

189
00:11:28,000 --> 00:11:34,000
Ja, dat zou kunnen, maar dan ben je je testen van nieuw naar oud kwijt.

190
00:11:34,000 --> 00:11:40,000
Dus in mijn geval vind ik het logisch of veilig en robuust om te zeggen van,

191
00:11:40,000 --> 00:11:43,000
ja, maar je gaat van oud naar nieuw, dat heb je helemaal getest.

192
00:11:43,000 --> 00:11:47,000
En opnieuw, daar ga je je functionele wijzigingen op uitvoeren.

193
00:11:47,000 --> 00:11:48,000
Ja, ik ben er eens.

194
00:11:48,000 --> 00:11:53,000
En daar kan je ook dan je testen op aanpassen, je documentatie op aanpassen.

195
00:11:53,000 --> 00:11:55,000
Dus dat…

196
00:11:55,000 --> 00:11:58,000
Ja, jij zegt documentatie aanpassen, laten aanpassen.

197
00:11:58,000 --> 00:12:00,000
Laten aanpassen, ja zeker, zeker.

198
00:12:00,000 --> 00:12:05,000
Maar daar is het natuurlijk ook de grote winst om dat mede te genereren en aan te vullen met,

199
00:12:05,000 --> 00:12:10,000
ja, beslissingen die je hebt gemaakt om een bepaalde oplossing zo te maken zoals die nu is.

200
00:12:10,000 --> 00:12:14,000
Dat zal niet uitgegenereerd worden, dat zijn keuzes die we gewoon vanuit ons software,

201
00:12:14,000 --> 00:12:16,000
Craftsmanship gewoon maken.

202
00:12:16,000 --> 00:12:20,000
Die zal je nog wel zelf apart vast moeten leggen als aanvulling erop.

203
00:12:20,000 --> 00:12:21,000
Ja.

204
00:12:21,000 --> 00:12:27,000
En, nou ja, de hele grote vraag is natuurlijk, weet je, wat win je hiermee?

205
00:12:27,000 --> 00:12:30,000
Ja.

206
00:12:30,000 --> 00:12:37,000
Voor dit traject golden eigenlijk twee criteria.

207
00:12:37,000 --> 00:12:44,000
Dus namelijk, het was best wel een heel grote codebase die omgezet zou moeten worden.

208
00:12:44,000 --> 00:12:47,000
Dus de vraag is, A, hoe leuk is dat?

209
00:12:47,000 --> 00:12:51,000
Dus als je een aantal van dit soort applicaties hebt omgezet,

210
00:12:51,000 --> 00:12:55,000
ja, hoe leuk is dat om dat herhalend te blijven doen?

211
00:12:55,000 --> 00:12:59,000
En aan de andere kant had het ook gewoon een productiviteitsvraagstuk.

212
00:12:59,000 --> 00:13:06,000
Dus het kostte echt wel een hele forse investering voor deze ombouw.

213
00:13:06,000 --> 00:13:10,000
En die hebben wij terug weten te brengen tot 50% van de tijd.

214
00:13:10,000 --> 00:13:16,000
En dat is inclusief dus het bouwen van die AI-conversiepipeline,

215
00:13:16,000 --> 00:13:17,000
want dat is het eigenlijk geworden.

216
00:13:17,000 --> 00:13:24,000
Het is een pipeline geworden met allemaal stapjes, dingetjes, controles.

217
00:13:24,000 --> 00:13:30,000
Het is een hele workflow geworden om van het ene stukje code naar het andere stukje code te gaan,

218
00:13:30,000 --> 00:13:36,000
waarbij de AI regelmatig een uurtje of twee weg is.

219
00:13:36,000 --> 00:13:41,000
Je zou kunnen haast zeggen van je AI-developer is op dat moment gewoon druk bezig.

220
00:13:41,000 --> 00:13:47,000
En als die klaar is, moet er nog een review gedaan worden, zoals je dat zeg maar...

221
00:13:47,000 --> 00:13:48,000
- Review ook doet.

222
00:13:48,000 --> 00:13:51,000
Ja, toch? Als we nu aan het programmeren zijn en jij hebt iets gemaakt,

223
00:13:51,000 --> 00:13:58,000
voordat je het wil inchecken, voordat het echt toegevoegd wordt aan het systeem,

224
00:13:58,000 --> 00:14:00,000
kijk ik het na en andersom.

225
00:14:00,000 --> 00:14:04,000
Dus als ik iets heb gemaakt, kijk jij het na, zodat we proberen fouten eruit te halen.

226
00:14:04,000 --> 00:14:06,000
Dat gebeurt hier ook.

227
00:14:06,000 --> 00:14:13,000
De AI is een uurtje of twee lekker druk, is die bezig, is die aan het kloppen,

228
00:14:13,000 --> 00:14:15,000
code kloppen, zoals wij dat dan noemen.

229
00:14:15,000 --> 00:14:17,000
En dan doe je er een menselijke review over.

230
00:14:17,000 --> 00:14:23,000
Pas je soms ook nog dingen aan of je stuur je het een beetje bij.

231
00:14:23,000 --> 00:14:26,000
Dus je zegt van, ja, maar ik wil dat je dit in deze vorm doet.

232
00:14:26,000 --> 00:14:30,000
Dus er zitten wat stappen daarin.

233
00:14:30,000 --> 00:14:35,000
Een vraag die bij mij wel opkomt is, je noemt de rol AI-developer,

234
00:14:35,000 --> 00:14:37,000
die even aan het code kloppen gaat.

235
00:14:37,000 --> 00:14:39,000
Welke rollen waren hier nog meer bij betrokken?

236
00:14:39,000 --> 00:14:42,000
In het project zelf?

237
00:14:42,000 --> 00:14:43,000
In het project zelf, inderdaad.

238
00:14:43,000 --> 00:14:46,000
Om die pipeline te kunnen gaan maken, testen, valideren.

239
00:14:46,000 --> 00:14:51,000
Ja, uiteraard zeg maar aan de bouwkant,

240
00:14:51,000 --> 00:14:56,000
hadden we een data scientist en een software engineer samen.

241
00:14:56,000 --> 00:14:59,000
Samen hebben ze die hele pipeline gebouwd,

242
00:14:59,000 --> 00:15:03,000
zodat de één is heel goed in de AI en de aansturing

243
00:15:03,000 --> 00:15:07,000
en de beperkingen daarvan te begrijpen.

244
00:15:07,000 --> 00:15:09,000
En de softwarebouwer natuurlijk ook.

245
00:15:09,000 --> 00:15:13,000
En de stukjes script die je nodig hebt in die pipeline,

246
00:15:13,000 --> 00:15:17,000
maar ook heel goed beoordelen, wat is nou de kwaliteit van de code

247
00:15:17,000 --> 00:15:19,000
die wordt opgeleverd?

248
00:15:19,000 --> 00:15:21,000
En moeten we dan zaken gaan bijsturen,

249
00:15:21,000 --> 00:15:25,000
zodat de AI een veel betere developer wordt?

250
00:15:25,000 --> 00:15:31,000
En aan de klantkant is het eigenlijk niet anders dan ieder ander project.

251
00:15:31,000 --> 00:15:37,000
We hadden een business analyst, we hadden een product owner, management.

252
00:15:37,000 --> 00:15:42,000
Aan die kant is er ook, zeg maar, developers die ook wel wilden kijken

253
00:15:42,000 --> 00:15:46,000
van, ja, best wel, hoe moet ik het zeggen?

254
00:15:46,000 --> 00:15:47,000
Kritisch.

255
00:15:47,000 --> 00:15:50,000
Nou, laten we het heel positief benaderen, heel benieuwd.

256
00:15:50,000 --> 00:15:52,000
Dus heel benieuwd van, wat komt eruit?

257
00:15:52,000 --> 00:15:54,000
Is het kwalitatief wel goed genoeg?

258
00:15:54,000 --> 00:15:58,000
Past het in onze architectuur? Past het bij onze codestandaarden?

259
00:15:58,000 --> 00:16:00,000
Nou, soms was dat niet zo.

260
00:16:00,000 --> 00:16:02,000
Daar kan ik ook heel eerlijk over zijn.

261
00:16:02,000 --> 00:16:06,000
Je maakt bepaalde keuzes.

262
00:16:06,000 --> 00:16:10,000
En het mooie is dat je dat dan kan bij gaan sturen.

263
00:16:10,000 --> 00:16:16,000
Dus je kan je prompts gaan aanpassen, zodat die als een schrijfwijzer,

264
00:16:16,000 --> 00:16:20,000
dus als een codeerwijzer, kan zeggen van, ja, maar zo moet het eruit gaan zien.

265
00:16:20,000 --> 00:16:23,000
Net als dat jij marketingteksten hebt of andere teksten,

266
00:16:23,000 --> 00:16:27,000
waarvan je echt een schrijfwijzer hebt van, ja, zo moet het eruit zien.

267
00:16:27,000 --> 00:16:30,000
Dit is de opbouw, dit is de structuur, dit is de woordkeuze.

268
00:16:30,000 --> 00:16:34,000
Zo kan je dat aan de programmeerkant ook opgeven.

269
00:16:34,000 --> 00:16:37,000
Ja, dus dan moet je denken aan afkortingen, gebruik van classes,

270
00:16:37,000 --> 00:16:40,000
allemaal van dat soort zaken die je meeneemt.

271
00:16:40,000 --> 00:16:42,000
Zeker, wat voor type casing je gebruikt.

272
00:16:42,000 --> 00:16:47,000
Dus of je ieder woord met de hoofdletter schrijft of niet.

273
00:16:47,000 --> 00:16:52,000
Nou, dat soort keuzes kan je meegeven.

274
00:16:52,000 --> 00:16:56,000
En wat was de ervaring met hoe die modellen dat oppakten?

275
00:16:56,000 --> 00:17:00,000
Was dat moeilijk om zo te kneden naar dat soort formatten?

276
00:17:00,000 --> 00:17:03,000
Want er zijn natuurlijk ook gewoon software tools die die formatting

277
00:17:03,000 --> 00:17:06,000
voor je kunnen applyen, erop kunnen zetten achteraf.

278
00:17:06,000 --> 00:17:08,000
Ja, en wat bedoel je nou met formatting?

279
00:17:08,000 --> 00:17:11,000
Nou, de formatting, wat je zegt, begint overal met een hoofdletter.

280
00:17:11,000 --> 00:17:15,000
Als je dat meegeeft aan het taalmodel, is die er heel consequent in?

281
00:17:15,000 --> 00:17:17,000
Of wat is daar een beetje de ervaring mee?

282
00:17:17,000 --> 00:17:24,000
Ja, nee, als je dat op een goede manier doet, is het er daar heel consequent in.

283
00:17:24,000 --> 00:17:29,000
De allergrootste truc zat in het opdelen naar taken.

284
00:17:29,000 --> 00:17:33,000
Dus hoe maak je nou de taak klein genoeg,

285
00:17:33,000 --> 00:17:39,000
zonder het zover te verfijnen, dat je uiteindelijk het allemaal weer zelf zit te doen.

286
00:17:39,000 --> 00:17:44,000
Het vinden van die balans tussen hoe groot kan iets zijn,

287
00:17:44,000 --> 00:17:48,000
dat kon af en toe heel erg lastig zijn.

288
00:17:48,000 --> 00:17:53,000
En de balans in van waar programmeer je het zelf uit?

289
00:17:53,000 --> 00:17:56,000
Dus doe je zelf wat code parsing,

290
00:17:56,000 --> 00:18:01,000
zet je zelf zaken even om met een scriptje,

291
00:18:01,000 --> 00:18:04,000
vertaal je dingetjes, en wat doe je met de hand?

292
00:18:04,000 --> 00:18:10,000
Die afweging hadden we regelmatig even met het team bespreken.

293
00:18:10,000 --> 00:18:13,000
We moeten het volgende probleem oplossen.

294
00:18:13,000 --> 00:18:17,000
Waar zit het? AI, handmatig, software development.

295
00:18:17,000 --> 00:18:20,000
Ja, heldere aanpak.

296
00:18:20,000 --> 00:18:22,000
Ja, was een leuk traject.

297
00:18:22,000 --> 00:18:25,000
Ja, dat geloof ik inderdaad. Ik zie je ook stralen als je het erover hebt.

298
00:18:25,000 --> 00:18:29,000
Maar het is ook gewoon heel erg mooi om natuurlijk de resultaten te zien

299
00:18:29,000 --> 00:18:31,000
en die efficiënt slag die je ermee kan doen.

300
00:18:31,000 --> 00:18:33,000
En ook de quirks die waarschijnlijk naar boven komen.

301
00:18:33,000 --> 00:18:35,000
De eigenaardigheden van de modellen die je daartegen aankomt,

302
00:18:35,000 --> 00:18:39,000
waardoor je nog beter leert wanneer zet ik het een in, wanneer zet ik het ander in.

303
00:18:39,000 --> 00:18:44,000
Ja, want een van de grappige dingen is dat wij gebruikten de modellen

304
00:18:44,000 --> 00:18:46,000
die onder ChatGPT zitten.

305
00:18:46,000 --> 00:18:49,000
Dus GPT-4 hebben we gebruikt.

306
00:18:49,000 --> 00:18:52,000
En die heeft nogal de neiging om lui te zijn.

307
00:18:52,000 --> 00:18:57,000
Dus als je dan code aanbiedt, en dat kunnen dan meerdere functies zijn,

308
00:18:57,000 --> 00:18:59,000
en die moeten dan omgezet worden.

309
00:18:59,000 --> 00:19:02,000
Dan doet hij bijvoorbeeld de eerste twee.

310
00:19:02,000 --> 00:19:06,000
En dan krijg je de onhebbelijkheid, want ChatGPT kan best wel kwebbelen.

311
00:19:06,000 --> 00:19:07,000
Ja.

312
00:19:07,000 --> 00:19:12,000
Kwam er ook terug. Ja, en de overige functies op dezelfde manier.

313
00:19:12,000 --> 00:19:15,000
Doe je op dezelfde, zet je op dezelfde manier om.

314
00:19:15,000 --> 00:19:17,000
Succes.

315
00:19:17,000 --> 00:19:21,000
Succes, ja. Nee, dat zou je van je developer krijgen, weet je.

316
00:19:21,000 --> 00:19:22,000
Je weet nu hoe het moet.

317
00:19:22,000 --> 00:19:25,000
Je weet nu hoe het moet, zoek het lekker zelf uit.

318
00:19:25,000 --> 00:19:30,000
Dus met dat soort onhebbelijkheden, daar moet je dan wel mee omgaan.

319
00:19:30,000 --> 00:19:35,000
Soms had je ook wel, dat toch niet helemaal de structuur wordt omgezet.

320
00:19:35,000 --> 00:19:41,000
Je moet vooral zodanig prompten dat hij ophoudt met al dat geklets.

321
00:19:41,000 --> 00:19:45,000
Daar word je op dat stuk echt niet goed van.

322
00:19:45,000 --> 00:19:47,000
Dus als dat in je persoonlijke workflow zit, prima.

323
00:19:47,000 --> 00:19:50,000
Dan kopieer je gewoon dat stukje eruit wat je nodig hebt.

324
00:19:50,000 --> 00:19:55,000
Dan laat je dat begin en dat eind, al dat gedoe, laat je weg.

325
00:19:55,000 --> 00:19:58,000
In een geautomatiseerde workflow kan dat natuurlijk niet.

326
00:19:58,000 --> 00:20:04,000
Wil je dat niet, dan moet je gewoon zeggen van, alleen die code, alleen dit, alleen die test.

327
00:20:04,000 --> 00:20:07,000
Ophouden met uitleg.

328
00:20:07,000 --> 00:20:12,000
En dat was af en toe wel een beetje stevig doorprompten.

329
00:20:12,000 --> 00:20:15,000
Ja, even goed opvoeden van de AI-developer en die hoedanigheid.

330
00:20:15,000 --> 00:20:17,000
Zeker, zeker.

331
00:20:18,000 --> 00:20:21,000
Ik schoot een vraag er binnen, maar het schiet ook in één keer weer weg.

332
00:20:21,000 --> 00:20:23,000
Hartstikke leuk is dat altijd.

333
00:20:23,000 --> 00:20:27,000
Nee, ik weet hem echt niet meer.

334
00:20:27,000 --> 00:20:28,000
Geeft niet.

335
00:20:28,000 --> 00:20:32,000
Want het mooie was ook die testen.

336
00:20:32,000 --> 00:20:34,000
Dank je wel, daar ging het over inderdaad.

337
00:20:34,000 --> 00:20:36,000
Je drinkt maar weer, dan komt hij weer.

338
00:20:36,000 --> 00:20:37,000
Het ging over testen inderdaad.

339
00:20:37,000 --> 00:20:42,000
Wat ik me afvroeg is, je bent begonnen met de oude codebase om te willen zetten naar een nieuwe codebase.

340
00:20:42,000 --> 00:20:46,000
Waren de tests al aanwezig op de oude codebase?

341
00:20:46,000 --> 00:20:50,000
Of zijn die speciaal gecreëerd om te kunnen testen op de nieuwe codebase?

342
00:20:50,000 --> 00:20:52,000
Ja, die zijn speciaal gecreëerd.

343
00:20:52,000 --> 00:20:54,000
Dus er was geen enkele test.

344
00:20:54,000 --> 00:20:57,000
Dus op dit moment werd alles handmatig getest.

345
00:20:57,000 --> 00:21:06,000
Dus als er een wijziging plaatsvond, zat er een heel proces achter van handmatig testen, hopen dat je alles raakt.

346
00:21:06,000 --> 00:21:09,000
Dus we hebben juist die testen ook weer gegenereerd.

347
00:21:09,000 --> 00:21:12,000
Eigenlijk is een test ook weer een stukje code.

348
00:21:12,000 --> 00:21:16,000
Dus het is weer van code naar code, alleen op een wat andere manier.

349
00:21:16,000 --> 00:21:20,000
Dus dat ook meegenomen in de workflow.

350
00:21:20,000 --> 00:21:25,000
En er eerst voor gezorgd dat die testen goed draaiden op oud.

351
00:21:25,000 --> 00:21:30,000
Dat we weten van, ze werken, ze doen het, ze dekken alles.

352
00:21:30,000 --> 00:21:38,000
En vanaf dat moment kon je over en kon je ook iedere keer kijken van, hoe doet hij het nieuw?

353
00:21:38,000 --> 00:21:41,000
Moeten we misschien wat dingen aanpassen?

354
00:21:41,000 --> 00:21:45,000
En zo verfijn je uiteindelijk die hele workflow.

355
00:21:45,000 --> 00:21:52,000
Waardoor je op een gegeven moment een optimale workflow hebt om de rest er uiteindelijk ook doorheen te halen.

356
00:21:52,000 --> 00:21:58,000
Waar was je het meest in verrast bij de implementatie?

357
00:21:58,000 --> 00:22:01,000
Het meest in verrast? Ja, dat is een hele goeie.

358
00:22:01,000 --> 00:22:14,000
Misschien toch wel de mate waarin die functionele documentatie best wel menselijk leesbaar kregen.

359
00:22:14,000 --> 00:22:18,000
Dus je hebt daar een semi-formele taal voor, Gherkin.

360
00:22:18,000 --> 00:22:28,000
Maak je feature files en daar staat eigenlijk van, als ik dit uitvoer met deze data, dan verwacht ik uiteindelijk dit resultaat.

361
00:22:28,000 --> 00:22:34,000
Met deze input, ik doe deze actie, verwacht ik deze uitkomst.

362
00:22:34,000 --> 00:22:37,000
En dat is voor mensen heel goed leesbaar.

363
00:22:37,000 --> 00:22:42,000
Dat verbaast me misschien nog het meest. Dat dat er gewoon zo goed uitkomt.

364
00:22:42,000 --> 00:22:49,000
Als we het zelf van tevoren zouden schrijven, zou je het op een ander conceptueel niveau doen.

365
00:22:49,000 --> 00:22:51,000
Waardoor het nog beter begrijpbaar is.

366
00:22:51,000 --> 00:22:57,000
Maar ik vond van zulke technische code, waar helemaal niets over beschreven is.

367
00:22:57,000 --> 00:23:06,000
Dus echt alleen maar de business rules, hoe dat geprogrammeerd is, voor een business analist te lezen taal.

368
00:23:06,000 --> 00:23:09,000
Daar was ik me misschien wel het meest verrast over.

369
00:23:09,000 --> 00:23:18,000
Ik had ook wel verwacht dat de productiviteit die winst zou kunnen halen.

370
00:23:18,000 --> 00:23:27,000
Wij hadden gemikt op 25-30 procent. Dat we daar ruim boven kwamen, dat was ook een enorme verrassing.

371
00:23:27,000 --> 00:23:31,000
Dat wil niet zeggen dat dit voor alles geldt.

372
00:23:31,000 --> 00:23:37,000
Dat je altijd van code naar code, en je doet het op onze manier, dat je op die 50 tot misschien wel meer uitkomt.

373
00:23:37,000 --> 00:23:40,000
Maar dat verraste me behoorlijk.

374
00:23:40,000 --> 00:23:46,000
Dan heb je nog niet eens meegenomen in de factor dat, ook door dit vaker te doen, in verschillende contexten,

375
00:23:46,000 --> 00:23:50,000
voor verschillende redenen, verschillende implementaties, verschillende code naar code,

376
00:23:50,000 --> 00:23:52,000
dat je daar ook efficiënter in wordt.

377
00:23:52,000 --> 00:23:55,000
En hopelijk de modellen er ook beter in worden.

378
00:23:55,000 --> 00:23:58,000
Je weet nooit of het beter wordt in een nieuwe versie, dus dat zou je ook moeten testen.

379
00:23:58,000 --> 00:24:01,000
Daar zou je ook een efficiënte slag in dat werk weer kunnen bekomen.

380
00:24:01,000 --> 00:24:03,000
Want het is natuurlijk allemaal hartstikke nieuw.

381
00:24:03,000 --> 00:24:13,000
We hebben het voor ons gevoel lang over generatieve AI, maar we hebben het over november 2022,

382
00:24:13,000 --> 00:24:20,000
dat de GPT uitkwam, waarbij mensen zijn gaan nadenken over wat ze hier allemaal mee kunnen doen.

383
00:24:20,000 --> 00:24:30,000
En dat omzetten van code naar code, dat zijn maar heel weinig bedrijven die dit op dit moment op deze manier aan het doen zijn.

384
00:24:30,000 --> 00:24:37,000
Terwijl ik denk de nood gaat toenemen met de COBOL-kennis die afneemt en andere platformen steeds meer low-code oplossingen.

385
00:24:37,000 --> 00:24:45,000
Leuk zijn om mee te beginnen, maar nooit de actie hebben gepakt om door te pakken naar het omzetten naar een full code base voor flexibiliteit en doorgroei.

386
00:24:45,000 --> 00:24:49,000
Dat we daar ook tegen de limieten soms aanlopen, zie je steeds vaker gebeuren.

387
00:24:49,000 --> 00:24:53,000
Ja, en dat zijn nog vrij technische limieten.

388
00:24:53,000 --> 00:24:59,000
Dan hebben we nog natuurlijk de vergrijzing, de productiviteit moet omhoog als we dezelfde dingen willen blijven doen.

389
00:24:59,000 --> 00:25:05,000
En ja, we hebben in de IT natuurlijk al decennia lang tekorten.

390
00:25:05,000 --> 00:25:13,000
En dit komt er allemaal bij, dus je wil versnelling, verbetering, kwaliteitsverbetering.

391
00:25:13,000 --> 00:25:19,000
En ik denk dat dit een hele mooie aanpak is om dat voor elkaar te krijgen.

392
00:25:19,000 --> 00:25:21,000
Ja, zeker.

393
00:25:21,000 --> 00:25:23,000
Toch?

394
00:25:23,000 --> 00:25:24,000
Ja.

395
00:25:24,000 --> 00:25:28,000
Dus zeg maar even een resumé.

396
00:25:28,000 --> 00:25:31,000
Het is traject code naar code.

397
00:25:31,000 --> 00:25:40,000
Vooral eigenlijk van je hebt toch wel te maken heel veel in je bedrijf met of verouderde code of code ergens in een systeem zit.

398
00:25:40,000 --> 00:25:47,000
Misschien zit dat zelfs in je Visual Basic achter Excel.

399
00:25:47,000 --> 00:25:59,000
Ik bedoel, daar zit vaak ook nog heel veel code en je wil dat naar een professionele omgeving brengen, waarbij je beter kan testen, beter kan begrijpen wat er allemaal gebeurt en weer klaar zijn voor de toekomst.

400
00:25:59,000 --> 00:26:03,000
Daar kan generatieve AI je ontzettend bij helpen.

401
00:26:03,000 --> 00:26:05,000
Zeker, mooi om je af te sluiten Joop.

402
00:26:05,000 --> 00:26:07,000
Cool, dankjewel.

403
00:26:07,000 --> 00:26:13,000
Leuk dat je weer luistert naar een aflevering van AIToday Live.

404
00:26:13,000 --> 00:26:18,000
Wil je geen aflevering missen? Abonneer je dan via je favoriete podcast app.

405
00:26:18,000 --> 00:26:20,000
En tot de volgende keer.

406
00:26:20,000 --> 00:26:22,000
Tot de volgende keer.

407
00:26:22,000 --> 00:26:42,400
[Muziek]